Не принимать RDNSS из объявлений маршрутизатора в Linux

У меня есть маршрутизатор 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

Настройка сети:

  • eth0 = не используется.
  • eth1 = WAN. 99.99.99.162/24 , 2a01: xx: xx: xx :: 2/126
  • eth2 = LAN1. 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

Но не повезло. Есть идеи?

2
задан 22 January 2021 в 16:11
1 ответ

Обновление серверов имен на основе 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 содержали одинаковые ключи и значения. Если значения не совпадают, будет показана ошибка, и сетевая конфигурация не будет применена.

2
ответ дан 24 April 2021 в 00:12

Теги

Похожие вопросы