想要做这样的事情
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将从第一个规则中删除...那么怎么做我得到这样的东西吗?
答案 0 :(得分: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
答案 1 :(得分: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。