iptables 阻止对端口 8000 的访问,但 IP 地址除外
Posted
技术标签:
【中文标题】iptables 阻止对端口 8000 的访问,但 IP 地址除外【英文标题】:iptables block access to port 8000 except from IP address 【发布时间】:2011-11-17 09:48:04 【问题描述】:我没用过iptables,网上的文档好像有点不透明。
我想阻止对我服务器上端口 8000 的所有请求,但来自特定 IP 地址的请求除外。如何使用 iptables 做到这一点?
【问题讨论】:
// , 你能分享一个不透明文档的链接吗? 【参考方案1】:这个问题应该在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
【讨论】:
您将如何扭转您在此处设置的 IP/端口限制? (以防我以后想撤消此操作) 测试人员,要删除东西,请参考这个 - ***.com/questions/10197405/… 我知道这是比较老的,这完全符合我的需要。既然答案已经被接受,那么你如何对特定的 IP 范围做同样的事情呢?谢谢! :) @JiegoCordoviz 您可以为源地址添加掩码:“-s 1.2.3.0/24”将接受以“1.2.3.”开头的任何内容。如果您有范围并想计算出网络掩码,请搜索“网络掩码计算器”。【参考方案2】:另一种选择是;
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
。
我不确定感叹号在这里有什么作用。它比公认的答案更好吗?
@aexl 除了单行之外几乎相同【参考方案3】:
您始终可以使用 iptables 删除规则。如果您有很多规则,只需使用以下命令将它们输出即可。
iptables-save > myfile
vi
从命令行编辑它们。只需使用“dd”删除您不再需要的行。
iptables-restore < myfile and you're good to go.
请记住,如果您未将操作系统配置为将规则保存到文件中,然后在引导期间加载文件,您的规则将会丢失。
【讨论】:
在 Debian 上没有 iptables-load,但是 iptables-restoreiptables-restore < myfile
// wiki.debian.org/iptables以上是关于iptables 阻止对端口 8000 的访问,但 IP 地址除外的主要内容,如果未能解决你的问题,请参考以下文章
centOS外部浏览器无法访问tomcat8000端口解决办法