Ситуация такая: есть шлюз в интернет с FreeBSD 4.7 для локальной сети с виндовыми компами. Работа с инетом через NAT.
Я настроил natd c ipfw. В правилах ipfw стоит диверт и allow all from any to any (так что в файерволе тут вряд ли дело).
После настройки всё вроде работает нормально, инет для локалки есть, но...Проблема: когда я попытался соединиться с внешним ssh-сервером (где-то в инете), работая на виндовой тачке исползуя виндовый ssh-клиент, то ничего не вышло, говорит что тачка недоступна. Попробовал соединиться со шлюза - всё работает. Пробовал соединиться с другими серверами - ситуация такая же.
Я почти уверен, что дело в NAT. Я что-то слышал про проблемы с FTP через NAT, но про SSH - впервые сталкиваюсь.
Подскажите, плиз, как правильно настроить natd, чтобы всё работало?
Заранее спасибо.
>Подскажите, плиз, как правильно настроить natd, чтобы всё работало?
>Заранее спасибо.скорее всего не в НАТ дело... SSH через НАТ прекрасно работает.
хоть ты и говоришь, что на файрволле все открыто, а все же покажи :)
ipfw show
telnet remoutehost 22 соединяется ?
>telnet remoutehost 22 соединяется ?
нет, обрывается по тайм-ауту.
>покажи :)
>ipfw show00100 27 1944 allow tcp from 192.168.0.0/24 to any 22
00101 18 1584 allow tcp from any 22 to 192.168.0.0/24
01001 18 1030 divert 8668 ip from any to any via ed0
<тут куча каунтеров>
60000 36 2060 allow ip from any to any
65535 0 0 deny ip from any to any(первые два правила написаны на всякий случай, т.к. консольный доступ к шлюзу затруднён)
>>покажи :)
>>ipfw show
>
>00100 27 1944 allow tcp from 192.168.0.0/24 to any 22
>00101 18 1584 allow tcp from any 22 to 192.168.0.0/24
>01001 18 1030 divert 8668 ip from any to any via ed0
>
><тут куча каунтеров>
>60000 36 2060 allow ip from any to any
>65535 0 0 deny ip from any to
>any
>
>(первые два правила написаны на всякий случай, т.к. консольный доступ к шлюзу
>затруднён)
теперь смотри: разрешаешь ssh 100 и 101 правилом из сетки с частным адресом, а дивертить кто будет?
в 100 и 101 правиле замени allow на skipto 1001 (т.е. на правило с divert)
и все должно заработать...
>теперь смотри: разрешаешь ssh 100 и 101 правилом из сетки с частным
>адресом, а дивертить кто будет?
>в 100 и 101 правиле замени allow на skipto 1001 (т.е. на
>правило с divert)
>и все должно заработать...точно! забыл, что после соответствия allow следующие правила не просматриваются.
Спасибо большое, всё, очевидно :), заработало.
Вообще, SSH немного странноватый протокол :) Например, на локальной машине, выбирает порты из пула ПРИВИЛЕГИРОВАННЫХ т.е. 0-65535 Обрати внимание на это - может поможет ...С уважением Алексей Леончик
>Вообще, SSH немного странноватый протокол :) Например, на локальной машине, выбирает порты
>из пула ПРИВИЛЕГИРОВАННЫХ т.е. 0-65535 Обрати внимание на это - может
>поможет ...Ну ты как минимум ошибся: 0-65535 - это не привелегированные, а вообще все возможные порты. Привелегированные - это 0-1023, если я не ошибаюсь. Но я не понял: ты хочешь сказать, что протокол требует в качестве клиентского порта привелегированный, а NAT при трансляции ему этого не даёт? Честно - не поверю, пока сам не увижу. Ну а если это вдруг так, то как мне с этим бороться?
>>Вообще, SSH немного странноватый протокол :) Например, на локальной машине, выбирает порты
>>из пула ПРИВИЛЕГИРОВАННЫХ т.е. 0-65535 Обрати внимание на это - может
>>поможет ...
>
>Ну ты как минимум ошибся: 0-65535 - это не привелегированные, а вообще
>все возможные порты. Привелегированные - это 0-1023, если я не ошибаюсь.
>Но я не понял: ты хочешь сказать, что протокол требует в
>качестве клиентского порта привелегированный, а NAT при трансляции ему этого не
>даёт? Честно - не поверю, пока сам не увижу. Ну а
>если это вдруг так, то как мне с этим бороться?насчет привилегированных (0-1023) ты не ошибся.
насчет требований в качесвте клиентского порта привилегированного:
есть такой параметр в ssh_config, называется UsePrivilegedPort, по умолчанию - "no". Он вроде нужен только если авторизация через RhostAuthentication или RhostRSAAuthentication и по-моему ужо нигде не используется... и то, насколько помню, там вроде порты использовались (клиентские) с 1020 по 1023 на это дело (вот тут могу ошибаться)так что смотри выше и попробуй, как я написала...
>>Вообще, SSH немного странноватый протокол :) Например, на локальной машине, выбирает порты
>>из пула ПРИВИЛЕГИРОВАННЫХ т.е. 0-65535 Обрати внимание на это - может
>>поможет ...
>
>Ну ты как минимум ошибся: 0-65535 - это не привелегированные, а вообще
>все возможные порты. Привелегированные - это 0-1023, если я не ошибаюсь.
>Но я не понял: ты хочешь сказать, что протокол требует в
>качестве клиентского порта привелегированный, а NAT при трансляции ему этого не
>даёт? Честно - не поверю, пока сам не увижу. Ну аhosts.equiv/.rhosts(RHosts авторизация) (SSH Protocol-1)
>если это вдруг так, то как мне с этим бороться?
ssh -P (использования SSH Protocol-2)
man ssh
при возможности запуск sshd на двух портах, например:[unix1]~ > grep Port /etc/ssh/sshd_config
Port 22
Port 2022
[unix1]~ >