1. 为什么我要折腾网线共享这件事
Jetson Nano 这块板子,玩过的人都知道,算力在这个价位里算是相当能打,但它的无线网卡——准确说,是很多批次压根没焊无线模块,或者焊了也只支持特定区域——经常让人抓狂。我第一次拿到手的时候,满心欢喜插上电源,接上 HDMI,结果发现系统里根本搜不到任何 Wi-Fi 信号。当时以为是驱动问题,折腾了半天iwconfig、nmcli,最后拆开散热片一看,好家伙,M.2 插槽上那个无线模块的位置是空的。
这不是个例。Jetson Nano 的早期版本和部分二手渠道流出的板子,为了控制成本,无线模块经常被阉割掉。你手里如果正好是这么一块,那摆在面前的路无非几条:买个 USB 无线网卡、插网线、或者用串口登录。USB 无线网卡是最省事的,但得额外花钱,而且某些廉价芯片在 ARM 架构下的驱动支持一言难尽。串口登录能进系统,但没法上网装包,基本等于半残。最稳妥、最不挑硬件、成本最低的方案,就是用一根网线把笔记本的网络共享给 Jetson Nano。
这个方案的核心逻辑特别简单:你的笔记本已经通过 Wi-Fi 连上了互联网,现在把笔记本的以太网口和 Jetson Nano 的网口用一根普通网线直连,然后在笔记本上开启网络共享,让 Nano 通过笔记本这个“二传手”访问外网。整个过程不需要路由器,不需要交换机,不需要额外的 USB 网卡,一根网线加五分钟配置就能搞定。
我前后在不同系统组合下试过很多次:Windows 笔记本 + Ubuntu 系统的 Nano、macOS 笔记本 + Ubuntu 系统的 Nano、Ubuntu 笔记本 + Ubuntu 系统的 Nano。每种组合的配置细节略有不同,但核心思路完全一致。下面我把这套流程拆开揉碎,从原理到实操,从避坑到排查,一次性讲清楚。不管你是刚拿到板子的新手,还是已经折腾过几轮的老玩家,应该都能从里面找到能直接抄作业的东西。
注意:本文所有操作均基于本地局域网环境,不涉及任何外部网络穿透或代理配置,纯粹是物理网线直连场景下的网络共享。
2. 网络共享的底层逻辑与方案选型
2.1 为什么网线直连能共享网络
很多人第一次听到“网线共享网络”会觉得有点绕:笔记本自己都是靠 Wi-Fi 上网的,怎么还能通过网线把网络分出去?这不会冲突吗?
其实一点都不冲突。你可以把笔记本想象成一个双面插座:一面插着 Wi-Fi 这个“电源”,另一面插着网线这个“输出口”。操作系统内部有一个叫IP 转发和网络地址转换的机制,它会把从 Wi-Fi 进来的数据包,经过地址转换后从网线口送出去,反过来也一样。对于 Jetson Nano 来说,它看到的只是“我的网线口连着一个能上网的设备”,至于这个设备本身是怎么上网的,Nano 并不关心。
这里涉及两个关键概念:
- IP 转发:让笔记本愿意把来自 Nano 的数据包转发到 Wi-Fi 接口,而不是直接丢弃。
- NAT(网络地址转换):把 Nano 的私有 IP 地址转换成笔记本 Wi-Fi 接口的地址,这样外部网络才能正确回包。
在 Windows 上,这两件事被封装成了一个叫“Internet 连接共享”的开关,你勾一下就行。在 Linux 和 macOS 上,需要手动配置或者用几条命令搞定。理解了这一层,后面不管遇到什么系统,你都能举一反三。
2.2 三种系统组合的选型对比
我实际用过的组合有三种,各自的配置难度和稳定性有差异,先给一个直观的对比:
| 笔记本系统 | 配置方式 | 难度 | 稳定性 | 适用场景 |
|---|---|---|---|---|
| Windows 10/11 | 图形界面勾选共享 | 极低 | 高 | 新手首选,一次配置长期可用 |
| Ubuntu 20.04+ | 命令行配置 NAT | 中等 | 高 | 已有 Linux 使用经验 |
| macOS | 系统偏好设置共享 | 低 | 中 | Mac 用户,偶尔需要重配 |
Windows 的方案最省心,因为微软把 ICS(Internet Connection Sharing)做成了图形化开关,勾选后自动分配 IP 段、自动开启 NAT,你几乎不用碰命令行。Ubuntu 的方案最灵活,但需要手动写 iptables 规则和配置 dhcp 或者静态 IP。macOS 的方案介于两者之间,图形界面能开共享,但有时候需要手动确认网线口的服务顺序。
我个人的建议是:如果你手头有 Windows 笔记本,优先用 Windows 来共享,省下来的时间可以多跑几个推理 demo。如果只有 Linux 笔记本,那也不难,跟着下面的步骤走就行。
2.3 网线选择:直连线和交叉线的误区
这里必须澄清一个流传很广的误区:很多人说“两台电脑直连必须用交叉线”。这个说法在十几年前是对的,那时候网卡不支持自动翻转。但现在,几乎所有千兆网卡都支持Auto-MDI/MDIX功能,会自动识别线序并调整收发。Jetson Nano 的网口和现代笔记本的网口都支持这个特性,所以你用普通的直通网线就能直接连,不需要专门去做交叉线。
我自己实测过:用一根普通的超五类直通网线,Windows 笔记本和 Jetson Nano 直连,链路层直接协商成功,没有任何问题。如果你手头只有交叉线,也能用,同样没问题。唯一需要注意的是网线本身的质量,劣质网线可能导致协商速率掉到 100M 甚至 10M,虽然不影响上网,但传大文件会慢得让人难受。
提示:判断网线是否连通,最直接的方法是看网口旁边的指示灯。Jetson Nano 网口插上网线后,如果指示灯亮起或闪烁,说明物理链路已经通了。如果不亮,先换根线试试。
3. Windows 笔记本共享网络给 Jetson Nano 的完整实操
3.1 前置准备与物理连接
先把东西备齐:一台已经连上 Wi-Fi 的 Windows 笔记本、一根普通网线、Jetson Nano 和它的电源。Nano 这边不需要接显示器,因为你配置好网络后可以直接用 SSH 登录,但第一次配置的时候建议还是接个 HDMI 显示器,方便确认 IP 地址和网络状态。
物理连接顺序很重要,我踩过坑:
- 先给 Jetson Nano 接上电源,等它完全启动进入系统。
- 把网线一头插在笔记本的以太网口,另一头插在 Nano 的网口。
- 确认笔记本的 Wi-Fi 是连着的,而且能正常上网。
为什么强调先启动 Nano 再插网线?因为 Windows 的 ICS 服务在检测到网线插入时会尝试分配 IP,如果 Nano 还没启动,Windows 可能会把网线口识别为“未识别的网络”并进入一种奇怪的状态。先让 Nano 起来,再插线,Windows 识别起来更顺畅。
3.2 开启 Internet 连接共享
在 Windows 上打开“控制面板”或者直接搜索“网络连接”,找到“查看网络连接”那个界面。你会看到至少两个适配器:一个是“Wi-Fi”,一个是“以太网”。
操作步骤:
- 右键点击Wi-Fi适配器,选择“属性”。
- 切换到“共享”选项卡。
- 勾选“允许其他网络用户通过此计算机的 Internet 连接来连接”。
- 在下拉框里选择“以太网”(也就是你插网线的那个口)。
- 点击确定。
勾选确定之后,Windows 会自动做几件事:把以太网口的 IP 地址设成192.168.137.1,子网掩码255.255.255.0,并且启动一个内置的 DHCP 服务,给连上来的设备分配192.168.137.x段的地址。
这里有个细节:如果你的以太网口之前被手动设过静态 IP,共享可能会失败。保险起见,先把以太网口设成“自动获得 IP 地址”,再开共享。
3.3 确认 Jetson Nano 获取到 IP
Nano 这边,如果系统默认开启了 DHCP,它会自动向 Windows 请求一个地址。你可以在 Nano 的终端里运行:
ip addr show eth0或者用老一点的命令:
ifconfig eth0正常情况下,你会看到inet 192.168.137.x这样的地址。如果没看到,先运行:
sudo dhclient eth0强制重新获取一次。如果还是不行,检查网线是否插紧,或者回到 Windows 那边确认共享是否真的开启了。
拿到 IP 之后,在 Nano 上测试外网连通性:
ping -c 4 8.8.8.8能 ping 通说明网络层已经通了。再测试 DNS:
ping -c 4 www.baidu.com如果 IP 能通但域名不通,说明 DNS 没配好。可以在 Nano 上手动指定 DNS:
sudo nano /etc/resolv.conf加上一行:
nameserver 8.8.8.8保存退出即可。不过要注意,/etc/resolv.conf在某些系统上重启后会被覆盖,更稳妥的做法是在网络管理器里配置。
3.4 用 SSH 登录,摆脱显示器
网络通了之后,你就可以把 HDMI 线拔了,直接用 SSH 从笔记本登录 Nano。Windows 自带的终端或者 PowerShell 都支持 SSH:
ssh nvidia@192.168.137.x默认密码通常是nvidia。登录进去之后,你就可以在笔记本上舒舒服服地敲命令了,复制粘贴也方便,不用再对着小屏幕和键盘较劲。
我自己的习惯是配置好 SSH 密钥登录,省得每次输密码:
ssh-keygen -t rsa ssh-copy-id nvidia@192.168.137.x这样以后直接ssh nvidia@192.168.137.x就能进,效率提升明显。
4. Ubuntu 和 macOS 笔记本的共享配置
4.1 Ubuntu 笔记本:用 iptables 做 NAT
Ubuntu 下没有 Windows 那种一键共享的图形开关,需要手动配置。核心就三步:给网线口配静态 IP、开启 IP 转发、加 NAT 规则。
先确认你的 Wi-Fi 接口名和以太网接口名:
ip link show通常 Wi-Fi 是wlan0或wlp3s0,以太网是eth0或enp2s0。假设 Wi-Fi 是wlan0,以太网是eth0。
给以太网口配静态 IP:
sudo ip addr add 192.168.137.1/24 dev eth0 sudo ip link set eth0 up开启 IP 转发:
sudo sysctl -w net.ipv4.ip_forward=1加 NAT 规则:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT这几条命令的意思是:从eth0进来的包允许转发到wlan0,从wlan0回来的、已经建立连接的包允许转发回eth0,出去的时候做源地址伪装。
Nano 那边同样用dhclient eth0获取地址,或者手动设一个同网段的静态 IP:
sudo ip addr add 192.168.137.2/24 dev eth0 sudo ip route add default via 192.168.137.1DNS 还是配8.8.8.8或者你本地网络能用的 DNS。
这套配置重启后会失效,如果想持久化,可以把sysctl和iptables规则写进启动脚本。我一般图省事,写个share-net.sh放在桌面,需要的时候跑一下。
4.2 macOS 笔记本:系统偏好设置里的共享
macOS 的配置相对简单。打开“系统偏好设置” -> “共享”,在左侧列表里找到“Internet 共享”。勾选它,然后在“共享以下来源的连接”里选 Wi-Fi,“用以下端口共享给电脑”里勾选以太网。勾选后系统会提示你确认开启,点“启动”就行。
macOS 默认会把以太网口设成192.168.2.1这个网段,Nano 会自动获取192.168.2.x的地址。如果 Nano 没自动获取,同样用dhclient手动触发一下。
macOS 上偶尔会遇到共享开了但 Nano 拿不到 IP 的情况,这时候可以尝试关掉共享再重新开,或者在“网络”设置里把以太网口的服务顺序调到 Wi-Fi 下面。我遇到过一次,重启共享服务后恢复正常。
4.3 三种系统的通用排查思路
不管用哪种系统,排查思路是一致的:
- 先看物理层:网口灯亮不亮,网线换一根试试。
- 再看链路层:
ip link看接口是不是 UP 状态。 - 然后看网络层:Nano 有没有拿到 IP,能不能 ping 通网关。
- 最后看应用层:DNS 能不能解析,能不能 ping 通外网域名。
这个从下往上的排查顺序,能帮你快速定位问题出在哪一层,避免瞎折腾。
5. 常见问题与避坑经验实录
5.1 共享开了但 Nano 拿不到 IP
这是最常见的问题。原因通常有三个:一是 Windows 的 ICS 服务没有真正启动,二是网线口被其他虚拟网卡占用,三是 Nano 的 DHCP 客户端没跑起来。
排查方法:在 Windows 上按Win + R,输入services.msc,找到“Internet Connection Sharing (ICS)”服务,确认它的状态是“正在运行”。如果没运行,手动启动,并设为自动。
如果服务正常但还是不行,检查笔记本上是不是装了 VMware 或 VirtualBox,这些虚拟化软件会创建虚拟网卡,有时候会干扰 ICS 的网卡选择。临时禁用虚拟网卡再试。
Nano 这边,运行sudo dhclient -v eth0,加-v参数能看到详细的 DHCP 交互过程,方便判断是没发请求还是没收到响应。
5.2 能 ping 通 IP 但域名解析失败
这个问题的根源在 DNS。Windows 的 ICS 默认会把 DNS 请求转发给 Wi-Fi 接口的 DNS 服务器,但有时候 Nano 上的resolv.conf没有正确更新。
解决办法:在 Nano 上手动编辑/etc/resolv.conf,加上nameserver 8.8.8.8和nameserver 114.114.114.114。如果重启后失效,可以安装resolvconf或者用systemd-resolved来持久化配置。
我自己的做法是在 Nano 上装一个dnsmasq,把 DNS 缓存和转发都交给它,配置一次就不用再管了。
5.3 网线连接半小时后断网
这个问题我在论坛上看到不少人反馈,自己也遇到过一次。表现是刚开始一切正常,过一段时间后 Nano 突然断网,重新插拔网线又能恢复。
原因通常是网卡的节能模式在作怪。Windows 笔记本的以太网卡在检测到流量较低时会进入省电状态,导致链路中断。解决办法:在“设备管理器”里找到以太网适配器,右键属性,在“电源管理”选项卡里取消勾选“允许计算机关闭此设备以节约电源”。
Nano 这边也可以关掉网口的节能特性:
sudo ethtool -s eth0 wol d或者用ethtool查看当前设置,把Energy-Efficient Ethernet关掉。
5.4 常见问题速查表
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 网口灯不亮 | 网线坏或没插紧 | 换网线,重新插拔 |
| Nano 无 IP | DHCP 未获取 | sudo dhclient eth0 |
| 能 ping IP 不能解析域名 | DNS 未配置 | 手动加nameserver 8.8.8.8 |
| 半小时后断网 | 网卡节能模式 | 关闭电源管理中的节能选项 |
| 共享选项灰色不可点 | 以太网口被占用 | 禁用虚拟网卡,重设自动获取 IP |
| SSH 连不上 | 防火墙拦截 | 检查 Windows 防火墙是否允许 22 端口 |
5.5 几个我踩过的坑
第一个坑:不要同时开 Wi-Fi 和以太网共享给同一个网段。我有一次笔记本同时连着 Wi-Fi 和手机热点,结果 ICS 不知道选哪个源,网络时通时断。后来只保留一个上网接口,问题消失。
第二个坑:Nano 的 MAC 地址在每次重启后可能变化。某些批次的 Nano 没有烧录固定 MAC,导致每次重启后 DHCP 分配的 IP 不一样。解决办法是在 Nano 上手动设静态 IP,或者在 Windows 的 DHCP 里做 MAC 绑定。我选择手动设静态 IP,省事。
第三个坑:网线质量影响协商速率。我有一根便宜网线,协商出来只有 10Mbps,传个模型文件慢得想砸键盘。换了一根六类线后直接跑满千兆。所以别在网线上省钱,几块钱的差价换来的是几倍的传输速度。
6. 共享之后的进阶玩法
网络通了只是第一步,接下来你可以做很多事情。比如直接在笔记本上用 VS Code 的 Remote-SSH 插件连到 Nano 上写代码,享受本地编辑器的补全和调试功能,同时代码跑在 Nano 的 ARM 环境里。这个组合我用得最多,效率比在 Nano 上直接开编辑器高太多了。
还可以在 Nano 上跑 Jupyter Notebook,然后在笔记本浏览器里访问http://192.168.137.x:8888,这样你就能在笔记本的大屏幕上做数据分析和模型调试,Nano 只负责计算。对于跑 YOLOv5 这类视觉推理任务,这个方式特别顺手。
如果后续换了 Jetson Orin Nano,这套网络共享的逻辑完全一样,配置步骤不需要改。Orin Nano 的网口同样支持自动翻转,同样可以用dhclient获取地址。唯一需要注意的是 Orin Nano 的功耗更高,电源要选够瓦数的,别因为供电不足导致网口工作不稳定。
最后分享一个小技巧:如果你经常需要在不同网络环境之间切换,可以写一个简单的脚本,自动检测当前哪个接口在上网,然后自动配置共享规则。我用的是一个十几行的 bash 脚本,放在/usr/local/bin下,需要的时候跑一下,省去每次手动敲命令的麻烦。这个脚本的核心就是判断ip route的默认路由走的是哪个接口,然后动态生成 iptables 规则。