У меня есть локальный DNS-сервер в моей сети, и я настроил несколько записей A Name для некоторых из моих внутренних сайтов (например, app1.domain.com, app2.domain.com), а DNS разрешается внутри и загружает сайты нормально.
Теперь у меня тоже есть домен godaddy, и я хочу разрешить внешний доступ для некоторых из этих сайтов. Я сделал те же записи A Name в godaddy и указал их на мой единственный IP-адрес в глобальной сети. Раньше я перенаправлял весь входящий трафик порта 80 на маршрутизаторе непосредственно на IP-адрес моего внутреннего веб-сервера в качестве специального решения, и оно работало нормально.
Теперь у меня есть второй веб-сервер, который мне нужно разместить на другом внутреннем сервере. Таким образом, для трафика порта 80 мне нужно отправить app1 на мой внутренний ip 10.1.1.23 и app2 на 10.1.1.24, когда клиенты пытаются подключиться извне.
Поэтому я модифицировал свой маршрутизатор для перенаправления трафика с внешнего порта 80 на 10.1.1.11 (мой внутренний DNS-сервер) на порт 53 для tcp / udp. DNS-сервер - это компьютер с Windows Server 2008 R2. Похоже, что исключения брандмауэра также настроены для разрешения входящего трафика на порт 53, но каждый раз, когда я пытаюсь получить доступ к сайту с внешнего клиента, ничего не загружается. Я знаю, что godaddy пересылает трафик в мою глобальную сеть, потому что я могу выполнить трассировку, которая разрешает мой IP-адрес в глобальной сети.
Что я делаю не так?
В своем ответе я сделаю несколько предположений. Поправьте меня если я ошибаюсь.
У вас есть только 1 общедоступный IP-адрес, и он назначен интерфейсу WAN вашего маршрутизатора.
Ваш маршрутизатор представляет собой модель SOHO, которой можно назначить только один IP-адрес на его WAN-интерфейсе. то есть, если вы приобрели дополнительные статические IP-адреса у своего интернет-провайдера, вам необходимо заменить маршрутизатор, чтобы справиться с этим.
У меня есть локальный DNS-сервер в моей сети, и я настроил несколько записей A Name для некоторых из моих внутренних сайтов (например, app1.domain.com, app2.domain.com), а DNS разрешается внутри и загружает сайты нормально.
Я предполагаю, что ваши внутренние DNS-серверы настроены на возвращение частных адресов RFC1918 серверов. Это делает зоны DNS на этом сервере бесполезными для людей за пределами вашей локальной сети. Если они получают ответ 10.1.1.x через Интернет, он отбрасывается.
Теперь у меня тоже есть домен godaddy, и я хочу разрешить внешний доступ для некоторых из этих сайтов. Я сделал те же записи A Name в godaddy и указал их на мой единственный IP-адрес в глобальной сети. Раньше я перенаправлял весь входящий трафик порта 80 на маршрутизаторе непосредственно на IP-адрес моего внутреннего веб-сервера в качестве специального решения, и оно работало нормально.
Хорошо. Это будет работать, но, как вы видели, не очень масштабируемо.
Теперь у меня есть второй веб-сервер, который мне нужно открыть на другом внутреннем сервере. Итак, для трафика порта 80 мне нужно отправить app1 на мой внутренний ip 10.1.1.23 и app2 на 10.1.1.24, когда клиенты пытаются подключиться извне.
Поэтому я модифицировал свой маршрутизатор для перенаправления трафика с внешнего порта 80 на 10.1.1.11 (мой внутренний DNS-сервер) на порт 53 для tcp / udp. DNS-сервер - это компьютер с Windows Server 2008 R2. Похоже, что исключения брандмауэра также настроены для разрешения входящего трафика на порт 53, но каждый раз, когда я пытаюсь получить доступ к сайту с внешнего клиента, ничего не загружается. Я знаю, что godaddy пересылает трафик в мою WAN, потому что я могу выполнить трассировку, которая разрешает мой IP-адрес WAN.
Вот здесь-то странно, мой друг. Действительно, очень странно. Вы перенаправляете HTTP-запрос на DNS-сервер и также переводите порт. Это все равно, что взять письмо, написанное на английском языке, адресованное кому-то в США, взять его из почтового отделения и бросить в почтовый ящик кого-то в Мьянме и задуматься, почему вы еще не получили ответа.
HTTP и DNS - это совершенно разные протоколы. HTTP - это то, что обслуживает ваши веб-страницы. DNS преобразует полное имя в IP-адрес. Они не взаимозаменяемы. DNS-сервер взглянет на HTTP-пакеты, которые вы ему пересылаете, и скажет: «К черту все это, не знаю, что там написано», а затем просто выбросит их в корзину, как ваш новый приятель по переписке. Мьянма.
Хорошо, теперь, когда вы знаете, в чем ошиблись, что вы можете с этим поделать?
Получите дополнительный общедоступный IP-адрес и назначьте его своему маршрутизатору. Это предполагает, что ваш маршрутизатор может справиться с этим. Если нет, возможно, вам придется купить новый или использовать вариант №2. Если у вас есть другой IP-адрес и маршрутизатор, который может его обрабатывать, вы просто настраиваете Go Daddy на использование второго IP-адреса для вашего второго сервера, а затем перенаправляете запросы порта 80 с нового IP-адреса на новый сервер, так же, как вы это делали с первым. IP и ваш первый сервер. Это потребует от вас иметь один общедоступный IP-адрес для каждого нового сервера, который вы добавляете.
Настройте обратный прокси-сервер и укажите все на свой один IP-адрес. Для этого вы можете использовать такие вещи, как apache mod_proxy или IIS7 ARR. Вы бы сказали DNS Go Daddy отправлять весь трафик для все ваших внешних сайтов на один IP-адрес, который у вас уже есть. На вашем маршрутизаторе вы перенаправляете запросы через порт 80 на новый сервер, который действует как обратный прокси. Этот сервер будет настроен так, чтобы действовать как «брокер» для входящих соединений. Вы должны настроить этот сервер для пересылки всех запросов к нему на правильный сервер в зависимости от запрашиваемого имени хоста.