
С тех пор, как я сменил интернет-провайдера, текущий маршрутизатор (ADB P-RG A4202N) не позволяет мне получить доступ к моему веб-серверу из моей локальной сети, используя мой удаленный IP или хост no-ip - он перенаправляет меня на страницу конфигурации маршрутизатора. Не только мой серверный ПК, но и все другие устройства, подключенные к той же локальной сети, не могут получить доступ к моему веб-сайту, используя удаленный IP (внутренний IP работает нормально).
Однако если я захожу на свою веб-страницу с удаленного хоста — все работает нормально.
Как это исправить? Я хочу использовать свой удаленный IP/хост при посещении моего веб-сайта даже из моей локальной сети. На данный момент я добавил 127.0.0.1 myremoteip
правило в файл hosts на моем основном ПК, но это обходной путь, который я не хочу сохранять.
Мой веб-сервер работает на Win7, брандмауэр полностью отключен для тестирования. Переадресация портов работает.
решение1
Я предполагаю, что это за NAT-соединением. В этом случае вам нужно включитьотражение NATчтобы разрешить внутренний трафик на внешний IP-адрес, в который преобразуется ваш сайт. Большинство маршрутизаторов не имеют этой функции по умолчанию, а многие потребительские брандмауэры даже не поддерживают ее в своей заводской прошивке. Без этой функции пакеты из локальной сети на ваш адрес глобальной сети не будут подчиняться правилам NAT, а будут фильтроваться устройством.
Я мельком взглянул наруководство для вашего маршрутизатора, но не увидел никаких упоминаний об этой функции. Это может означать, что она не поддерживается и требуется альтернативное устройство.
В таких сценариях довольно часто вместо этого настраиваютразделение DNSв вашей внутренней сети для разрешения другого IP-адреса для сайта, что позволяет вам напрямую взаимодействовать с машиной без необходимости прохождения трафика через брандмауэр. Это также устраняет любую зависимость от наличия соединения для доступа к сайту для работы внутри, что не обеспечивается подходом отражения NAT, если для разрешения имени в DNS должен использоваться публичный сервер имен. Подход с раздельным DNS полезен, если у вас есть локальный разрешающий сервер имен, который вы можете настроить, но подход с файлом HOSTS
работает так же хорошо для одной машины.
решение2
Кажется, это так:
Автоконфигурация маршрутизатора создала правило перенаправления только для внешних интерфейсов. Вы пытаетесь подключиться к внешнему IP маршрутизатора. Пакет появляется на его локальном интерфейсе, направленном на внешний IP. Маршрутизатор видит, что целевой IP принадлежит ему, он видит, что у него открыт порт 80 (с сайта конфигурации маршрутизатора), поэтому он передает пакет на свой собственный веб-сервер.
Разделение DNS могло бы быть лучшим способом, но если это невозможно, попробуйте это.
Существует очень малая вероятность того, что отключение веб-интерфейса маршрутизатора или подключение его к другому порту решит эту проблему.
Или настройте маршрутизатор на dnat-соединения (с локального интерфейса на внешний IP) с вашим локальным веб-сервером. Затем, чтобы ваш веб-сервер не отвечал напрямую локальному клиенту, перенаправьте исходящие соединения (из локальной сети на порт локальной сети 80) на любой поддельный адрес (скажем, 1.2.3.4). Таким образом, веб-сервер будет получать соединения с 1.2.3.4 и отвечать через маршрутизатор, а маршрутизатор вернет IP к исходному. Не знаю, поддерживает ли ваш маршрутизатор все необходимые функции.
решение3
У меня была та же проблема, я исправил ее, отредактировав файл hosts следующим образом
192.168.1.100 www.yourdomain.com yourdomain.alias1 your domain.alias2
измените IP-адрес на IP-адрес локальной сети вашего сервера. Примечание: это позволит вам получить доступ к вашему веб-сайту с того же сервера, и вы не сможете получить к нему доступ с другого компьютера в той же сети. Если у вас более одного веб-сайта, добавьте ту же строку с вашим доменным именем.