DNS-хосты с одним и тем же IP

#networking #dns #nat #hosts

#сеть #dns #nat #хосты

Вопрос:

Недавно я купил доменное имя на www.active-domain.com Я использую его для своей домашней сети, поэтому мы говорим о NAT и динамическом IP. Поскольку мой IP-адрес динамический, я не могу создать делегирование для использования моего собственного DNS-сервера. активный домен действует как DNS-сервер, поэтому я могу создавать только: A, CNAME, перенаправление URL, URL-фрейм и текстовые записи.

Тем не менее, вот мой вопрос: поскольку я использую NAT, возможно ли создать несколько хостов с одним и тем же IP?

Пример:
Я хочу, чтобы srv1.mydomain.com укажите на 192.168.0.101 в моей сети.
Я хочу, чтобы srv2.mydomain.com укажите на 192.168.0.102 в моей сети.
Но снаружи оба указывают на (пример)74.0.0.1

Вкратце:
srv1.mydomain.com -> 74.0.0.1 -> 192.168.0.101
srv2.mydomain.com -> 74.0.0.1 -> 192.168.0.102

Спасибо.

Ответ №1:

В любом случае внешний DNS для yourhost.example.com и anotherhost.example.net будет указывать на внешний адрес брандмауэра ( IN A 74.0.0.1 здесь) или на имя хоста брандмауэра (например, IN CNAME yourfirewall.example.org. ).

Однако обратите внимание, что DNS (преобразование доменного имени в IP-адрес) выполняется отдельно от обработки соединения и маршрутизации. Что это значит:

  • клиентский компьютер, столкнувшись с именем DNS-хоста, попытается найти его — например, запрашивает свой локальный DNS-сервер: «кто yourhost.example.com «; DNS-сервер отвечает «74.0.0.1».
  • что касается стека IP, это последний раз, когда используется имя хоста; с этого момента клиент работает только с адресом.
  • клиент открывает соединение с адресом и портом; однако входящие пакеты помечены только «для компьютера с адресом 74.0.0.1», без какого-либо указания «какое DNS-имя использовалось для получения этого адреса, если таковое имелось».

Некоторые протоколы (такие как HTTP) могут использовать имя хоста в части данных пакета (с HTTP это Host: заголовок), но не каждый протокол делает это. Это возможности:

  • Если у вас есть два сервера, которые будут работать на разных портах, на самом деле это не проблема: я отсылаю вас к вопросам и ответам по переадресации портов у суперпользователя.

  • Если вам нужно запустить два сервера на одном и том же порту, это становится затруднительным, если не невозможным: возможно, удастся выполнить обратный прокси-трафик (и отделить данные для одного сервера от данных для другого); если рассматриваемый протокол этого не делает (например, SMTP или SSH), вы в значительной степени SOL.

    • В частности, если вы намерены направлять трафик на два разных HTTP-сервера (оба на порту 80), вам потребуется запустить какой-нибудь обратный прокси-сервер на вашем брандмауэре ( 74.0.0.1 ). В Apache простейшая конфигурация может выглядеть примерно так:
 <VirtualHost *:80>  
        ServerName yourhost.example.com  
        ProxyPass / http://192.168.0.101/  
        ProxyPassReverse / http://192.168.0.101/  
</VirtualHost>  
<VirtualHost *:80>  
        ServerName anotherhost.example.net  
        ProxyPass / http://192.168.0.102/  
        ProxyPassReverse / http://192.168.0.102/  
</VirtualHost>
  

Комментарии:

1. Нет, это не будет HTTP.

2. @Matthieu: В таком случае это может быть немного сложнее. Смотрите мою правку.

3. Итак, какой протокол это будет? Если протокол не содержит доменное имя, используемое для получения адреса для 74.0.0.1, у вас нет возможности узнать, какое доменное имя предназначалось.

4. В случае обратного прокси-сервера существует ли рекомендуемый шаблон для использования в AWS?