除IP地址外,iptables阻止访问端口8000

wil*_*ill 74 firewall iptables

我从来没有使用iptables,在线文档似乎有点不透明.

我想阻止我的服务器上的所有端口8000请求,除了那些来自特定IP地址的请求.我如何使用iptables做到这一点?

Jon*_*ght 134

这个问题应该是服务器故障.然而,假设您正在谈论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
Run Code Online (Sandbox Code Playgroud)

  • 测试员,删除东西,参考这个 - http://stackoverflow.com/questions/10197405/iptables-remove-specific-rules (4认同)
  • 你将如何扭转你在这里设置的ip/port限制?(如果我想在将来撤消这个) (3认同)
  • 我知道这是相对陈旧的,这完全固定了我需要的东西.既然答案已被接受,那么你如何对特定的IP范围做同样的事情呢?谢谢!:) (2认同)

HRg*_*ger 17

另一种选择是;

sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP
Run Code Online (Sandbox Code Playgroud)

我有类似的问题,3桥接虚拟机只需要使用不同的组合访问彼此,所以我测试了这个命令,它运作良好.

编辑**

根据费尔南多的评论和这个链接感叹号(!)将放在比-s参数之前:

sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP
Run Code Online (Sandbox Code Playgroud)


Rec*_*oin 5

您始终可以使用iptables删除规则。如果您有很多规则,只需使用以下命令将其输出即可。

iptables-save > myfile
Run Code Online (Sandbox Code Playgroud)

vi从推荐行进行编辑。只需使用“ dd”删除不再需要的行。

iptables-restore < myfile and you're good to go.  
Run Code Online (Sandbox Code Playgroud)

请记住,如果您不配置操作系统以将规则保存到文件中,然后在启动过程中加载文件,则将丢失规则。

  • 在Debian上没有iptables-load,但是iptables-restore`iptables-restore &lt;myfile` // https://wiki.debian.org/iptables (3认同)