网络端口服务控制

已开放的端口

当前开发与远程维护场景下,我们已开放的 TCP 端口如下:

端口 协议(典型) 说明
22 TCP SSH:远程安全登录、维护、调试及 SCP/SFTP 等文件传输。
3389 TCP RDP:Windows 远程桌面;板端常见为 xrdp 等服务。
5900 TCP VNC:图形化远程桌面访问。

查看当前防火墙规则

在开发板上执行:

iptables-save

可看到完整规则(含链策略与各条 INPUT 规则)。仅查看列表形式时可用:

iptables -L -n -v

正常情况下,INPUT 链的默认策略(policy)应为 DROP,并包含对 2233895900 等端口的 ACCEPT 规则(具体以您设备上实际输出为准)。

示例(节选,仅供参考):

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3389 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5900 -j ACCEPT
COMMIT

增添端口方法

开机加载的规则通常保存在:

  • IPv4/etc/iptables/rules.v4
  • IPv6/etc/iptables/rules.v6

使用 root 编辑,例如:

sudo vi /etc/iptables/rules.v4
sudo vi /etc/iptables/rules.v6

IPv4*filter 段结构与上文示例类似:先放行已建立连接与本机回环,再按端口追加 ACCEPT

添加放行端口的写法(TCP)

-A INPUT -i lo -j ACCEPT 之后、COMMIT 之前,增加一行(将 端口号 换成实际端口,如 80443):

-A INPUT -p tcp -m tcp --dport 端口号 -j ACCEPT

也可写成(与部分系统导出格式一致):

-A INPUT -p tcp --dport 端口号 -j ACCEPT

添加放行端口的写法(UDP)

-A INPUT -p udp -m udp --dport 端口号 -j ACCEPT

删除某条端口放行

在规则文件中删除对应 -A INPUT ... --dport 端口号 ... 整行即可。保存后需重新加载服务(见下一节),规则才会长期生效。

注意:请勿删除 RELATED,ESTABLISHEDlo(回环) 相关规则,否则可能影响正常回包与本机服务。

iptables-restore 服务

开发板默认启用 iptables-restore.service,用于开机从 rules.v4 / rules.v6 恢复规则。

临时停止服务

只想临时停用(例如排查网络问题)时执行:

sudo systemctl stop iptables-restore.service

这是临时操作。若服务仍为 enabled,设备重启后会再次启动,并继续从 rules.v4 / rules.v6 恢复规则。

禁用开机自启(重启后不自动加载规则)

若希望重启后也不自动加载规则,执行:

sudo systemctl disable iptables-restore.service

执行 disable 后,重启时该服务不会自动启动,也不会自动套用 rules.v4 / rules.v6

需要恢复开机自动加载时:

sudo systemctl enable iptables-restore.service
sudo systemctl start iptables-restore.service

快速检查状态

systemctl is-enabled iptables-restore.service  # 看是否开机自启
systemctl is-active iptables-restore.service   # 看当前是否活跃

注意disable 只影响“下次开机是否自动启动”;不会直接清空当前内核里的规则。当前规则请用 iptables -L -n 实测。

修改规则文件后重新加载

修改规则文件后,可执行:

sudo systemctl daemon-reload
sudo systemctl restart iptables-restore.service
sudo systemctl status iptables-restore.service

再用 iptables -L -niptables-save 确认是否与文件一致。

若服务异常,可根据 systemctl status 与日志排查;确认 /etc/iptables/rules.v4 语法正确(尤其是每条 -A 独立一行、*filterCOMMIT 成对出现)。

注意

  • 远程维护常用放行端口:22(SSH)3389(RDP)5900(VNC),以设备上 iptables-save 实际输出为准。
  • 持久化编辑 /etc/iptables/rules.v4(及需要的 rules.v6),按模板增删 --dport 行。
  • 修改后执行 systemctl restart iptables-restore.service,并用 iptables -L -n 验证。
  • systemctl stop iptables-restore.service 仅为临时手段;重启后仍会按规则文件加载。长期策略以改文件并 restart 服务为准。