我从未使用过iptables,而且在线文档似乎有点不透明。
我想阻止对服务器上端口8000的所有请求,但来自特定IP地址的请求除外。如何使用iptables做到这一点?
Answers:
这个问题应该在服务器故障上。不过,假设您正在谈论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
另一种选择是:
sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP
我遇到了类似的问题,即3个桥接虚拟机仅需要以不同的组合相互访问,因此我已经测试了此命令,并且效果很好。
编辑**
根据Fernando的评论,此链接感叹号(
!
)将放置在-s
参数之前:
sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP
!
现在必须将感叹号()放在-s
参数:之前sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP
。
您始终可以使用iptables删除规则。如果您有很多规则,请使用以下命令将其输出。
iptables-save > myfile
vi
从推荐行进行编辑。只需使用“ dd”删除不再需要的行。
iptables-restore < myfile and you're good to go.
请记住,如果您不配置操作系统以将规则保存到文件中,然后在启动过程中加载文件,则将丢失规则。
iptables-restore < myfile
// // wiki.debian.org/iptables