我的 ISP 提供 IPv6 连接,但他们没有提及前缀长度。但是,我的路由器必须向网络通告某个前缀,才能进行 IPv6 配置。
Linux 上是否有命令可以检查计算机正在接收哪些路由器公告?
答案1
使用
rdisc6
(来自“ndisc6”)发送路由器请求,它将立即显示广告。# rdisc6 -m wlan0
(该
-m
选项告诉 rdisc6 在第一个 RA 之后继续等待,以防子网上有多个路由器。)作为一般方法,使用数据包捕获工具(例如
tcpdump
或)wireshark
查看正在接收的数据包。IPv6 路由器通告只是常规数据包,而不是某种隐藏的带外数据。可以与所有基于 libpcap 的工具一起使用,
icmp6[icmp6type] == icmp6-routeradvert
或者icmp6
单独使用,以过滤掉不需要的数据包。例如:# tcpdump -v -n -i eth0 icmp6 # tcpdump -v -n -i eth0 "icmp6[icmp6type] == icmp6-routeradvert" # termshark -i eth0 -f icmp6
Wireshark 和 tshark 也有一个“显示过滤器”,其功能相同(尽管您也可以使用捕获过滤器):
icmpv6.type == 134
# tshark -ni eth0 -f icmp6 -Y "icmpv6.type == 134" -VO icmpv6
(这些
-V -O icmpv6
选项告诉 tshark 在打印数据包时扩展 ICMPv6 层。)