Fedora 24:从服务器扫描时端口显示为打开,但从外部映射时关闭

Fedora 24:从服务器扫描时端口显示为打开,但从外部映射时关闭

我有一台 Fedora 24 服务器,为 Angular2 项目提供服务。一旦服务启动,3000Angular2就会自动打开端口。3001但是,虽然运行nmap localhost显示端口已打开,但当我从远程计算机运行 nmap 时,这些端口显示为关闭。

也许有一个iptables设置可以用来公开打开这些端口?或者类似的东西?

我尝试运行:

iptables -A OUTPUT -p tcp -m tcp --dport 3000 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 3001 -j ACCEPT

但这没有帮助,从外部扫描时端口保持关闭状态,并且我无法查看提供的内容(内部请求功能正常)。

输出netstat --an | egrep "3000|3001"

tcp6       0      0 :::3000                 :::*                    LISTEN
tcp6       0      0 :::3001                 :::*                    LISTEN`

curl服务器的“外部”IP 地址在内部工作正常,但在从其他计算机运行时将无法工作。

答案1

最后的解决方案是运行以​​下命令:

firewall-cmd --zone=FedoraServer --add-port=3000/tcp

似乎在 Fedora 24 上,或者在 linodes 上设置的 Fedora 24 上,iptables 没有 TCP 条目。

答案2

从描述来看,问题似乎是服务器的防火墙阻止了对 Angular 开发端口的传入请求。防火墙配置可能非常简单,也可能极其复杂,请小心并确保您了解自己在做什么。

话虽这么说,最可能的解决方案是打开防火墙中的端口,正如您正确假设的那样。必须允许入站和出站流量通过,客户端才能使用它。出站流量通常未经过滤,因此您可以保持原样。只需OUTPUT更改INPUTiptables 命令即可使其正常工作。

如果这不起作用(或者在尝试上述操作之前更好),请查看输出iptables -nvL --line-numbers并检查与您要添加的规则类似的规则。在上方或下方插入您的规则,以尽量减少破坏任何内容的风险。

这是我使用的一台机器上的输出,举例说明了我的意思:

Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1    5608K  815M ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
2    3010K  621M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
3    68754 3002K DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
4    14095 1083K ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
5     397K   21M TCP        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate NEW
6    45083 8704K UDP        udp  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate NEW
7     128K 6265K REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
8    45085 8707K REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
9        1    52 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 4647K packets, 1421M bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain TCP (1 references)
num   pkts bytes target     prot opt in     out     source               destination         
1    56599 3172K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
2    54495 2814K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
3     158K 9164K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443

Chain UDP (1 references)
num   pkts bytes target     prot opt in     out     source               destination         

这仍然相当简单,但仅仅向INPUT链添加新规则并没有帮助。与您想要的规则类似的规则在TCP链中,因此我们将在其中添加规则:

iptables -A TCP -p tcp --dport 3000 -j ACCEPT

如果所有这些仍然没有帮助,请检查外部计算机是否使用 IPv6 访问服务器并进行ip6tables相应的使用。

相关内容