Linux环境下查询网络通告的IPv6及接收的路由器通告方法咨询
Linux环境下查询网络通告的IPv6及接收的路由器通告方法咨询
嗨,这个问题我太熟悉了!在Linux上确实有好几种方法能查到你的设备接收的路由器通告(RA)信息,顺带也能搞清楚IPv6前缀长度,给你整理几个实用的:
查看已分配的IPv6地址及前缀
直接运行这个命令:ip -6 addr输出里会列出你网卡上的所有IPv6地址,比如类似
2001:db8:1234:5678::1/64这样的条目,后面的/64就是前缀长度,这个值就是路由器通告里下发的。查看路由表中的RA相关条目
用路由表命令也能找到线索:ip -6 route你会看到带有
proto ra标记的路由项,比如默认路由default via fe80::xxxx dev eth0 proto ra metric 1024,这类条目就是通过路由器通告学习到的,同时如果有前缀路由的话,也会显示对应的前缀长度。用专门工具直接探测路由器通告
可以用rdisc6这个专门的ICMPv6路由器发现工具,它会主动发送请求并返回详细的RA信息。首先可能需要安装它:- Debian/Ubuntu系:
sudo apt install ndisc6 - RHEL/CentOS系:
sudo yum install ndisc6
安装后运行(把eth0换成你的实际网卡名):
rdisc6 eth0输出里会明确列出路由器通告里的前缀、前缀长度、默认网关地址、RA的有效期等细节,非常直观。
- Debian/Ubuntu系:
实时抓包查看RA报文
如果想实时监控路由器通告的发送情况,可以用tcpdump抓包:sudo tcpdump -i eth0 icmp6 and ip6[40] == 134这里
ip6[40] == 134是过滤ICMPv6类型134(也就是路由器通告)的报文,抓到后你能看到完整的RA包内容,包括前缀信息。
备注:内容来源于stack exchange,提问作者finitud




