为什么要封锁“无路可走”

为什么要封锁“无路可走”

我有一个类似的问题没有到 nc 主机的路由,但可以 ping 通
在这种情况下,对于某些端口,iptables(默认)规则返回主机禁止的 ICMP 数据包,这会转换为“无路由”
我修复了它(删除了规则),但我想知道,为什么默认规则设置为拒绝,没有路线,连接被拒绝不是更清楚吗?
发送连接被拒绝是否需要更多资源?它是一个明显更大的数据包吗?

答案1

您似乎询问的 REJECT 规则定义为:

target      prot opt source               destination
REJECT      all  --  anywhere             anywhere             reject-with icmp-host-prohibited

这样做的优点是,它是一个可以与大多数/所有协议同等工作的 REJECT 规则。由于它会导致特定类型的 ICMP,这意味着“与该主机的通信在管理上被禁止”,因此接收方将能够识别出这是防火墙类型的管理块,而不仅仅是随机网络故障或软件配置错误。换句话说,“如果没有人为操作,这个阻塞不太可能消失,因此一次又一次的尝试可能是徒劳的。如果您觉得这不对,请与网络管理员联系。”

如果您愿意,您可以使用“连接被拒绝”拒绝 TCP 连接,并使用 ICMP 拒绝其他所有连接,但为此,您需要两个规则:

iptables -w -A INPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -w -A INPUT -j reject --reject-with icmp-host-prohibited

默认情况下,发送“连接被拒绝”TCP ReSeT 数据包或 ICMP 主机禁止数据包已经以较低优先级发生,因此,如果系统有更重要的事情要做,这些拒绝通知将首先被延迟或完全跳过。 TCP 重置数据包和 ICMP 错误数据包之间的数据包大小没有显着差异。

但是,如果您仍然担心(最小)资源使用情况,则可以使用 DROP 规则来阻止连接:使用 DROP 规则,匹配的数据包将被丢弃,而不发送任何类型的响应。这需要客户端等到超时才能检测到数据包未能通过,这会使网络故障排除变得更加烦人。

相关内容