Linux

不接受來自 Linux 中路由器公告的 RDNSS

  • February 6, 2021

我有一個 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 = 廣域網。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 綁定除eth1and之外的所有內容loRadvdump顯示重啟後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 的名稱伺服器不是核心的工作。它是通過您用來管理網路連接的任何方式來完成的。

編輯 誤解了你想要的東西,想到了一個太複雜的場景。稍微改寫一下:“有一個靜態的 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 進行管理。在測試它時,我無法在沒有 RDNSS 的情況下使用 SLAAC。我建議靜態設置您的 IPv6 地址。

這是來自netplan手冊頁

dhcp6(布爾值)

為 IPv6 啟用 DHCP。預設關閉。這包括無狀態 DHCP(DHCP 伺服器提供 DNS 名稱伺服器等資訊但不提供 IP 地址)和有狀態 DHCP(伺服器提供地址和其他資訊)。

如果您處於具有完全無狀態自動配置(帶有 RDNSS 的 SLAAC)的純 IPv6 環境中,則可以設置此選項以啟動介面。(僅設置accept-ra 是不夠的。)自動配置仍將尊重路由器通告的內容,並且僅在RA 中請求時才使用DHCP。

請注意,需要 rdnssd(8) 才能將 RDNSS 與 networkd 一起使用。NetworkManager 不需要額外的軟體。

$$ … $$ 如果 dhcp4 和 dhcp6 都為真,則網路後端要求 dhcp4-overrides 和 dhcp6-overrides 包含相同的鍵和值。如果值不匹配,將顯示錯誤並且不會應用網路配置。

引用自:https://serverfault.com/questions/1050807