Как я могу пересылать запросы на свой собственный IP-адрес на локальный IP-адрес в моей сети (возможно, используя named)?

1

Моя настройка

У меня в подвале работает сервер Linux. В настоящее время мой маршрутизатор ищет этот сервер для поиска DNS, поэтому я могу использовать named, чтобы подделать несколько доменных имен, чтобы указать на локальный адрес моего локального сервера 192.168.0.111. Это прекрасно работает.

Я также использую Apache и PHP на этом сервере и перенаправил порт 80 на моем маршрутизаторе на этот компьютер, поэтому мой публичный IP-адрес xx.xxx.x.xxотправляется на подвальный сервер.

Это отличная разработка для меня, потому что я могу разрабатывать веб-сайты в своей локальной сети и размещать их на многочисленных устройствах с *.mylocal.netадресом. Я также могу быстро поделиться веб-сайтом с общедоступным IP-адресом с другими, которые находятся за пределами моей сети.

У меня есть статический IP, так что это еще проще.

Проблема

Некоторые приложения должны иметь абсолютный URL. Мой поддельный DNS не работает вне моей сети, равно как и мой внутренний IP-адрес.

Мне нужно иметь доступ к сайтам с того же IP-адреса, к которому они доступны публично, и это мой публичный IP-адрес: xx.xxx.x.xx


По какой-то причине я не могу получить доступ к своему общедоступному IP-адресу из своей сети.

Общедоступный IP-адрес моего маршрутизатора xx.xxx.x.xx, и когда я нажимаю xx.xxx.x.xxвне своей сети, я вижу именно то, что я хочу - мой веб-сайт разработки. Но когда я попал xx.xxx.x.xxизнутри моей сети, время соединения истекло.


Я предполагаю , что мой провайдер имеет брандмауэр , который блокирует запросы от xx.xxx.x.xxдо , xx.xxx.x.xxгде происхождение и назначение такого же IP (или , может быть , это невозможно в любой сети?)

Итак, как я могу настроить свою сеть для пересылки внутреннего запроса на мой общедоступный IP-адрес на локальный IP-адрес моего подвального сервера?

Я хотел бы сделать это на локальном DNS-сервере, который я настроил, или на своем маршрутизаторе, чтобы изменение можно было применить ко всем устройствам в моей сети, а не только к серверу подвалов или к планшету / ноутбуку с Windows и т. Д. По отдельности.

tmsimont
источник
1
Вам нужен маршрутизатор, который поддерживает маршрутизацию «шпилька». Смотрите здесь: serverfault.com/questions/55611/…
Ƭᴇcʜιᴇ007
1
@ techie007 нет, он этого не делает. Это способ, но, учитывая, что у него есть локальный DNS-сервер, он может перенаправить внутренний трафик локально, не нанося вреда внешнему трафику. (как обычно это настройка)
LPChip
@LPChip Способ, которым я читаю, OP запрашивает доступ к нему по его внешнему IP-адресу, а не по имени хоста. Если бы он спросил о доступе к локальному серверу, используя внешнее имя хоста / домена, я бы указал на 20 других вопросов, где люди задавали это. ;)
Ƭᴇcʜιᴇ007

Ответы:

2

Это нормально, чтобы случиться. Проблема не в брандмауэре на уровне провайдера, а просто в вашем роутере. Когда вы указываете на адрес из вашей локальной сети на общедоступный IP-адрес внутри вашей локальной сети, происходит следующее:

Your PC-> Your Router-> Internet-> Your Router-> Your other PC.

Проблема заключается в том, что когда соединение с Интернетом затем перенаправляется обратно на ваш маршрутизатор, ваш маршрутизатор сбивается с толку, потому что соединение уже идет от вашего маршрутизатора, и поэтому оно не работает. Единственный способ добиться этой цели - сделать так, чтобы общедоступный адрес указывал на вашу локальную сеть из insideвашей сети, чтобы она никогда не покидала вашу локальную сеть.

Учитывая, что у вас уже есть DNS-сервер на вашем linux-сервере, добавьте туда свой домен mylocal.net и все дочерние домены и укажите его локальный IP-адрес 192.168.0.111 и убедитесь, что действительная учетная запись mylocal.net действительно работает. DNS для внешнего мира.

Вот пример того, что произойдет:

Предположим, вы настроили test.mylocal.net, чтобы он указывал на ваш публичный IP-адрес с именем 12.34.56.78.

Теперь из вашей локальной сети pinging test.mylocal.net ответит на 12.34.56.78.

