不接受來自 Linux 中路由器公告的 RDNSS
我有一個 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 綁定除
eth1
and之外的所有內容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 的名稱伺服器不是核心的工作。它是通過您用來管理網路連接的任何方式來完成的。
編輯 誤解了你想要的東西,想到了一個太複雜的場景。稍微改寫一下:“有一個靜態的 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 包含相同的鍵和值。如果值不匹配,將顯示錯誤並且不會應用網路配置。