首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问ip6tables中的"icmp“协议?

如何访问ip6tables中的"icmp“协议?
EN

Unix & Linux用户
提问于 2022-09-23 02:58:48
回答 1查看 231关注 0票数 1

ip6tables命令接受icmpicmpv6协议:

代码语言:javascript
复制
$ sudo ip6tables -A INPUT -p icmp -j ACCEPT
$ sudo ip6tables -A INPUT -p ipv6-icmp -j ACCEPT

但是,当我使用ping命令进行测试时:

代码语言:javascript
复制
$ ping6 fe80::a00:1234:1234:1234%eth1

我从来没有遵守过icmp规则:

代码语言:javascript
复制
Chain INPUT (policy ACCEPT 133 packets, 13501 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
       0          0 ACCEPT     icmp     *      *       ::/0                 ::/0                
     112      11488 ACCEPT     icmpv6   *      *       ::/0                 ::/0                

如果达不到icmp协议,为什么ip6tables会接受它?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-09-23 08:17:05

协议只是一个数字:

代码语言:javascript
复制
$ grep icmp /etc/protocols 
icmp    1   ICMP        # internet control message protocol
ipv6-icmp 58    IPv6-ICMP   # ICMP for IPv6

这些数字共享相同的“名称空间”:Internet,有些协议是常见的,例如: UDP (17)、TCP (6)、SCTP (132),但其他协议则不然,特别是当IPv4和IPv6之间存在差异时。ICMP的情况就是这样:两种不同的协议。

在正常环境下,在其上层协议报头中永远不会出现带有ICMP (值1)的IPv6数据包。同样,在IPv4上永远不应该有一个类型为ICMPv6 (又名IPv4 6-ICMP)的IPv4数据包(值58)。也许一些使用NAT64的环境可能会不完美地泄漏此类数据包(ICMP通过IPv6,或者ICMPv6通过IPv4)。

同时,ip6tables只处理IPv6:它不会过滤所有类型为IPv4的数据包,就像iptable只处理IPv4和不过滤IPv6类型的数据包一样。

因此,过滤(或此处计数)的正确方法是有一个IPv4规则和一个IPv6规则,每个规则都有正确的上层协议。

代码语言:javascript
复制
sudo iptables -A INPUT -p icmp -j ACCEPT
sudo ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/718360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档