監聽路由廣播

安裝 rdisc6

sudo apt-get install rdisc6

監聽RA

sudo rdisc6 eth0

通常輸出

Soliciting ff02::2 (ff02::2) on eth0...

Hop limit                 :           64 (      0x40)  // 路由器广告中指定的跳数限制
Stateful address conf.    :          Yes  // 这意味着除了SLAAC(无状态地址自动配置)外,设备还可以通过DHCPv6获取IPv6地址和其他配置信息。
Stateful other conf.      :          Yes  // 设备可以通过DHCPv6获取除IPv6地址之外的其他网络配置信息。
Mobile home agent         :           No  // 指示路由器是否充当移动家园代理
Router preference         :       medium // 路由器優先級適中
Neighbor discovery proxy  :           No // No 表示此路由器不充当邻居发现代理。
Router lifetime           :         1800 (0x00000708) seconds // 路由器的有效寿命
Reachable time            :  unspecified (0x00000000) // 指示可达性时间
Retransmit time           :  unspecified (0x00000000) // 指示重传时间
 Source link-layer address:  MAC地址 
 MTU                      :         1440 bytes (valid) 
 Prefix                   :  前缀 /64
  On-link                 :          Yes // 表示此前缀是本地链路上的,即设备可以直接与同一前缀内的其他设备通信,无需通过路由器转发。
  Autonomous address conf.:          Yes // 表示此前缀支持自主地址配置,即设备可以通过SLAAC自动生成其IPv6地址。
  Valid time              :        60504 (0x0000ec58) seconds // 前缀的有效时间
  Pref. time              :        60504 (0x0000ec58) seconds // 前缀的首选时间
 from fe80::be24:11ff:feaf:51ac // 路由器的本地地址 

需要檢查 Source link-layer address Prefix Autonomous address conf.

如果不存在前缀以及mac地址,則可能是路由問題

檢查系統配置

檢查accept_ra和autoconf

sysctl net.ipv6.conf.eth0.accept_ra
sysctl net.ipv6.conf.eth0.autoconf

輸出

net.ipv6.conf.eth0.accept_ra = 1
net.ipv6.conf.eth0.autoconf = 1

0則未開啟,手動啟用

sudo sysctl -w net.ipv6.conf.eth0.accept_ra=1
sudo sysctl -w net.ipv6.conf.eth0.autoconf=1

檢查interfaces

sudo nano /etc/network/interfaces

確定是否包含 iface eth0 inet6 auto

注意網卡名稱是否正確(當初沒主意到卡了我一整天。。)

重啟網絡服務

sudo systemctl restart networking

檢查systemd-networkd

sudo nano /etc/systemd/network/10-eth0.network

是否包含

[Network]
DHCP=ipv6
IPv6AcceptRA=true

重新啟動網絡服務 sudo systemctl restart systemd-networkd