我应该如何构建具有以下要求的 iptables 规则?
- 过滤端口 12001 上的流量以允许 tcp/udp
- 过滤器应仅允许一个 IP 向端口 12001 发送流量。任何其他 IP 都是不是允许发送任何流量,但仅有的此端口。
- 允许任何其他端口的流量(全部接受)
操作系统:Centos 6.5 / RH 6.5
答案1
所有这些问题的答案都在iptables
处理规则的方式中,即首场决定性比赛获胜。这意味着您首先编写最具体的规则,然后再编写最不具体的规则;例如:
iptables -A INPUT -p tcp --dport 12001 -s a.b.c.d -j ACCEPT
iptables -A INPUT -p tcp --dport 12001 -j REJECT
# and similarly for UDP, then...
iptables -A INPUT -j ACCEPT
第一个允许从指定的优先地址(此处为 abcd)到指定端口(12001)的流量;第二个拒绝到该端口的所有其他流量;第三个允许其他所有流量。
因此,规则 2 不必包含已批准流量的例外情况,因为规则 1 已已经允许了;允许的流量永远不会看到规则 2,因此不会受到它的干扰。同样,规则 3 不必处理拒绝大部分到端口 12001 的流量,因为规则 2 已经处理了这个问题。