我在bash中运行sudo iptables -A INPUT -p tcp -m tcp --dport 2222 -j ACCEPT,然后尝试通过同一局域网/子网上的另一台计算机通过端口2222与PuTTY连接到该机器,但没有工作。
也许我需要在添加规则以使其生效后重新启动iptable?如果是这样的话,我怎么做呢?
下面是iptables -S的输出:
-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的输出:
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- anywhere anywhere tcp dpt:2222发布于 2021-08-22 16:55:06
是的,通过iptables命令添加规则立即生效。
您可能希望为端口添加一个接受规则,因为您希望覆盖阻塞所有或大多数端口的规则。
但是,您已经在-A中添加了规则,这将将规则附加到表中。因为您已经有了一个阻塞规则(使用了DROP或rule ),所以将在该规则之后添加新规则,从而使其无效。
如果希望这样做,需要在阻塞规则之前插入规则(-I #),或者将规则添加到配置文件中的正确位置,然后重新加载所有规则。(或者用ufw或firewalld之类的工具来帮你做这件事)。您可以使用iptables --line-numbers -L INPUT获得一个有编号的规则列表,并在阻塞规则的位置或之前插入新规则。
如果您有阻塞规则的假设是错误的,那么您需要返回并检查是否有任何端口打开。您可以使用netstat -nl | grep 2222或ss -nlt | grep 2222,如果没有列出它,那么端口上就没有监听功能。
从您添加到问题的输出中,输入表基本上是空的(除了您的接受规则),-P INPUT ACCEPT表示接受任何与输入表中的规则不匹配的内容。
https://askubuntu.com/questions/1359476
复制相似问题