# 网络端口开放说明 ***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.*** --- # 已开放的端口 当前开发与远程维护场景下,我们已开放的 **TCP** 端口如下: | **端口** | **协议(典型)** | **说明** | | --- | --- | --- | | 22 | TCP | SSH:远程安全登录、维护、调试及SCP/SFTP等文件传输。 | | 3389 | TCP | RDP:Windows远程桌面;板端常见为xrdp等服务。 | | 5900 | TCP | VNC:图形化远程桌面访问。 | # 查看当前防火墙规则 在开发板上执行: ```bash iptables-save ``` 可看到完整规则(含链策略与各条 **INPUT** 规则)。仅查看列表形式时可用: ```bash iptables -L -n -v ``` 正常情况下,**INPUT** 链的默认策略(**policy**)应为 **DROP**,并包含对 **22**、**3389**、**5900** 等端口的 **ACCEPT** 规则(具体以您设备上实际输出为准)。 示例(节选,仅供参考): ```plaintext *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** 编辑,例如: ```bash sudo vi /etc/iptables/rules.v4 sudo vi /etc/iptables/rules.v6 ``` **IPv4** 中 *\*filter* 段结构与上文示例类似:先放行已建立连接与本机回环,再按端口追加 **ACCEPT**。 ## 添加放行端口的写法(TCP) 在 ***-A INPUT -i lo -j ACCEPT*** 之后、*COMMIT* 之前,增加一行(将 ***端口号*** 换成实际端口,如 **80**、**443**): ```plaintext -A INPUT -p tcp -m tcp --dport 端口号 -j ACCEPT ``` 也可写成(与部分系统导出格式一致): ```plaintext -A INPUT -p tcp --dport 端口号 -j ACCEPT ``` ## 添加放行端口的写法(UDP) ```plaintext -A INPUT -p udp -m udp --dport 端口号 -j ACCEPT ``` ## 删除某条端口放行 在规则文件中删除对应 ***-A INPUT ... --dport端口号...*** 整行即可。保存后需重新加载服务(见下一节),规则才会长期生效。 > **注意**:请勿删除 **RELATED,ESTABLISHED** 与 **lo(回环)** 相关规则,否则可能影响正常回包与本机服务。 # iptables-restore服务 开发板默认启用 **iptables-restore.service**,用于开机从 ***rules.v4*/*****rules.v6*** 恢复规则。 ## 临时停止服务 只想临时停用(例如排查网络问题)时执行: ```bash sudo systemctl stop iptables-restore.service ``` 这是临时操作。若服务仍为 **enabled**,设备重启后会再次启动,并继续从 ***rules.v4*/*****rules.v6*** 恢复规则。 ## 禁用开机自启(重启后不自动加载规则) 若希望重启后也不自动加载规则,执行: ```bash sudo systemctl disable iptables-restore.service ``` 执行 *disable* 后,重启时该服务不会自动启动,也不会自动套用 ***rules.v4*/*****rules.v6***。 需要恢复开机自动加载时: ```bash sudo systemctl enable iptables-restore.service sudo systemctl start iptables-restore.service ``` ## 快速检查状态 ```bash systemctl is-enabled iptables-restore.service # 看是否开机自启 systemctl is-active iptables-restore.service # 看当前是否活跃 ``` > **注意**:*disable* 只影响“下次开机是否自动启动”;不会直接清空当前内核里的规则。当前规则请用 ***iptables -L -n*** 实测。 ## 修改规则文件后重新加载 修改规则文件后,可执行: ```bash sudo systemctl daemon-reload sudo systemctl restart iptables-restore.service sudo systemctl status iptables-restore.service ``` 再用 ***iptables -L -n*** 或 ***iptables-save*** 确认是否与文件一致。 若服务异常,可根据 ***systemctl status*** 与日志排查;确认 ***/etc/iptables/rules.v4*** 语法正确(尤其是每条 ***-A*** 独立一行、***\*filter*…*****COMMIT*** 成对出现)。 # 注意 - 远程维护常用放行端口:**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*** 服务为准。