【发布时间】:2011-11-17 09:48:04
【问题描述】:
我没用过iptables,网上的文档好像有点不透明。
我想阻止对我服务器上端口 8000 的所有请求,但来自特定 IP 地址的请求除外。如何使用 iptables 做到这一点?
【问题讨论】:
-
// , 你能分享一个不透明文档的链接吗?
我没用过iptables,网上的文档好像有点不透明。
我想阻止对我服务器上端口 8000 的所有请求,但来自特定 IP 地址的请求除外。如何使用 iptables 做到这一点?
【问题讨论】:
这个问题应该在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
【讨论】:
另一种选择是;
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
【讨论】:
!) 现在必须放在 -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