我从未使用过iptables,在线文档似乎有点不透明。
我想阻止我的服务器上的所有端口8000请求,但来自特定IP地址的请求除外。我如何使用iptables做到这一点?
答案 0 :(得分:129)
这个问题应该在Server Fault。然而,假设您正在讨论TCP并且您想要允许的IP是1.2.3.4,则以下应该可以解决这个问题:
iptables -A INPUT -p tcp --dport 8000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP
答案 1 :(得分:17)
另一种选择是;
sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP
我有类似的问题,3桥接虚拟机只需要使用不同的组合访问彼此,所以我测试了这个命令,它运作良好。
编辑**
根据费尔南多的评论和这个link感叹号 (
之前!
)将放在-s
参数:
sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP
答案 2 :(得分:4)
您始终可以使用iptables删除规则。如果您有很多规则,只需使用以下命令输出它们。
iptables-save > myfile
vi
从推荐行编辑它们。只需使用“dd”删除不再需要的行。
iptables-load < myfile and you're good to go.
请记住,如果您没有配置您的操作系统以保存文件的规则,那么在您的规则将丢失的情况下加载文件。