Linux服务器如何监控针对IPv6地址的Ping请求?
如何用tcpdump监控IPv6 Ping请求
你之前的命令只针对IPv4的ICMP协议(也就是普通ping),而IPv6的ping(ping6)用的是ICMPv6协议,两者的过滤规则不一样,所以需要调整tcpdump的参数:
基础捕获命令
如果要捕获指定网卡上所有的ICMPv6数据包(包括ping6的请求和响应),直接用:
sudo tcpdump -vi enp2s0 icmp6
这里的icmp6是tcpdump内置的过滤器,专门匹配IPv6网络中的ICMP协议,-v能显示更详细的包信息,-i enp2s0指定你要监控的网卡(换成你实际的网卡名即可)。
精准捕获入站Ping6请求
如果你只想捕获发送到服务器IPv6地址的ping请求(和你之前监控IPv4入站ping的需求一致),可以用更精确的过滤规则:
sudo tcpdump -vi enp2s0 icmp6 and ip6 dst host 2001:db8::1 and icmp6 type echo-request
把2001:db8::1替换成你的服务器实际IPv6地址:
ip6 dst host指定数据包的目标是你的服务器IPv6icmp6 type echo-request只筛选ping请求包(排除响应包)
为什么之前的命令不生效?
你之前用的proto \icmp其实是匹配IPv4协议栈里的ICMP(协议号1),而IPv6的ICMPv6对应的协议号是58,tcpdump里的icmp6过滤器会自动识别IPv6头中的协议字段,所以才能正确捕获到ping6的数据包。
小提示:如果不确定网卡名称,可以用tcpdump -D列出所有可用的网络接口,确认你要监控的网卡是否正确配置了IPv6地址。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

