Отдельный сервер имен для определенных имен хостов

В моей домашней сети есть несколько компьютеров. Они подключены к маршрутизатору, который подключает меня к Интернету и выступает в качестве DHCP-сервера и сервера имен в локальной сети.

Некоторые из моих компьютеров - машины с Ubuntu, и я пытаюсь настроить на них хороший файл /etc/resolv.conf. Проблема в том, что мой маршрутизатор действительно паршивый как сервер имен (очень, очень медленный), поэтому я предпочитаю использовать внешний сервер имен, такой как сервер имен Google или OpenDNS.

Но эти публичные серверы имен, очевидно, не знают IP-адреса моих локальных машин.

Итак, вот мой вопрос: есть ли способ настроить /etc/resolv.conf так, чтобы определенные имена хостов разрешались одним сервером имен, а другие имена хостов разрешались другим сервером имен?

(Я предполагаю, что нет, и в этом случае мне придется установить фиксированные IP-адреса. Но я надеюсь избежать этого.)

1 ответ

Решение

Установите локальный сервер переадресации имен на компьютерах, которым необходимо сделать выбор между локальным сервером имен и сервером имен в Интернете. Используйте Unbound, потому что это легкий и простой в настройке для этой задачи.

Поместите это в Unbound config:

stub-zone:
        name: "internal.example.com"
        stub-host: internal.nameserver.ip.address
forward-zone:
        name: "."
        forward-host: internet.nameserver.ip.address

Положил nameserver 127.0.0.1 в /etc/resolv.conf так что приложение на локальном хосте будет использовать этот экземпляр Unbound.

Теперь, когда вы пытаетесь решить myhost.internal.example.com он отправит запрос internal.nameserve.ip.address и когда вы пытаетесь решить www.google.com он отправит запрос internet.nameserver.ip.address,

Надеемся, что все ваши локальные хосты сгруппированы в одном локальном домене (internal.example.com) выше. К сожалению, слишком вероятно, что ваш дешевый маршрутизатор +DHCP-сервер +DNS-сервер вставит все имена хостов, которые он знает, прямо в его синтезированную корневую зону. Если это так, то вам придется перечислить их все по очереди следующим образом:

stub-zone:
        name: "hostname1"
        stub-host: internal.nameserver.ip.address
stub-zone:
        name: "hostname2"
        stub-host: internal.nameserver.ip.address
stub-zone:
        name: "hostname3"
        stub-host: internal.nameserver.ip.address
forward-zone:
        name: "."
        forward-host: internet.nameserver.ip.address

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

Другие вопросы по тегам