2

想做这样的事情

iptables -I INPUT ! -s $IP_1 -p tcp --dport $SERVER_PORT -j DROP
iptables -I INPUT ! -s $IP_2 -p tcp --dport $SERVER_PORT -j DROP
iptables -I INPUT ! -s $IP_3 -p tcp --dport $SERVER_PORT -j DROP

服务器端口对所有人来说都是相同的,但允许的 ip 可能不同....据我所知,iptables 这不起作用,因为 IP_3 将从第一条规则中删除...所以我该如何得到一些东西像这样工作?

4

2 回答 2

2

嗯,这行得通吗?

iptables -A INPUT -s $IP_1 -p tcp --dport $SERVER_PORT -j ACCEPT
iptables -A INPUT -s $IP_2 -p tcp --dport $SERVER_PORT -j ACCEPT
iptables -A INPUT -s $IP_3 -p tcp --dport $SERVER_PORT -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s 0.0.0.0/0 --dport $SERVER_PORT -j DROP
于 2013-08-23T00:06:50.840 回答
1

这些规则将丢弃所有发往 $SERVER_PORT 的 tcp 数据包。第一条规则说如果源 IP 地址不等于 $IP_1 则删除它。由于规则已正确匹配,因此不进行进一步处理。如果 IP 地址等于 $IP_1,那么它将转到第二个规则,该规则将出于相同的原因删除它,假设 $IP_1 != $IP_2。事实上,所有发往 $SERVER_PORT 的 tcp 数据包都将被丢弃,而不会到达规则 3。

相反,请执行以下操作:

iptables -A INPUT -s $IP_1 -p tcp --dport $SERVER_PORT -j ACCEPT
iptables -A INPUT -s $IP_2 -p tcp --dport $SERVER_PORT -j ACCEPT
iptables -A INPUT -s $IP_3 -p tcp --dport $SERVER_PORT -j ACCEPT
iptables -A INPUT -j DROP

如果没有其他规则,请记住先刷新规则:iptables -F。

于 2013-08-22T22:32:26.977 回答