首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向iptable添加规则是否意味着它立即生效?

向iptable添加规则是否意味着它立即生效?
EN

Ask Ubuntu用户
提问于 2021-08-22 14:21:00
回答 1查看 3.4K关注 0票数 1

我在bash中运行sudo iptables -A INPUT -p tcp -m tcp --dport 2222 -j ACCEPT,然后尝试通过同一局域网/子网上的另一台计算机通过端口2222与PuTTY连接到该机器,但没有工作。

也许我需要在添加规则以使其生效后重新启动iptable?如果是这样的话,我怎么做呢?

下面是iptables -S的输出:

代码语言:javascript
复制
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A INPUT -p tcp -m tcp --dport 2222 -j ACCEPT
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-4f5770ea8905 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-4f5770ea8905 -j DOCKER
-A FORWARD -i br-4f5770ea8905 ! -o br-4f5770ea8905 -j ACCEPT
-A FORWARD -i br-4f5770ea8905 -o br-4f5770ea8905 -j ACCEPT
-A DOCKER -d 172.18.0.2/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 3306 -j ACCEPT
-A DOCKER -d 172.18.0.3/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 8080 -j ACCEPT
-A DOCKER -d 172.18.0.3/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 443 -j ACCEPT
-A DOCKER -d 172.18.0.7/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 6379 -j ACCEPT
-A DOCKER -d 172.18.0.8/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 3306 -j ACCEPT
-A DOCKER -d 172.18.0.10/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 3306 -j ACCEPT
-A DOCKER -d 172.18.0.3/32 ! -i br-4f5770ea8905 -o br-4f5770ea8905 -p tcp -m tcp --dport 80 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-4f5770ea8905 ! -o br-4f5770ea8905 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-4f5770ea8905 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN

下面是sudo iptables --line-numbers -L INPUT的输出:

代码语言:javascript
复制
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:2222
EN

回答 1

Ask Ubuntu用户

发布于 2021-08-22 16:55:06

是的,通过iptables命令添加规则立即生效。

您可能希望为端口添加一个接受规则,因为您希望覆盖阻塞所有或大多数端口的规则。

但是,您已经在-A中添加了规则,这将将规则附加到表中。因为您已经有了一个阻塞规则(使用了DROP或rule ),所以将在该规则之后添加新规则,从而使其无效。

如果希望这样做,需要在阻塞规则之前插入规则(-I #),或者将规则添加到配置文件中的正确位置,然后重新加载所有规则。(或者用ufw或firewalld之类的工具来帮你做这件事)。您可以使用iptables --line-numbers -L INPUT获得一个有编号的规则列表,并在阻塞规则的位置或之前插入新规则。

如果您有阻塞规则的假设是错误的,那么您需要返回并检查是否有任何端口打开。您可以使用netstat -nl | grep 2222ss -nlt | grep 2222,如果没有列出它,那么端口上就没有监听功能。

从您添加到问题的输出中,输入表基本上是空的(除了您的接受规则),-P INPUT ACCEPT表示接受任何与输入表中的规则不匹配的内容。

票数 6
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1359476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档