Linux Server 建立连接时端口问题

Linux上Server启动后绑定、监听对应的端口,客户端建立连接时失败,但是更换端口可以正常建立连接,通常是由于端口的限制导致进入该端口的流量被限制。
在此可以使用 systemctl status firewalldsudo ufw status等命令来进行查看当前的系统使用的是哪个防火墙。当 firewalldufw 这两个高级防火墙管理工具都未安装时,系统通常会使用最底层的、经典的防火墙工具——iptables,使用 iptables的流程如下:

1、检查当前 iptables的规则

sudo iptables -L -n --line-numbers:执行命令列出当前防火墙的规则,部分内容如下:

上面的三条所对应的端口(7775到7790)可以正常接收到流量,其它的端口所接收到的流量会被转发到第四条的 KSC_PRIVATE_INPUT规则中,这条规则可能会直接拒接掉其它端口所接收到的流量,导致如法建立对应的Socket通信。
因此需要在 KSC_PRIVATE_INPUT 之上插入对应的端口许可规则。这样对应的端口接收到的流量会被KSC_PRIVATE_INPUT以上的规则所处理,不会跳转到 KSC_PRIVATE_INPUT规则中。

2、添加开放指定端口的规则

// 在INPUT链的顶部插入一条规则来允许接收 7775 端口的流量
sudo iptables -I INPUT -p tcp --dport 7775 -j ACCEPT

// 在INPUT链的顶部插入一条规则来允许 7775 到 7790 端口的 TCP 流量进入
sudo iptables -I INPUT -p tcp --dport 7775:7790 -j ACCEPT

参数解释:

  • -I INPUT: 在 INPUT 链的最顶端插入一条规则,来避免下面跳转到其它的规则中。
  • -p tcp:-p为protocol,表示指定协议为 TCP
  • --dport 7775:7790: destination port 目标端口,可以为一个,或者一个范围,如7775到7790
  • -j ACCEPT:指定动作,表示跳转到接收处

【备注】
如果需要删除对应规则,可以使用如下命令:

// 如删除 Chain INPUT 对应的第3条 7776 端口的规则,注意删除之后,序号会变化
sudo iptables -D INPUT 3

3、 永久生效

以上端口的规则设置只是临时生效,如果需要永久生效,执行如下命令:

// 安装对应工具
sudo apt install iptables-persistent
// 保存该设置
sudo netfilter-persistent save
posted @ 2025-09-15 09:57  Jeffxue  阅读(8)  评论(0)    收藏  举报