在 Linux 服务器上配置端口设置

在 Linux 服务器上配置端口设置

我正在尝试允许互联网流量7778在我的服务器上传输,但无法正确执行。可能我犯了一些新手错误。您能帮我诊断并解决问题吗?

我只是做了以下事情:

sudo iptables -A TCP -p tcp -m tcp --dport 7778 -j ACCEPT

如果我这样做iptables -S,我确实会看到附加在列表中的规则,例如:

-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
-A TCP -p tcp -m tcp --dport 80 -j ACCEPT
-A TCP -p tcp -m tcp --dport 443 -j ACCEPT
-A TCP -p tcp -m tcp --dport 7778 -j ACCEPT

但是,如果我从另一台服务器 ping 这个特定端口telnet example.com 7778,我会看到:

telnet:无法连接到远程主机:连接被拒绝

我还能在这里做什么?端口80443并且22工作正常,仅供参考。


注意:我的服务器使用 Azure 基础架构(经典 VM)。我采取的额外步骤是endpoint在 Azure 门户中添加端口 7778。因此涵盖了这部分。

答案1

通过使用-A交换机,您已将规则添加到链的末尾。这几乎肯定会将其放置在丢弃/阻止数据包的规则之后。

当 iptables/netfilter 检查应如何处理数据包时,第一个匹配的数据包将获胜。在您的情况下,它可能会匹配如下行,-A INPUT -j REJECT --reject-with icmp-port-unreachable这将在匹配您的允许消息之前导致出现“连接被拒绝”消息。

解决方案是将规则插入-I到 INPUT 链中的合适位置。

答案2

根据错误日志,似乎您的服务没有监听。

为了更有效地解决此问题,我建议按以下方式检查:

1.检查虚拟机中的服务。

netstat -ant|grep 7778

请确保端口正在监听。

  1. 使用本地主机 IP 进行测试

远程登录 127.0.0.1 7778

据我所知,如果您的防火墙缺少一些配置,您将收到以下错误。

telnet:无法连接到远程主机:连接超时

相关内容