2

Это все в локальной сети:

  • У меня есть несколько машин Linux (я называю эти конечные точки), которые получают свои IP-адреса от DHCP-сервера, который я не контролирую.
  • Я не контролирую наш внутренний DNS
  • Тем не менее, я управляю сервером Ubuntu со статическим IP и известным именем: ubuntu.domain.com

Я хочу иметь возможность доступа к этим машинам по их именам хостов или hostname.ubuntu.domain.com.

Либо мне нужно уведомить наш DNS-сервер об этих именах хостов, выяснить, какие службы разрешения имен уже доступны (pinging для имен хостов Windows или Linux разрешают IP-адрес opendns, что неверно), либо настроить службу типа dnsmasq, либо использовать динамический веб-сайт DNS. (не идеально подходит для этой в основном закрытой сети)

С dnsmasq похоже, что мне нужно настроить каждую машину для получения IP-адреса от ubuntu.domain.com. Я не хочу этого делать. Я должен поддерживать текущую ситуацию с DHCP. Кто-то был бы зол, если бы наши запросы DHCP проходили через мою собственную машину.

Можно ли пересылать запросы DHCP от dnsmasq моему поставщику DHCP по умолчанию?

Каким-то образом каждая машина должна уведомить ubuntu.domain.com о своей паре (имя хоста, IP).

Я хочу избегать изменения чего-либо, кроме именованных конечных точек, для использования в ubuntu.domain.com в качестве источника DNS, поэтому схема hostname.ubuntu.domain.com кажется хорошей. Я даже не знаю, возможно ли это вообще.

TLDR: Как мне легко разрешить имена хостов Linux?

2 ответа2

2

Если вы хотите разрешить имена с любого адреса, лучше всего добавить их в DNS. Часто DHCP-сервер регистрирует имя, которое использует ваш хост, когда запрашивает IP-адрес. В большинстве случаев это должно быть неквалифицированное имя хоста. Это часто отключается в конфигурации клиента DHCP. Затем он должен появиться в месте, которое может быть разрешено с помощью списка поиска, предоставленного DHCP.

DNSMasq может быть настроен на использование DNS-серверов, предоставляемых DHCP. Я считаю, что конфигурация по умолчанию в Ubuntu будет обрабатывать конфигурацию автоматически.

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

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

РЕДАКТИРОВАТЬ: Если вы работаете без поддержки администраторов, вы можете создать файл /etc /hosts на одном сервере и использовать dnsmasq в качестве основного DNS-сервера для всех серверов, которые должны координироваться. Файл /etc /hosts должен работать, так как ваш DHCP, скорее всего, даст вам статические адреса.

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

Другой альтернативой может быть использование avahi, чтобы позволить серверам обнаруживать друг друга. Его можно настроить для доменов, отличных от локальных.

1

Вы можете получить IP-адрес от DHCP, как сейчас, но переопределить DNS-серверы, чтобы они указывали на ubuntu.domain.com.

Затем установите bind на ubuntu.domain.com и настройте зону для ubuntu.domain.com, которая будет принимать регистрации из локальной сети. Настройте привязку на ubuntu.domain.com, чтобы он перенаправлял любой DNS-запрос для зон, для которых он не является полномочным, на текущие DNS-серверы.

Чтобы переопределить серверы имен, отредактируйте /etc/dhclient.conf и добавьте

supersede domain-name-servers <ubuntu server ip>;

Чтобы зарегистрировать имя хоста ПК на DNS-сервере, также добавьте:

supersede domain-name "ubuntu.domain.com";
send host-name "hostname.ubuntu.domain.com";

Чтобы разрешить регистрацию зон в bind на ubuntu.domain.com, добавьте это в раздел опций в /etc/bind/named.conf.options . Также добавьте экспедиторы для неавторизованных зон:

options {
    allow-update { <your network>/<your subnet mask> (eg 192.168.1.0/24); };
    forwarders { <current dns server>; <current dns server>; };
};

Затем вам нужно определить зону в /etc/bind/named.conf.local:

zone "ubuntu.domain.com" {
    type master;
    file "/etc/bind/pri/db.ubuntu.domain.com";
};

Файл зоны /etc/bind/pri/db.ubuntu.domain.com будет выглядеть следующим образом

$ORIGIN .
$TTL 604800     ; 1 week
ubuntu.domain.com      IN SOA  ubuntu.domain.com. dns.ubuntu.domain.com. (
                            260        ; serial
                            604800     ; refresh (1 week)
                            86400      ; retry (1 day)
                            2419200    ; expire (4 weeks)
                            604800     ; minimum (1 week)
                            )
                    NS      ubuntu.domain.com.
                    A       <ip address of ubuntu.domain.com>
 }

Дополнительные записи A для зарегистрированных хостов будут добавлены в этот файл.

Итак, последовательность

  1. dhclient будет запрашивать IP с текущего DHCP-сервера
  2. Сервер DHCP отвечает IP, шлюзом и DNS
  3. dhclient принимает IP и шлюз и переопределяет dns с помощью ubuntu.domain.com
  4. dhclient регистрирует свое имя хоста с помощью ubuntu.domain.com dns
  5. DNS-запросы отправляются на ubuntu.domain.com - если они находятся в зоне ubuntu.domain.com, они будут обрабатываться локально, в противном случае пересылка на текущие DNS-серверы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .