现象描述
使用网线直连 RK3588 开发板与开发主机(Windows)。通常情况下,通过设置静态 IP 或 Windows 网络共享(ICS),我们可以实现 SSH 远程登录。
但这次遇到一个奇怪的现象:**主机可以上网,SSH 也能连接,但开发板无法访问外网(Ping 不通 114.114.114.114)。
共享网络配置异常
可以看到这里是能显示出板子对应的网络用户的。
但共享网络配置里的下拉框直接消失了,识别不出板子对应的网络用户。
连接状态矛盾
更离谱的是,这种情况下我还能SSH登录进板子。
但是板子连接不了互联网。
最后是用第二阶段第五步修改注册表解决的,当然也有可能是前面的步骤生效具有滞后性,只不过正好在我修改完注册表之后恢复正常了,所以依旧是很玄学的问题。
- 讨厌死Windows 11这些玄学掉链子的问题了,以前用Windows 10用的不挺好吗。
基础链路确认
在进行高级配置前,必须确保物理链路和基础通信正常。
- 物理连接:网线连接稳固,网口灯正常闪烁。
- SSH 通信:主机能通过
ssh登录板子,说明二者处于同一子网。 - 配置背景:主机 IP 通常为
192.168.137.1,开发板 IP 设为192.168.137.x。
第一阶段:开发板侧自查
确认默认网关 (Default Gateway)
即使 SSH 能通,如果开发板没有设置默认网关,它产生的公网流量就不知道往哪发。
执行命令:
1 | route -n |
正常输出应包含:
Destination为0.0.0.0的记录,且Gateway指向主机的 IP(如192.168.137.1)。- 若缺失,请执行:
sudo route add default gw 192.168.137.1。
第二阶段:主机侧深度排查(核心难点)
当开发板 ping 114.114.114.114 丢包率为 100% 时,问题通常在于 Windows 拒绝转发流量。请按以下顺序排查:
第一步:重新触发 ICS 共享开关
Windows 的“Internet 连接共享 (ICS)”经常出现界面显示开启但实际内核未转发的“假死”状态。
- 进入 控制面板 > 网络和共享中心 > 更改适配器设置。
- 右键点击已联网网卡(如 Wi-Fi) -> 属性 -> 共享。
- 取消勾选“允许其他网络用户…连接” -> 确定。
- 重新勾选共享,并在下拉菜单选中连接开发板的网卡 -> 确定。
第二步:排除 VPN 与代理软件冲突
如果你主机运行着 Clash, V2Ray, 或公司专用 VPN:
- 冲突原理:这类软件会可能会修改系统路由表或接管网口流量,导致 Windows 原生的 ICS 转发机制失效。
- 操作:**必须完全退出(Quit)**这些代理软件,然后重新测试。
第三步:关闭 Windows 防火墙(测试用)
防火墙常会拦截这种“从以太网口进入、试图从 Wi-Fi 出去”的流量。
- 进入 Windows 安全中心 > 防火墙和网络保护。
- 暂时关闭 “公用网络” 和 “专用网络” 的防火墙。
- 如果关闭后开发板能 Ping 通外网,说明是防火墙拦截,后续可针对性添加规则。
第四步:检查 ICS 服务状态
如果服务本身没启动,任何界面配置都是徒劳。
- 按下
Win + R,输入services.msc。 - 找到 Internet Connection Sharing (ICS) 服务。
- 确保状态为 “正在运行”。建议将其启动类型设为 “自动”。
第五步:进阶——修改注册表强制开启转发
如果以上方法均无效,可以从系统底层强制开启 IP 路由转发功能。
- 按下
Win + R输入regedit。 - 导航至:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters - 查找
IPEnableRouter项,双击将其值从0修改为1。 - 注意:修改此项后通常需要重启电脑生效。
第三阶段:DNS 域名解析排查
如果 ping 114.114.114.114 通了,但 ping baidu.com 报错,则是 DNS 问题。
操作步骤:
- 在开发板执行:
sudo nano /etc/resolv.conf - 添加以下公共 DNS 服务器:
1
2nameserver 114.114.114.114
nameserver 8.8.8.8
总结
| 检查项 | 现象 | 结论与对策 |
|---|---|---|
| 路由表 | 无 0.0.0.0 路由 |
执行 route add default 指向主机 IP |
| VPN/代理 | 开启中 | 必须退出,VPN 会劫持 ICS 路由 |
| 防火墙 | 开启中 | 尝试关闭,防止转发包被拦截 |
| ICS 服务 | 已停止 | 在 services.msc 中启动并设为自动 |
| 注册表 | IPEnableRouter 为 0 |
改为 1 并重启,强制开启内核转发 |
| DNS | 无法解析域名 | 修改 /etc/resolv.conf |