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


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


9
2018-04-27 23:43


Источник




Ответы:


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

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

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

192.168.0.15  example.com

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

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


4
2018-05-04 13:05





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

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


10
2018-04-28 01:23



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


На этот вопрос есть простой ответ. NAT мешает.

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

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


3
2018-06-16 18:16





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

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

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


2
2018-06-16 17:56