IPTABLES代码问题

IPTABLES代码问题

我正在使用 iptables 来阻止所有端口。但是为了允许 ping www.google.com 我使用以下代码

filter -A INPUT -p tcp --dport 53 -j ACCEPT
filter -A OUTPUT -p tcp --sport 53  -j ACCEPT
filter -A INPUT -p udp --dport 53 -j ACCEPT
filter -A OUTPUT -p udp --sport 53 -j ACCEPT

这工作正常,但保存它会给我错误,因为在启动中使用过滤器不是正确的方法。但是,当我使用没有字过滤器的代码时,对 www.google.com 的 ping 操作不起作用。 PS我直接保存到/etc/sysconfig下的iptables文件中

编辑:好吧,过滤器似乎破坏了整个代码,并且 iptables 正在删除整个规则。问题是,尽管打开了 DNS 端口,我仍无法 ping www.google.com。

答案1

ping实用程序使用ICMP(互联网消息控制协议), 不是UDP(用户数据报协议)或者TCP(传输控制协议)。要允许传出ping请求通过防火墙,您可以添加如下规则:

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ALLOW

您可能还想添加如下规则以允许返回流量:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

答案2

iptables 规则的顺序很重要:第一的-j ACCEPT,-j DROP或的匹配规则-j REJECT将决定数据包的命运。在“丢弃所有内容”规则之后添加新规则将不会产生任何效果,因为匹配的数据包永远不会到达该规则。

答案3

好的,正确的规则是这些。从论坛得到的问题已解决。

-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -p udp --dport 53 -j ACCEPT
-A OUTPUT -p udp --sport 53 -j ACCEPT
-A OUTPUT -p udp --dport 53 -j ACCEPT

相关内容