У меня есть маршрутизатор Ubuntu 20.04, который использует свой собственный IP-адрес в качестве DNS-сервера, полученного из объявлений маршрутизатора, создавая петли DNS.Я не могу понять, как игнорировать RDNSS (рекурсивный DNS-сервер) из объявлений маршрутизатора.
Цикл:
Jan 19 17:26:28 myrouter dnsmasq[1074014]: query[AAAA] mobile.events.data.trafficmanager.net from fe80::21b:21ff:fee0:a6b3
Jan 19 17:26:28 myrouter dnsmasq[1074014]: forwarded mobile.events.data.trafficmanager.net to 127.0.0.53
Jan 19 17:26:28 myrouter dnsmasq[1074014]: query[AAAA] mobile.events.data.trafficmanager.net from fe80::21b:21ff:fee0:a6b3
Jan 19 17:26:28 myrouter dnsmasq[1074014]: forwarded mobile.events.data.trafficmanager.net to 127.0.0.53
Настройка сети:
99.99.99.162/24
, 2a01: xx: xx: xx :: 2/126
10.50.0.1/16
, 2a01: xx: xx: 1337: 10: 50: 0: 1/64
network:
version: 2
renderer: networkd
ethernets:
eth1:
match:
macaddress: "00:1b:21:e0:a6:b2" <-- non-obfuscated
set-name: eth1
addresses:
- 99.99.99.162/24
- 2a01:xx:xx:xx::2/126
gateway4: 99.99.99.161
gateway6: 2a01:xx:xx:xx::1
nameservers:
addresses:
- 33.33.33.10
- 44.44.44.10
search: [ company, company.nl ]
eth2:
match:
macaddress: "00:1b:21:e0:a6:b3" <-- non-obfuscated; will appear as IPv6 fe80
set-name: eth2
addresses:
- 10.50.0.1/16
- 2a01:xx:xx:1337:10:50:0:1/64
nameservers:
addresses:
- 33.33.33.10
- 44.44.44.10
Dnsmasq привязывается ко всем, кроме eth1
и lo
. Radvdump
показывает, что после перезапуска dnsmasq
он отправляет объявление маршрутизатора с fe80 :: 21b: 21ff: fee0: a6b3
в качестве RDNSS (рекурсивного DNS-сервера) . Наши клиенты, похоже, не понимают этого и используют только IPv4. Но сам маршрутизатор делает:
Link 5 (eth2)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 33.33.33.10
DNS Servers: 44.44.44.10
33.33.33.10
fe80::21b:21ff:fee0:a6b3 <- appears a short while after 'netplan try'
Я попытался отключить его:
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.lo.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
Но не повезло. Есть идеи?
Обновление серверов имен на основе RDNSS не входит в обязанности ядра. Это делается с помощью того, что вы используете для управления сетевыми подключениями.
edit. Не понял, что вы хотели, придумал слишком сложный сценарий. Немного перефразирую: "Имея статическую настройку ipv4 и v6, netplan все равно делает SLAAC. Почему?"
Чтобы исправить это, включите
accept-ra: false
в конфигурацию netplan для нужного интерфейса(ов), source.
Для полноты картины, вот пример конфигурации для свежеустановленной коробки Ubuntu 20.10:
network:
ethernets:
enp0s3:
dhcp4: false
dhcp6: false
accept-ra: false
addresses:
- 192.168.1.x/24
- 2001:DB8::64/64
gateway4: 192.168.1.1
gateway6: 2001:DB8::1
nameservers:
addresses:
- 192.168.1.1
version: 2
Далее "Я хочу SLAAC, но без RDNSS!":
В случае Ubuntu, он управляется с помощью netplan. При тестировании я не смог использовать SLAAC без RDNSS. Я предлагаю установить ваш IPv6-адрес статически.
Вот из netplan
manpage:
dhcp6 (bool)
Включить DHCP для IPv6. По умолчанию выключено. Это относится как к DHCP без состояния - когда сервер DHCP предоставляет информацию, например, серверы имен DNS, но не IP-адрес, - так и к DHCP с состоянием, когда сервер предоставляет и адрес, и другую информацию.
Если вы находитесь в среде только IPv6 с полностью статической автоконфигурацией (SLAAC с RDNSS), этот параметр может быть установлен, чтобы заставить интерфейс быть поднятым. (Одной установки accept-ra недостаточно.) Автоконфигурация будет по-прежнему учитывать содержимое объявления маршрутизатора и использовать DHCP, только если это запрошено в RA.
Обратите внимание, что для использования RDNSS с networkd требуется rdnssd(8). Для NetworkManager не требуется дополнительное программное обеспечение.
[...]
Если dhcp4 и dhcp6 равны true, бэкенд networkd требует, чтобы dhcp4-overrides и dhcp6-overrides содержали одинаковые ключи и значения. Если значения не совпадают, будет показана ошибка, и сетевая конфигурация не будет применена.