На вашем DNS-сервере Linux вы добавляете test.mylocal.net и указываете его на 192.168.0.111.

Когда вы находитесь в своей сети и вводите test.mylocal.net в своем браузере, происходит следующее:

  • Браузер: установлен ли локальный хост с test.mylocal.net? Нет.
  • Браузер, перенаправьте запрос на локальный DNS-сервер.
  • Локальный DNS-сервер - это ваш Linux-сервер Linux: установлен ли test.mylocal.net? Да, вернуть 192.168.0.111
  • Браузер теперь подключается к вашему веб-серверу и показывает страницу.

Из-за пределов сети:

  • Браузер: установлен ли локальный хост с test.mylocal.net? Нет.
  • Браузер, перенаправьте запрос на локальный DNS-сервер.
  • Локальный DNS-сервер - это чей-то маршрутизатор или DNS-сервер.
  • Локальный DNS-сервер не имеет определенной записи для test.mylocal.net, Возвращает Нет.
  • Локальный DNS-сервер спрашивает интернет-DNS-сервер, что это за IP.
  • DNS-сервер Интернета получил ваш test.mylocal.net с обновлением и возвращает общедоступный IP-адрес.
  • Браузер делает запрос на ваш публичный IP.
  • Браузер подключается к вашему роутеру.
  • Маршрутизатор направляет запрос на ваш сервер Linux.
  • Сервер Linux обслуживает веб-страницу.
  • Браузер показывает веб-страницу.
LPChip
источник
это, безусловно, сработает, но я надеялся добиться этого без публичной записи DNS. Я действительно не хочу регистрировать какой-либо фактический публичный DNS на мой IP. Можно ли использовать мой маршрутизатор или DNS-сервер Linux для пересылки запросов на мой общедоступный IP-адрес из моей сети на локальный IP-адрес?
tmsimont
Вы можете отредактировать файл локальных хостов так, чтобы он указывал на IP-адрес вашей локальной сети для чего-нибудь * .mylocal.net. Это обеспечит возможность просмотра вашего общедоступного веб-сайта по DNS, а не по IP-адресу.
LPChip
это тоже сработало бы, но моя проблема в том, что я пытаюсь поделиться только своим публичным IP-адресом с кем-то за пределами моей сети (без доменного имени). Затем я хочу использовать тот же общедоступный IP-адрес для внутреннего использования ... Я надеялся, что смогу использовать DNS-сервер для пересылки фактического IP-запроса, но это не имело бы большого смысла, так как это, вероятно, даже не входит в уравнение, если запрос для IP, а не доменное имя, верно?
tmsimont
1
Да, это будет работать только в том случае, если ваш маршрутизатор поддерживает маршрутизацию шпильки, как это предложено techie007. Обратите внимание, что это не так, как в реальной жизни, и если вы хотите учиться на этом, лучше учиться правильно. Если только один человек хочет использовать один и тот же IP-адрес, я бы предложил использовать VPN и использовать internal IPвместо него.
LPChip
хорошо, спасибо - да, я знаю, что это не по себе, но я просто не хочу устанавливать здесь публичный сервер. я просто хочу поделиться предварительным просмотром сайта разработки с несколькими людьми в другом штате. хороший звонок на VPN. я взгляну на эту
штуку с
-1

Привет Пожалуйста, попробуйте отредактировать файл хоста и следуйте инструкциям.

  • Перейдите в -> C: \ WINDOWS \ System32 \ drivers \ etc \ hosts
  • Щелкните правой кнопкой мыши файл hosts, выберите «Свойства» и снимите флажок «Только для чтения».
  • Затем нажмите ОК.

2) Теперь вы можете редактировать файл hosts:

Вам может потребоваться учетная запись администратора для редактирования файла хостов. - Откройте Блокнот (Vista / 7, Запуск от имени администратора) - Теперь нажмите «Файл», а затем «Открыть». - Теперь введите имя файла (скопируйте / вставьте все это): C: \ WINDOWS \ System32 \ drivers \ etc \ hosts и нажмите «Открыть»

  • Теперь добавьте эти строки в конец файла hosts:

127.0.0.1 ваш публичный IP или DNS

Спасибо..

Каннан Рамамиртам
источник
Это не работает Файл hosts просто контролирует разрешение DNS; он не управляет маршрутизацией, и поэтому не влияет на то, куда отправляются пакеты на IP-адрес (когда вы переходите от имени домена к IP-адресу, файл hosts не имеет значения).
2015 года