📌 写在前面

在嵌入式开发中,经常遇到这样的场景:手头的RK3588开发板需要通过网线直连笔记本电脑,然后借助笔记本的Wi-Fi网络上网。理论上这是一个简单的网络共享问题,但在实际配置中,很多人会遇到“显示已连接却无法上网”的困境。

本文将从零开始,完整记录整个排查和解决过程,涵盖网络原理分析、Windows配置、Linux端调试、常见问题及解决方案,帮助读者彻底掌握这类问题的解决方法。


一、问题现象描述

1.1 硬件环境

  • 开发板:RK3588(运行Linux系统)

  • 笔记本:Windows 10/11(通过Wi-Fi上网)

  • 连接方式:标准网线直连笔记本网口

1.2 现象

  • 笔记本网络图标显示“已连接”

  • RK3588执行 ifconfig 能看到 eth0 接口

  • 但RK3588无法ping通任何外网IP或域名

1.3 典型错误表现

# RK3588端
ping 8.8.8.8
# 返回:Destination Host Unreachable

ping baidu.com
# 返回:ping: baidu.com: Temporary failure in name resolution

二、网络拓扑分析

2.1 理想的网络路径

RK3588 (eth0) 
    ↓ (网线)
笔记本有线网卡 (以太网)
    ↓ (Windows网络共享/转发)
笔记本无线网卡 (WLAN)
    ↓ (无线路由器)
Internet

2.2 实际遇到的问题

在排查过程中,我们发现RK3588和笔记本之间连最基本的通信都无法建立,更不用说上网了。

通过 ipconfig 和 ifconfig 分析发现:

  • 笔记本有线网卡:获取了 169.254.x.x(无效的链路本地地址)

  • RK3588:获取了 192.168.1.55(来自路由器的DHCP)

  • 结论:两个设备不在同一个网段,无法通信


三、完整解决步骤

第一阶段:打通物理链路(让笔记本和RK3588能互相ping通)

步骤1:在RK3588上查看当前网络状态
# 查看IP地址
ifconfig

# 查看路由表
route -n

# 查看DNS配置
cat /etc/resolv.conf

预期输出示例:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.xx  netmask 255.255.255.0  broadcast 192.168.1.255
步骤2:在笔记本上手动设置有线网卡IP(关键步骤)

由于自动获取IP失败,我们需要手动为笔记本的有线网卡配置静态IP,使其与RK3588在同一网段。

Windows操作:

  1. 打开“控制面板” → “网络和共享中心” → “更改适配器设置”

  2. 找到连接RK3588的“以太网”适配器(通过拔插网线确定)

  3. 右键 → “属性” → 双击“Internet协议版本4 (TCP/IPv4)”

  4. 选择“使用下面的IP地址”,填写:

    • IP地址192.168.1.100 (与RK3588的192.168.1.xx同网段,不冲突即可)

    • 子网掩码255.255.255.0

    • 默认网关192.168.1.1 (你的路由器地址)

    • DNS服务器192.168.1.1 或 8.8.8.8

  5. 点击“确定”保存

步骤3:测试双向通信

在笔记本上(PowerShell):

ping 192.168.1.xx -t

在RK3588上:

ping 192.168.1.100 -c 10

成功标志:

来自 192.168.1.xx 的回复: 字节=32 时间=1ms TTL=64

⚠️ 如果出现单向不通(笔记本能ping通开发板,但开发板ping不通笔记本),请检查Windows防火墙:

  1. 打开“高级安全Windows Defender防火墙”

  2. 添加“入站规则” → 自定义 → 协议类型选择“ICMPv4” → 允许连接


第二阶段:配置Windows Internet连接共享

步骤4:开启网络共享功能

