Невозможно получить доступ к внешнему сервису из локальной сети

11

У меня странная проблема с переадресацией портов. Я попытался открыть свой порт 22 для внешней сети. Я был в состоянии получить к нему доступ, пока я не в локальной сети. Я могу получить к нему доступ из своего офиса, например. Но из локальной сети я могу получить доступ к порту с помощью локального IP-адреса, но не могу получить доступ к порту с помощью внешнего IP-адреса. Это как если бы маршрутизатор блокировал обратную связь. Я проверил все настройки маршрутизатора, отключил все, что связано с брандмауэром / фильтрацией. Любые идеи?

erotsppa
источник

Ответы:

5

Предполагая, что Spiff верен, и ваш маршрутизатор не может обработать переадресацию портов на внешний ip изнутри сети, есть небольшая работа вокруг (и это действительно так);

Вы можете отредактировать файл hosts, который можно найти в / etc / hosts в большинстве unix-систем и в C: \ Windows \ system32 \ drivers \ etc \ в Windows.

если вы добавите

192.168.0.15  example.com

в этом файле ваш компьютер будет переходить на ip, указанный при попытке доступа к example.com. Конечно, вам придется делать это на каждом компьютере, который вы хотите использовать в сети.

Вы можете проверить статью в Википедии для получения более подробной информации о том, где ее найти: https://en.wikipedia.org/wiki/Hosts_file

Терье
источник
13

Учитывая, что вы упомянули переадресацию портов, я предполагаю, что ваш домашний шлюз действует как NAT - или, точнее, NAPT - шлюз. То, что вы пытаетесь сделать, называется «шпилька NAT» или «NAT шпилька для волос», в связи с тем, как буквальная шпилька для волос удваивается обратно на себя (тот же самый намек используется термином «поворот шпильки» для резкого изгиба, где дорога удваивается сама по себе).

Некоторые шлюзы NAT являются дерьмом и не поддерживают закрепление. Возможно, настало время изучить ваши варианты обновления.

Spiff
источник
Это довольно новый маршрутизатор, поэтому я сомневаюсь, что это проблема.
erotsppa
6
«Новое» не означает «высокое качество». В любой момент времени на рынке всегда много дерьма.
Spiff
И этот комментарий остается в силе восемь лет спустя!
Tim_Stewart
@erotsppa - Как говорит Tim_Stewart, «верно 8 лет спустя» (2018) ... все зависит от стоимости и того, что требуется для реализации решения, от спроса на такое решение. Ваш типичный «домашний» модем / маршрутизатор не нуждается в такой функциональности ... однако у бизнеса будут очень разные требования (например, персоналу, работающему на площадке и за ее пределами, не нужно менять настройки, чтобы получить их, скажем, электронная почта (если они используют предварительный почтовый сервер), работающая, когда они работают в офисе, работают вне офиса и т. д. Устройства бизнес-класса часто имеют более высокую производительность и обладают такими возможностями
Kinnectus
3

Существует очень простой ответ на этот вопрос. NAT мешает.

  1. Ваш компьютер открывает соединение с [ExternalIP]
  2. Ваш маршрутизатор перенаправляет это соединение на [SSHInternalIP]. Ваш SSH-сервер видит соединение от [YourInternalIP].
  3. Ваш SSH-сервер отправляет свои пакеты на [YourInternalIP].
  4. Ваш компьютер видит странный пакет, исходящий с IP-адреса, с которым он никогда не общался, и отбрасывает его.
  5. Соединение с TCP / 22 не удается, потому что трехстороннее рукопожатие TCP никогда не завершается.

Вы пытаетесь поговорить с публичным IP, но ответы приходят с внутреннего IP. Ваш компьютер не может заставить их работать вместе. Решение состоит в том, чтобы использовать Внутренний IP, когда вы находитесь за маршрутизатором. Я работаю над этой проблемой на своих ноутбуках, используя разные строки подключения ssh в зависимости от того, где я нахожусь.

SysAdmin1138
источник
2

Из того, что я понимаю из запуска маршрутизатора OpenBSD с NAT, Спифф прав в своем ответе: проблема, которую вы испытываете, вызвана тем, что шлюз NAT не поддерживает то, что вы пытаетесь сделать.

Ваша рабочая станция отправляет пакеты с исходным IP-адресом внутреннего адреса (скажем, 10.0.0.2), но адрес назначения является вашим внешним IP-адресом. Когда пакеты поступают на ваш (SSH?) Сервер через порт 22, сервер отвечает на вашу рабочую станцию ​​напрямую, и NAT не происходит; теперь, когда ваша рабочая станция получает ответ от 10.0.0.3, когда она ожидала ответа от вашего внешнего адреса, она отбрасывает пакеты.

Это кажется тривиальной проблемой, но ее можно решить, обновив файл HOSTS на вашей рабочей станции, добавив внутренний DNS-сервер (или отредактировав записи DNS-сервера), или создав правило NAT для обработки внутренних -> внешних -> внутренних движение.

ItsOnlyOneLineOfCode
источник