У меня есть маршрутизатор с внешним общедоступным статическим IP-адресом, а за маршрутизатором у меня есть веб-сервер со статическим IP-адресом (внутренний адрес).

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

Мне нужен способ доступа к веб-серверу с одинаковым адресом \ URL изнутри и снаружи сети

1 ответ1

0

Как предлагается в комментариях к вашему вопросу, у вас есть несколько вариантов:

  • Посмотрите, поддерживает ли ваш маршрутизатор NAT Hairpinning (также называемый NAT Loopback или NAT Reflection для @DavidPostill) и нужно ли его включать (для @AFH).

  • Если ваш роутер не поддерживает закрепление, купите новый, который поддерживает. Эта функция встречается нечасто в современных маршрутизаторах потребительского уровня, но вам, вероятно, захочется провести небольшое исследование, прежде чем совершать новые покупки.

  • Может быть возможно обновить маршрутизатор с помощью встроенного программного обеспечения на базе Linux, такого как Tomato, DD-WRT или OpenWRT, которое может разрешить закрепление (но это, вероятно, очень техническое усилие).

  • Как рекомендует @SpiderPig, вы можете настроить свой собственный частный DNS-сервер во внутренней сети. Этот маршрут немного более технический (и ненужный, если можно активировать закрепление), но, вероятно, является более безопасным из двух технических решений.

Частные требования DNS

Несмотря на то, что для разных конфигураций сети существуют разные шаги, принципы обхода отсутствия закрепления в последнем решении одинаковы:

  • Настройте внешнюю версию своего домена на DNS-сервер, который в противном случае напрямую не предоставляет услуги для вашей внутренней версии этого домена (вероятно, DNS предоставляется вашим регистратором или сторонними службами, такими как Namecheap FreeDNS).

  • Настройте отдельный DNS-сервер (например, ISC BIND) для своей внутренней сети, который обрабатывает ваш домен локально. То есть создайте запись для своего домена на этом сервере и укажите ее в направлении правильного IP-адреса внутреннего веб-сервера. Затем ваши внутренние компьютеры могут использовать этот локальный DNS-сервер для разрешения домена.

Эта настройка работает по той причине, что не внутренние запросы проходят через одного (внешнего) поставщика DNS (который имеет ваш общедоступный IP-адрес), в то время как внутренние запросы проходят через секунду (то есть локальный сервер DNS с вашим частным IP-адресом).

Вероятно, стоит упомянуть, что помимо "обычных" доменов, эта опция также, вероятно, будет работать для многих поставщиков "Динамического DNS" (где поставщик автоматически удовлетворяет первому требованию).


Обратите внимание, что Namecheap FreeDNS и BIND в настоящее время бесплатны и, следовательно, очень рентабельны.


Основы с BIND

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

Что касается второго требования (настройки локальной сети), я написал довольно подробное объяснение основ работы BIND на Windows с локальным доменом некоторое время назад.

Что касается выбора того, какой компьютер использовать в качестве локального DNS-сервера, единственное реальное требование состоит в том, чтобы он был постоянно включен (как это потребуется для разрешения домена). Помимо этого условия, вы можете выбрать любой компьютер в сети, который вам нравится (даже сам веб-сервер).

Ответ Примечания

В моем ответе, связанном выше, определенно есть несколько мест, которые вы можете игнорировать (в основном это материал WAMP). В противном случае подробные настройки - это базовые настройки, которые вам необходимы локально для вашего домена. Для вашей ситуации необходимо изменить несколько вещей:

  1. Замените свой собственный (внешний) домен примером домена "free.goodies".

  2. Убедитесь, что любые другие элементы соответствуют вашим настройкам (например, пути установки, IP-адреса, имена файлов, секретный ключ rndc и т.д.)

  3. Обязательно удалите комментарий для строки "forwarders" в «named.conf» (т.е. удалите хэш #):

          forwarders { 8.8.8.8; 8.8.4.4; };
    

Обратите внимание, что последний пункт абсолютно необходим, чтобы ваша локальная сеть могла связываться с нелокальными доменами (т. Е. С остальной частью Интернета, кроме вашего домена). Определенные IP-адреса указаны как есть (они являются публичными DNS-серверами Google), но вы также можете заменить любые другие, которые вам нравятся (в том числе и у вашего интернет-провайдера).

Вам по-прежнему необходимо настроить локальные компьютеры и маршрутизатор на использование локального DNS-сервера (как подробно описано в конце связанного ответа).

Linux Notes

Если вы используете Linux, вы, конечно, можете установить файлы с веб-сайта ISC BIND. Однако, в качестве альтернативы, многие дистрибутивы Linux поставляются с уже установленным или доступным BIND через их соответствующие репозитории.

Что касается локального DNS-сервера, существует множество хороших сетевых учебников для разных дистрибутивов. Но принцип тот же - настройте локальный DNS-сервер для доступа к вашему домену полностью из локальной сети (без необходимости подключения к Интернету).

Предостережения

  • Успешный доступ к вашему домену локально не всегда означает, что он будет доступен извне. Вам всегда нужно будет проверять внешний доступ в сети, которая не использует ваш маршрутизатор (например, ваш телефон подключен через свой тарифный план).

  • Существуют некоторые потенциальные риски, связанные с работой DNS-сервера и, в частности, с эмуляцией доменов с TLD, такими как .com или .net. Несмотря на то, что это возможно (как описано здесь), вы можете рассмотреть возможность исследования любых потенциальных ловушек.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .