Порт SSH фильтруется на машине только из локальной сети при использовании явного IP-адреса

Чтобы описать ситуацию, мне нужно определить три машины. В локальной сети у меня есть машина (LAPTOP) и машина (SERVER), подключенные через WAN и LAN к маршрутизатору соответственно. Третья машина - это внешний vps (VPS).

Я пытаюсь подключиться по SSH к СЕРВЕРУ с НОУТБУКА, используя явный IP-адрес. Для этого я настроил серверы openssh (все машины работают под Ubuntu), прослушивая порт 22. - SSH с VPS на СЕРВЕР - SSH с НОУТБУКА на СЕРВЕР с использованием локального имени хоста, внутреннего по отношению к локальной сети

Что не работает: - SSH с НОУТБУКА на СЕРВЕР с использованием явного IP-адреса.

Чтобы попробовать и отладить, я запустил nmap, чтобы увидеть, фильтруется ли порт. Я выполнил следующую команду как на VPS, так и на LAPTOP

nmap -sS -p 22 xx.xx.xx.xx

, где x обозначает буквальный внешний IP-адрес маршрутизатора локальной сети. Результат будет следующим:

VPS: 22 / tcp open ssh
НОУТБУК: 22 / tcp filter ssh

Просто чтобы дважды проверить, использую ли я локальное имя хоста из LAPTOP, порт открыт, как и должно быть. Почему порт фильтруется при использовании SSH с LAPTOP при использовании явного внешнего IP-адреса? Мой маршрутизатор фильтрует исходящий запрос?

2
задан 31 December 2016 в 12:55
1 ответ

Ваша проблема заключается в том, что ваш маршрутизатор, вероятно, применяет правила переадресации портов (DNAT цепочка в iptables) перед NAT (SNAT цепочка в iptables).

Этот пост Stackexchange post подробно объясняет проблему и показывает вам, как подтвердить ее с помощью tcpdump. В основном, вы должны увидеть, что вы отправляете ваш SYN пакет на внешний IP, но получаете SYN/ACK с внутреннего IP SERVER.

Edit: Как это исправить: Не подключайтесь к внешнему IP из внутренней сети. Используйте внутренний IP-адрес SERVER непосредственно.

.
1
ответ дан 3 December 2019 в 12:37

Теги

Похожие вопросы