Answers:
创建一个将接受任何TCP和UDP数据包的新链,然后从各个IP /端口允许规则跳至该链:
iptables -N ACCEPT_TCP_UDP
iptables -A ACCEPT_TCP_UDP -p tcp -j ACCEPT
iptables -A ACCEPT_TCP_UDP -p udp -j ACCEPT
iptables -A zone_lan_forward -d 1.2.3.0/24 -j ACCEPT_TCP_UDP
这增加了一些额外的行的开销,但将TCP / UDP规则的数量减少了一半。
我不会忽略该-p
论点,因为您不仅要为ICMP开放防火墙,还要为其他任何协议开放防火墙。在iptables手册页上-p
:
指定的协议可以是tcp,udp,icmp或所有协议之一,也可以是代表这些协议之一或不同协议的数字值。还允许/ etc / protocols中的协议名称。
你可能不会在除TCP,UDP和ICMP协议的任何听,现在,但谁知道将来会举行。不必要的做法是不必要地打开防火墙。
免责声明:iptables命令不在我的脑海;我无法访问要在其上测试ATM的盒子。
-p all
在链--dport
上的所有规则中都使用过zone_lan_forward
,则可能会达到您的期望。我当然假设由于该链,没有其他方法可以通过非TCP / UDP协议进入该ACCEPT_TCP_UDP
链。显然,如果有多个人可以修改规则,并且有人随手来编辑您的规则而又不了解其细微之处,那么这是一种冒险的策略。
ACCEPT_TCP_UDP
跳至zone_lan_forward
,然后跳至ACCEPT
。
如果您不太在意ICMP流量(无论如何您都可以使用规则在全局范围内进行阻止),则可以省略-p标志,它将覆盖所有协议。