Доступ к внутреннему IP с использованием публичного IP


38

У меня есть модем DSL с публичным IP-адресом ( 201.206.x.x), и у меня есть веб-сервер во внутренней сети ( 192.168.0.50).

Я настроил модем для пересылки запросов на порт 80 на мой веб-сервер, поэтому, если я получаю доступ 201.206.x.xизвне моей сети, он показывает мою веб-страницу, то же самое происходит, если я получаю доступ192.168.0.50 с компьютера в моей сети.

Теперь проблема заключается в том, что когда я пытаюсь получить доступ 201.206.x.xиз своей внутренней сети, браузер пытается подключиться к конфигурации модема DSL вместо перенаправления моего запроса на мой веб-сервер.

Какие настройки мне нужно изменить в модеме, чтобы настроить это перенаправление?


Вариант проблемы: у меня есть несколько (2) хост-серверов, и я настроил DNS (BIND9) для внутренних запросов. Как мне сопоставить (с другим Hosting Server) внешние запросы (с публичным IP) на основе имени хоста?
Кунал Б.

Ответы:


20

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

Я подозреваю, что ваша конкретная проблема заключается в том, что вы хотели бы получить доступ к веб-сайту через имя хоста DNS. Вы можете справиться с этим, используя DNS «split-horizon», поэтому он обращает внимание на то, откуда поступает запрос, и отвечает соответствующим образом: если запрос поступает из вашей сети, он раздает 192.168.0.50 запросам, поступающим от вашего сеть и публичный IP для всех остальных.

Любое из этих предложений может быть реализовано на любом хосте за пределами вашей сети, например (бесплатный) микроэкземпляр Amazon EC2.


Спасибо, хотя я думаю, что я буду придерживаться редактирования файла HOSTS, так как это в основном персональный сайт, который я использую для тестирования сайтов, над которыми я работаю. ПК даже не работает 24/7.

3
Я решил эту проблему в собственной домашней сети, добавив запись A с тем же именем, что и имя моего внешнего dyndns, на моем собственном DNS-сервере (также работающем в моей домашней сети). Запись A указывает на правильное местоположение в моей домашней сети, как и запись с обратным PTR. Но, конечно, не у всех есть собственный домашний DNS ...
LawrenceC

14

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

Предполагая, что у вас есть следующие настройки:

  1. Публичный IP: 201.206.x.y
  2. Частный IP: 192.168.0.50
  3. Переадресация портов для всех 80 (и 443, если вы используете SSL) на IP 201.206.x.y192.168.0.50

Затем вы вводите следующее в своем браузере, находясь во внутренней сети:

http://www.yourwebsite.com

и ошибка происходит. Итак, решение: взломайте ваш файл hosts.

В Windows перейдите к C:\windows\system32\drivers\etc\hosts (обратите внимание, что в этом файле нет расширения). В Linux файл находится в /etc/hosts.

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

Добавьте это в ваш файл hosts:

192.168.0.50 www.yourwebsite.com

Затем перезапустите браузер , введите URL и Viola! Работает. Таким образом, это означает, что ваш браузер не использует DNS для разрешения вашего домена по IP. Вместо этого мы переопределяем это и говорим: Браузер, просто перейдите на мой внутренний IP-адрес для этого доменного имени, вместо того, чтобы запрашивать IP-адрес в DNS .

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

Другая идея заключается в том, чтобы иметь внутренний прокси-сервер (для всего веб-серфинга и т. Д.), А затем взломать файл hosts на прокси-сервере. Это означает, что ваш браузер скажет « Прокси», не могли бы вы получить мне ресурс,http://www.mywebsite.com а прокси сказал « Конечно», и, поскольку мне сказали игнорировать DNS для этого домена, я просто дам IP, который был жестко закодирован в мой файл hosts .


Да, у меня действительно было это прежде, чем я отправил, я только хотел иметь возможность получить доступ к нему через фактический IP, но я думаю, что могу жить с этим, так как мой модем не имеет отражения NAT (как предложено @MaQleod).

3
Как насчет ноутбука или смартфона, который часто получает доступ к одному и тому же сайту через внутреннюю или внешнюю сеть?
ДЕРЕВО

@ ДЕРЕВО ты можешь, пожалуйста, развлечься. Я не совсем понял ваш вопрос.
Pure.Krome

У меня очень похожая настройка, за исключением того, что я использую доменные имена. Поэтому из-за пределов сети мой домен преобразуется в мой внешний IP, а изнутри - во внутренний IP. У меня есть ноутбуки и смартфоны, которые часто получают доступ изнутри и снаружи, поэтому взлом файла hosts не сработает. То, что я сделал, в основном то, что предлагает ваш (Pure.Krome) другой ответ, только вместо того, чтобы использовать внешний сервер, я просто говорю DHCP-серверу на маршрутизаторе, что нужно добавить внутренний DNS-сервер. В основном это работает, но есть раздражающие лаги при переключении сетей до того, как все решится.
ДЕРЕВО

9

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


1
NAT отражение. Я думаю, это то, что я искал. К сожалению, мой модем не имеет этого. Благодарность!

Что делать, если ваш модем не поддерживает петлю NAT?
PrimitiveNom

2

Я мог бы помочь вам лучше, если бы вы могли дать мне марку и модель вашего модема ...

Но что здесь происходит, так это то, что обычно страница конфигурации маршрутизатора или модема должна появляться только при посещении их внутреннего IP (192.168.0.1)

Но здесь, похоже, происходит то, что он идентифицирует входящий запрос (201.206.xx), так как он приходит изнутри, поэтому решает дать вам страницу конфигурации вместо обычного маршрута к вашему веб-серверу

Теперь, если вы используете модем потребительского уровня, вы, вероятно, не сможете изменить это (извините)

Но, возможно, вы можете: Попробуйте и посмотрите, есть ли настройки «прослушивания» на вашей странице конфигурации администратора

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


2

Возможно проблема в том, что удаленное администрирование разрешено.


2

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

route add [public IP] mask 255.255.255.255 [the server's local IP]

Чтобы добавить постоянный маршрут, добавьте -p параметр к вышеуказанной команде.

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

Вы должны убедиться, что локальный IP-адрес сервера является статическим.


Почему сервер знает свой публичный IP-адрес?
G-Man говорит «Восстановить Монику»

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

0

Имея эту же проблему. Мне удалось это исправить, добавив имя хоста DNS в список сопоставления хостов DNS моего маршрутизатора. Я нашел эти настройки в списке расширенных опций моего роутера.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.