URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 23453
[ Назад ]

Исходное сообщение
"SSH через NAT"

Отправлено David , 26-Ноя-02 16:10 
Ситуация такая: есть шлюз в интернет с FreeBSD 4.7 для локальной сети с виндовыми компами. Работа с инетом через NAT.
Я настроил natd c ipfw. В правилах ipfw стоит диверт и allow all from any to any (так что в файерволе тут вряд ли дело).
После настройки всё вроде работает нормально, инет для локалки есть, но...

Проблема: когда я попытался соединиться с внешним ssh-сервером (где-то в инете), работая на виндовой тачке исползуя виндовый ssh-клиент, то ничего не вышло, говорит что тачка недоступна. Попробовал соединиться со шлюза - всё работает. Пробовал соединиться с другими серверами - ситуация такая же.

Я почти уверен, что дело в NAT. Я что-то слышал про проблемы с FTP через NAT, но про SSH - впервые сталкиваюсь.

Подскажите, плиз, как правильно настроить natd, чтобы всё работало?
Заранее спасибо.


Содержание

Сообщения в этом обсуждении
"RE: SSH через NAT"
Отправлено LinaS , 26-Ноя-02 16:36 
>Подскажите, плиз, как правильно настроить natd, чтобы всё работало?
>Заранее спасибо.

скорее всего не в НАТ дело... SSH через НАТ прекрасно работает.
хоть ты и говоришь, что на файрволле все открыто, а все же покажи :)
ipfw show



"RE: SSH через NAT"
Отправлено Nikolaev D. , 26-Ноя-02 18:05 
telnet remoutehost 22 соединяется ?

"RE: SSH через NAT"
Отправлено David , 27-Ноя-02 02:50 
>telnet remoutehost 22 соединяется ?
нет, обрывается по тайм-ауту.


"RE: SSH через NAT"
Отправлено David , 27-Ноя-02 02:45 
>покажи :)
>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

(первые два правила написаны на всякий случай, т.к. консольный доступ к шлюзу затруднён)


"RE: SSH через NAT"
Отправлено LinaS , 27-Ноя-02 10:02 
>>покажи :)
>>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)
и все должно заработать...


"RE: SSH через NAT"
Отправлено David , 27-Ноя-02 10:14 
>теперь смотри: разрешаешь ssh 100 и 101 правилом из сетки с частным
>адресом, а дивертить кто будет?
>в 100 и 101 правиле замени allow на skipto 1001 (т.е. на
>правило с divert)
>и все должно заработать...

точно! забыл, что после соответствия allow следующие правила не просматриваются.
Спасибо большое, всё, очевидно :), заработало.


"RE: SSH через NAT"
Отправлено Alexey Leonchik , 27-Ноя-02 04:52 
Вообще, SSH немного странноватый протокол :) Например, на локальной машине, выбирает порты из пула ПРИВИЛЕГИРОВАННЫХ т.е. 0-65535 Обрати внимание на это - может поможет ...

С уважением Алексей Леончик


"RE: SSH через NAT"
Отправлено David , 27-Ноя-02 10:05 
>Вообще, SSH немного странноватый протокол :) Например, на локальной машине, выбирает порты
>из пула ПРИВИЛЕГИРОВАННЫХ т.е. 0-65535 Обрати внимание на это - может
>поможет ...

Ну ты как минимум ошибся: 0-65535 - это не привелегированные, а вообще все возможные порты. Привелегированные - это 0-1023, если я не ошибаюсь. Но я не понял: ты хочешь сказать, что протокол требует в качестве клиентского порта привелегированный, а NAT при трансляции ему этого не даёт? Честно - не поверю, пока сам не увижу. Ну а если это вдруг так, то как мне с этим бороться?


"RE: SSH через NAT"
Отправлено LinaS , 27-Ноя-02 10:22 
>>Вообще, SSH немного странноватый протокол :) Например, на локальной машине, выбирает порты
>>из пула ПРИВИЛЕГИРОВАННЫХ т.е. 0-65535 Обрати внимание на это - может
>>поможет ...
>
>Ну ты как минимум ошибся: 0-65535 - это не привелегированные, а вообще
>все возможные порты. Привелегированные - это 0-1023, если я не ошибаюсь.
>Но я не понял: ты хочешь сказать, что протокол требует в
>качестве клиентского порта привелегированный, а NAT при трансляции ему этого не
>даёт? Честно - не поверю, пока сам не увижу. Ну а
>если это вдруг так, то как мне с этим бороться?

насчет привилегированных (0-1023) ты не ошибся.
насчет требований в качесвте клиентского порта привилегированного:
есть такой параметр в ssh_config, называется UsePrivilegedPort, по умолчанию - "no". Он вроде нужен только если авторизация через RhostAuthentication или RhostRSAAuthentication и по-моему ужо нигде не используется... и то, насколько помню, там вроде порты использовались (клиентские) с 1020 по 1023 на это дело (вот тут могу ошибаться)

так что смотри выше и попробуй, как я написала...


"RE: SSH через NAT"
Отправлено lavr , 27-Ноя-02 10:30 
>>Вообще, 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]~ >