前提条件: 笔记本和RK3588能够互相ping通。

  1. 打开“网络连接”窗口(ncpa.cpl

  2. 找到正在上网的适配器(通常是 WLAN),右键 → “属性”

  3. 切换到“共享”选项卡

  4. 勾选“允许其他网络用户通过此计算机的Internet连接来连接(N)”

  5. 在“家庭网络连接”下拉菜单中,选择连接RK3588的适配器(应为“以太网”)

  6. 点击“确定”

如果“以太网”不在下拉列表中:

  • 方法一:将“以太网”的网络配置文件改为“专用网络”

    • 设置 → 网络和Internet → 以太网 → 网络配置文件 → 专用

  • 方法二:禁用并重新启用“以太网”适配器

  • 方法三:暂时禁用VMware、VirtualBox等虚拟网卡

📌 注意: 开启共享后,Windows会自动将“以太网”的IP改为 192.168.137.1,这是正常现象。

步骤5:在RK3588上重新获取IP
# 释放旧IP
sudo dhclient -r eth0

# 获取新IP(从Windows的DHCP服务)
sudo dhclient eth0

# 查看新IP(应该是192.168.137.x网段)
ifconfig eth0
步骤6:验证上网功能
# 1. 测试网关连通性
ping 192.168.137.1

# 2. 测试外网IP
ping 8.8.8.8

# 3. 测试域名解析
ping baidu.com

# 4. 如果DNS有问题,临时修改
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

成功标志:

64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=15.2 ms

四、备用方案:使用网络桥接

如果Internet连接共享始终无法配置成功,可以使用网桥模式作为替代方案。

操作步骤:

  1. 在“网络连接”窗口中,按住Ctrl键,同时选中 WLAN 和 以太网

  2. 右键点击选中的任意一个适配器,选择 “桥接”

  3. Windows会自动创建“网桥”适配器

  4. 等待片刻,RK3588会自动获取IP(与笔记本Wi-Fi同网段)

  5. 测试上网:

sudo dhclient eth0
ping 8.8.8.8

桥接模式的优缺点:

  • ✅ 配置简单,无需手动设置IP

  • ✅ 开发板直接暴露在局域网中,方便SSH访问

  • ❌ 需要占用笔记本的ARP表项

  • ❌ 某些校园网/企业网环境下可能受限


五、常见问题及解决方案

Q1:笔记本手动设置IP后,仍然ping不通RK3588?

可能原因及解决方法:

  1. 物理连接问题:更换一根已知正常的网线测试

  2. 防火墙阻挡:暂时关闭Windows防火墙测试

  3. 虚拟网卡干扰:禁用VMware、Hyper-V等虚拟网卡

  4. 网卡驱动问题:在设备管理器中更新网卡驱动

Q2:开启共享后,RK3588获取不到IP(一直显示169.254.x.x)?

解决方法:

# 在RK3588上手动释放并重新获取
sudo dhclient -r eth0
sudo dhclient eth0

# 如果还是不行,尝试重启网络服务
sudo systemctl restart networking

Q3:能ping通8.8.8.8,但无法ping通域名?

这是DNS问题,解决方法:

# 临时解决
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

# 永久解决(防止重启后失效)
sudo bash -c 'echo "nameserver 8.8.8.8" >> /etc/resolv.conf.head'

Q4:笔记本重启后,RK3588又无法上网了?

解决方法:

  1. 检查Windows共享设置是否还生效

  2. 在RK3588上重新执行 dhclient eth0

  3. 如果仍不行,重复步骤2-3重新配置

Q5:为什么不用路由器直接连接?

实际开发中的限制:

  • 办公环境可能没有多余的路由器端口

  • 出差/现场调试时只有笔记本可用

  • 需要隔离开发板与公司内网(避免IP冲突)

  • 方便抓包分析网络协议


六、原理深度解析

6.1 为什么需要手动设置IP?

当两台设备直连时,如果网络中没有DHCP服务器,它们会自动生成 169.254.x.x 的APIPA地址(Automatic Private IP Addressing)。但这个地址段通常无法相互通信,需要手动配置到同一网段。

6.2 Internet连接共享的工作原理

Windows的ICS(Internet Connection Sharing)相当于一个简化的NAT路由器:

  1. 在共享网卡(有线)上启动DHCP服务,分配 192.168.137.x 的IP

  2. 将来自有线网卡的数据包进行源地址转换(SNAT),通过无线网卡转发出去

  3. 自动添加路由表和防火墙规则

6.3 网桥模式的工作原理

网桥工作在数据链路层(OSI第二层),相当于用软件实现了一个二层交换机:

  1. 将两个物理网卡绑定到一个逻辑网桥

  2. 根据MAC地址表转发数据帧

  3. 开发板直接从上级路由器获取IP,笔记本仅做透明转发


七、完整命令速查表

Windows端(以管理员身份运行PowerShell)

# 查看网络适配器状态
ipconfig /all

# 手动设置有线网卡IP
netsh interface ip set address "以太网" static 192.168.1.100 255.255.255.0 192.168.1.1

# 设置为自动获取IP
netsh interface ip set address "以太网" dhcp

# 启用IP转发(需重启)
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v IPEnableRouter /t REG_DWORD /d 1 /f

# 重置网络栈
netsh winsock reset
netsh int ip reset

# 清除ARP缓存
arp -d *

RK3588端(Linux)

# 查看网络接口
ifconfig -a
ip addr show

# 手动设置IP
sudo ifconfig eth0 192.168.1.xx netmask 255.255.255.0 up

# DHCP获取IP
sudo dhclient eth0
# 或
sudo udhcpc -i eth0

# 添加默认网关
sudo route add default gw 192.168.1.1

# 查看路由表
route -n
ip route show

# 测试连通性
ping -c 4 192.168.1.1
ping -c 4 8.8.8.8
ping -c 4 baidu.com

# DNS测试
nslookup baidu.com
dig baidu.com

# 抓包分析
sudo tcpdump -i eth0 -n icmp

八、总结与建议

8.1 核心要点回顾

  1. 物理层打通是基础:确保笔记本和开发板能互相ping通

  2. 手动IP配置是关键:不要依赖自动获取,主动设置到同一网段

  3. Windows共享是桥梁:ICS或网桥二选一即可

  4. 防火墙是常见障碍:测试阶段可以暂时关闭

8.2 最佳实践建议

  1. 固定RK3588的IP:避免每次重启后重新配置

    # 编辑 /etc/network/interfaces
    auto eth0
    iface eth0 inet static
        address 192.168.137.xx
        netmask 255.255.255.0
        gateway 192.168.137.1
  2. 保存笔记本的配置:创建批处理脚本快速配置

    @echo off
    netsh interface ip set address "以太网" static 192.168.1.100 255.255.255.0 192.168.1.1
    echo 请手动开启Internet连接共享
    pause
  3. 使用SSH远程调试:网络打通后,建议通过SSH连接开发板

    ssh root@192.168.137.xx

8.3 适用场景扩展

本文的方法不仅适用于RK3588,也适用于:

  • Raspberry Pi(树莓派)

  • Jetson Nano/TX2/NX

  • 其他任何运行Linux的ARM/x86开发板

  • 甚至可以通过USB网卡实现类似功能


九、参考资料

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