Как настроить DNSmasq для решения адреса, всегда предоставляющего текущий публичный IP-адрес в определенной сети

У меня есть HTTP-сервер (Apache), настроенный и запущенный на машине в моей локальной сети. Я хочу, чтобы веб-сайт работал на нем, чтобы быть доступным со всех компьютеров, подключенных к локальной сети, через определенный URL (например, www.mywebsite.mylan).

Я использую DNSmasq как dns-сервер (но я совершенно новичок в нем). Серверная машина запускает Os X 10.9.

Я видел, что для разрешения определенного адреса в конфигурации DNSmasq требуется следующая строка:

address=/www.mywebsite.mylan/127.0.0.1

Я хочу знать, можно ли что-то сделать следующим образом:

address=/www.mywebsite.mylan/self_en0

для разрешения URL- en0, используя общедоступный IP-адрес локальной сети в определенной сети (en0), поскольку сервер DNS и HTTP-сервер работают на одном компьютере, а IP-адрес динамически назначается сервером DHCP маршрутизатора.

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

1 ответ

  • серверы имен не разрешают "URL-адреса". Они разрешают имена хостов. URL-адрес представляет собой концепцию веб-сервера, которая может содержать имя хоста. Некоторые части URL-адреса, с которыми не работает сервер имен (URI, спецификации каталога/файла, номера портов, символы для разделения этих компонентов URL-адреса)
  • запись A (то, что вы имитируете с помощью директивы dnsmasq address = config) должна иметь IP-адрес как значение, а не имя интерфейса.
  • независимо от того, работают ли сервер имен и веб-сервер на одном компьютере или на разных компьютерах, не имеет значения.
  • использование общедоступного адреса веб-сервера может работать или не работать. это зависит от нескольких факторов: маршрутизации, брандмауэра, конфигурации сервера (привязка интерфейса)

Теперь для вашего решения: если, как вы говорите, адрес вашего веб-сервера назначается динамически, возможно, даже тем же самым dnsmasq, который вы используете в качестве сервера имен, dnsmasq может создавать разрешаемое имя при запросе аренды DHCP и связывает назначенный ip-адрес с ним. Какое имя добавлено под ваш контроль: клиент DHCP на веб-сервере может сообщить DHCP-серверу (dnsmasq), какое имя ему нравится связать с назначенным IP-адресом. Вы также можете исправить имя в конфигурации dnsmasq для этого конкретного клиента. Теперь, когда есть имя, которое может быть разрешено, у вас есть опция, снова через конфигурацию dnsmasq, ввести псевдоним для него (я думаю, что dnsmasq config на самом деле называет этот "псевдоним" - он имитирует запись CNAME). Но может быть предпочтительнее избегать этого, сразу же после того, как разрешимое имя будет установлено на нужное имя.

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

Но вы можете просто подумать о том, чтобы сообщить dnsmasq (его компоненту DHCP-сервера) назначить статический IP-адрес вашему веб-серверу и добавить этот адрес вместе с именем хоста и псевдонимами в файл hosts на машине dnsmasq run - его компонент сервера имен может включать имена хостов из файл hosts и разрешить их также.

licensed under cc by-sa 3.0 with attribution.