iptables 开放端口不适用于 flask 教程(端口 5000)

iptables 开放端口不适用于 flask 教程(端口 5000)

我正在尝试用 python 做 flask 教程,它在端口 5000 上运行服务器。当我停止 iptables 时,我可以连接到我的(远程)服务器,但是当我运行 iptables 时,连接超时。

我不知道哪条规则阻碍了我的连接。

# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:commplex-main
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:commplex-main

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:distinct
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

因此,当我停止 iptables 时,我可以连接。当它运行时,我无法连接。这表明是防火墙在阻止,对吗?

有什么想法从哪里开始吗?

答案1

看起来你用了类似的东西

iptables -A INPUT ...

将端口 5000 的规则添加到防火墙配置中。

请注意,INPUT 链所做的第一件事是将所有数据包发送到 RH-Firewall-1-INPUT 链。最后一件事是

REJECT     all  --  anywhere     anywhere     reject-with icmp-host-prohibited

防火墙按照列表中出现的顺序处理数据包并执行规则,第一个获胜。这意味着数据包永远不会到达您的

tcp  --  anywhere             anywhere            state NEW tcp dpt:commplex-main
tcp  --  anywhere             anywhere            tcp dpt:commplex-main

INPUT 链末尾的规则。

您需要使用 -I(插入)选项将端口 5000 的规则添加到 INPUT 或 RH-Firewall-1-INPUT 链

iptables -I RH-Firewall-1-INPUT ...

因为使用 -A(添加)会将规则放在链的末尾,而 -I 会将它们放在提供的行号之后,如果没有提供 --lune-number,则放在第 1 行。

相关内容