У меня странная проблема с переадресацией портов. Я попытался открыть свой порт 22 для внешней сети. Я был в состоянии получить к нему доступ, пока я не в локальной сети. Я могу получить к нему доступ из своего офиса, например. Но из локальной сети я могу получить доступ к порту с помощью локального IP-адреса, но не могу получить доступ к порту с помощью внешнего IP-адреса. Это как если бы маршрутизатор блокировал обратную связь. Я проверил все настройки маршрутизатора, отключил все, что связано с брандмауэром / фильтрацией. Любые идеи?
Существует очень простой ответ на этот вопрос. NAT мешает.
Вы пытаетесь поговорить с публичным IP, но ответы приходят с внутреннего IP. Ваш компьютер не может заставить их работать вместе. Решение состоит в том, чтобы использовать Внутренний IP, когда вы находитесь за маршрутизатором. Я работаю над этой проблемой на своих ноутбуках, используя разные строки подключения ssh в зависимости от того, где я нахожусь.
источник
Из того, что я понимаю из запуска маршрутизатора OpenBSD с NAT, Спифф прав в своем ответе: проблема, которую вы испытываете, вызвана тем, что шлюз NAT не поддерживает то, что вы пытаетесь сделать.
Ваша рабочая станция отправляет пакеты с исходным IP-адресом внутреннего адреса (скажем, 10.0.0.2), но адрес назначения является вашим внешним IP-адресом. Когда пакеты поступают на ваш (SSH?) Сервер через порт 22, сервер отвечает на вашу рабочую станцию напрямую, и NAT не происходит; теперь, когда ваша рабочая станция получает ответ от 10.0.0.3, когда она ожидала ответа от вашего внешнего адреса, она отбрасывает пакеты.
Это кажется тривиальной проблемой, но ее можно решить, обновив файл HOSTS на вашей рабочей станции, добавив внутренний DNS-сервер (или отредактировав записи DNS-сервера), или создав правило NAT для обработки внутренних -> внешних -> внутренних движение.
источник