我正在使用以下接受相关数据包的简单 iptables 规则:
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
我让 ICMP回声请求通过其他规则:
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
我是否应该明确添加任何内容来接收“有用的”ICMP 消息,例如destination-unreachable,time-exceeded和parameter-problem,或者该RELATED子句已经接受它们?
http://www.linuxtopia.org/Linux_Firewall_iptables/x1571.html
ICMP 的另一个非常重要的部分是它用于告诉主机特定 UDP 和 TCP 连接或连接尝试发生了什么。出于这个简单的原因,ICMP 回复通常会被识别为与原始连接或连接尝试相关。一个简单的例子是 ICMP 主机不可达或 ICMP 网络不可达。如果它尝试与其他主机的连接失败,这些应该总是被派生回我们的主机,但有问题的网络或主机可能已关闭,因此尝试到达有问题的站点的最后一个路由器将回复一个 ICMP 消息告诉我们关于它。在这种情况下,ICMP 回复被认为是一个 RELATED 数据包
默认情况下,RELATED 规则会处理关联的 ICMP 消息。从iptables 手册页,在与conntrack相关的部分(http://linux.die.net/man/8/iptables):
RELATED 表示数据包正在启动一个新连接,但与现有连接相关联,例如 FTP 数据传输或ICMP 错误。
conntrack 报告的其他状态是:
您可以使用该conntrack包检查和管理 conntrack 表。
$ sudo conntrack -L
Run Code Online (Sandbox Code Playgroud)