Я хочу создать небольшую сеть, в которой центральный DHCP-сервер сдает в аренду IPv4-адреса клиентам. У клиентов уже установлены имена хостов, и они должны объявить их центральному DNS-серверу, чтобы и сервер, и все клиенты могли найти друг друга с этим именем хоста. DNS-сервер будет разрешать LAN-адреса домена «my.domain» и указывать на внешний DNS-сервер для всех других доменов (интернет).
В моей текущей настройке у меня есть два поля: 10.0.100.1
это сервер (Ubuntu 22.04), на котором размещены DHCP и DNS. 10.0.100.2
настроен как клиент (Fedora 35) (DHCP отправляет этот фиксированный IP-адрес на этапе тестирования).
Это клиент(10.0.100.2
) конфигурация:
$ кот /etc/имя хоста
клиентхост
$ cat /etc/systemd/network/20-wired.network
[Соответствовать]
Имя = enp0s31f6
[Сеть]
LinkLocalAddressing=ipv4
DHCP=ipv4
SendHostname=true
[DHCPv4]
Уседомаинс=истина
$ разрешение
Глобальный
Протоколы: LLMNR=resolve -mDNS -DNSoverTLS DNSSEC=нет/не поддерживается
Режим resolv.conf: заглушка
Ссылка 2 (enp0s31f6)
Текущие области: DNS LLMNR/IPv4
Протоколы: +DefaultRoute +LLMNR -mDNS -DNSoverTLS DNSSEC=нет/не поддерживается
Текущий DNS-сервер: 10.0.100.1
DNS-серверы: 10.0.100.1
DNS-домен: my.domain
IP 10.0.100.2
правильно назначается. Клиент может пинговать сервер (10.0.100.1
) с его IP-адресом, именем хоста или полным доменным именем. Я также вижу в tcpdump, что имя хоста отправляется на DHCP-сервер (опция 81 Client FQDN). Все идет нормально.
Предполагается, что конфигурация DHCP-сервера будет изменена после того, как первоначальная настройка будет работать, в сторону выдачи IP-адресов из диапазона. Так что в будущем у меня не будет фиксированных IP-адресов для клиентов. Я не буду показывать здесь файлы ключей rndc. Они идентичны и размещены в настроенных местах. Сервер настроен следующим образом:
$ кот /etc/имя хоста
серверхост
$ cat /etc/systemd/network/20-wired.network
[Соответствовать]
Имя = enp0s31f6
[Сеть]
LinkLocalAddressing=ipv4
Адрес=10.0.100.1/16
Шлюз=10.0.1.1
DNS=10.0.100.1
[DHCPv4]
UseDomains=мой.домен
$ cat /etc/default/isc-dhcp-сервер
ИНТЕРФЕЙСv4="enp0s31f6"
$ кошка /etc/dhcp/dhcpd.conf
включить "/etc/dhcp/ddns-keys/my-domain.key";
время аренды по умолчанию 7200;
максимальное время аренды 28800;
ddns-обновления включены;
стандартный стиль обновления ddns;
ddns-domainname "мой.домен.";
разрешить-неизвестных-клиентов;
авторитетный;
зона мой.домен. {
основной 10.0.100.1;
ключ ddns-мойдомен;
}
зона 10.0.в-адрес.арпа. {
основной 10.0.100.1;
ключ ddns-мойдомен;
}
# обслуживать только один клиентский ящик специально на этапе тестирования
подсеть 10.0.0.0 сетевая маска 255.255.0.0 {}
хост тестовый хост {
аппаратный Ethernet 00:00:00:00:00:00;
фиксированный адрес 10.0.100.2;
опция маска подсети 255.255.0.0;
вариант маршрутизатора 10.0.1.1;
вариант доменных имен-серверов 10.0.100.1;
вариант доменного имени "my.domain";
имя файла "pxelinux.0";
}
$ кошка /etc/bind/named.conf
включить "/etc/bind/keys/my.domain.key";
включить "/etc/bind/named.conf.options";
включить "/etc/bind/named.conf.local";
включить "/etc/bind/named.conf.default-zones";
$ кот /etc/bind/named.conf.options
acl "внутренний" {
127.0.0.1;
10.0.0.0/16;
};
параметры {
директория "/var/cache/bind";
рекурсия да;
разрешить рекурсию {внутренний; };
слушать { 10.0.100.1; };
разрешить передачу {нет; };
разрешить запрос {внутренний; };
разрешить-запрос-кэш {внутренний; };
экспедиторы {
1.1.1.1;
};
слушать на v6 { любой; };
};
$ кошка /etc/bind/named.conf.local
зона "мой.домен" {
тип мастер;
файл "/etc/bind/zones/db.my.domain";
политика обновления { предоставить имя ddns-mydomain my.domain ЛЮБОЕ; };
разрешить передачу {нет; };
};
зона "0.10.in-addr.arpa" {
тип мастер;
файл "/etc/bind/zones/db.0.10";
политика обновления { предоставить имя ddns-mydomain my.domain ЛЮБОЕ; };
разрешить передачу {нет; };
};
$ кошка /etc/bind/zones/db.my.domain
86400 долларов США
@ IN SOA serverhost.my.domain. admin.мой.домен. (
3; Серийный
28800 ; Обновить
3600 ; Повторить попытку
28800 ; Срок действия
43200 ) ; Отрицательный TTL кэша
;
; серверы имен — записи NS
В NS серверхост.мой.домен.
; записи
серверхост.мой.домен. В А 10.0.100.1
$ кошка /etc/bind/zones/db.10.0
86400 долларов США
@ IN SOA serverhost.my.domain. admin.мой.домен. (
3; Серийный
28800 ; Обновить
3600 ; Повторить попытку
28800 ; Срок действия
43200 ) ; Отрицательный TTL кэша
;
; серверы имен — записи NS
В NS серверхост.мой.домен.
; PTR-записи
100.1 В PTR serverhost.my.domain. ; 10.0.100.1
Я думаю, что должны быть все соответствующие настройки. Пожалуйста, дайте мне знать, если вам нужно что-то еще.
Проблема здесь в том, что, находясь на 10.0.100.1 (хост сервера)
я могу только пинговать клиентхост
через свой IP 10.0.100.2
но ни по имени хоста, ни по полному доменному имени.К сожалению, я не знаю, с чего начать отладку, чтобы увидеть, отправляется ли имя хоста клиента на DNS-сервер и регистрируется или нет.
Возможно, потенциально несвязанное примечание: выполнение команды DHCP-список-аренда
на сервер-хост
возвращает пустой список. Журналы показывают DHCPACK для 10.0.100.2
но он никогда не появляется в этом конкретном выводе (что было бы интересно, потому что есть столбец «имя хоста»).
Редактировать: похоже, что ключ может быть важен в конце концов. Первоначально я вручную создал ключ с rndc-confgen -a -b 512
, а затем скопировал этот файл в /etc/dhcp/rndc-ключи/
. В настоящее время я сгенерировал новый ключ с ddns-confgen -a -b 512
и поместил ключ в оба /etc/bind/keys/мой.домен.ключ
И в /etc/dhcp/ddns-keys/мой.домен.ключ
(и обновил операторы включения в соответствующих файлах конфигурации). У меня все еще есть ключ rndc под /etc/bind/rndc.key
который также подхвачен bind9, как показывают журналы.
Редактировать2:
Ручной запуск нобдате
выглядит следующим образом:
$ nsupdate -D -k /etc/bind/keys/мой.домен.ключ
> обновить добавить clienthost.my.domain 7200 A 10.0.100.2
> отправить
[...]
Ответ на запрос обновления:
;; ->>HEADER<<- код операции: UPDATE, статус: REFUSED, id: 39064
;; флаги: qr; ЗОНА: 1, ПРЕДВАРИТЕЛЬНЫЙ ЗАПРОС: 0, ОБНОВЛЕНИЕ: 0, ДОПОЛНИТЕЛЬНО: 1
;; РАЗДЕЛ ЗОНЫ:
;мой.домен. В СОА
;; ПСЕВДОРАЗДЕЛ TSIG:
ddns-мойдомен. 0 ЛЮБОЙ TSIG hmac-sha256. 1652972427 300 32 4e/XXXXXXXXXXXXXXXXXXXXXXXX/bmg= 39064 NOERROR 0
А при ручном обновлении логи показывают
client @0x7f61d8004cb8 10.0.100.1#39791/key ddns-mydomain: обновление зоны 'my.domain/IN': обновление не удалось: отклонено безопасным обновлением (ОТКАЗАНО)