运行iptables -L -n
给我以下信息:
Chain IN_ZONE_work_allow (1 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ctstate NEW
ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353 ctstate NEW
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631 ctstate NEW
什么是接受 udp 0.0.0.0/0 dest 224.0.0.251 ?
答案1
这意味着您可以接收多播 dns 数据包(dpt = 目标端口,5353 = 多播 dns),udp 是协议,224.0.0.251 是目的地组播地址, 0.0.0.0/0 表示来自任何地方。ctstate new
意味着如果连接是新的(与“非新”相关的数据包,即已建立的连接将通过更通用的规则被接受)。
如果您不知道,在较低级别上,网络上的所有计算机都会接收任何其他计算机发送的所有数据包;然后他们各自自行整理。
答案2
您询问的规则通常由 Linux 上的 avahi 守护进程用来侦听 mDNS 查询。
该 iptables 规则允许在端口 5353 上传入发往多播地址 224.0.0.251 的 udp 数据包。 IANA 定义多播地址的使用这里,mDNS RFC 是这里。
显示的输出iptables -L -n
并不是完整的图片,因为 INPUT 链中的原始匹配可能具有基于源、允许这些数据包的接口以及各种其他属性的更详细的数据包匹配。 INPUT 链中的初始匹配也可能在命中“IN_ZONE_work_allow”链中的后续规则之前跳转到其他链。为了更好地理解为了触发此规则而必须存在的所有数据包属性,您必须从该链向后直到列IN_ZONE_work_allow
中看到的第一个数据包属性target
,然后以这种方式继续,直到找到首先从 INPUT 跳转(假设这实际上不是转发规则集)。在您的情况下,该链很可能直接从 INPUT 跳转到,如链名称后面的注释所示:“1 个引用”。我发现直接查看iptables-save
盒子上是否有这样的输出更直接。
答案3
在 TCP/IP 网络中,0.0.0.0 作为 IP 地址意味着“任何”或“任何地方”。内核内部格式(这就是上面所反映的)使用它,设置它的命令可能只是不给出源。