
以前搭服务器,我的习惯几乎刻在肌肉记忆里——选 CentOS 7,最小化安装,关 SELinux,配 firewalld,一套流程行云流水。可随着 CentOS 7 退出舞台,我终于下定决心把新机器换成了 Ubuntu 22.04 Desktop。初衷很简单:这次要跑大模型,桌面版方便偶尔本地调试,而且 Ubuntu 的生态对 AI 工具链更友好。
一切部署顺利,模型跑起来了,SSH 也能通,我以为自己成功“换船”了。直到深夜回家,想远程看一下服务器,却发现 服务器失联了——SSH 超时,HTTP 服务也打不开。跑到机器前一看,系统明明还亮着,网络图标也正常,可就是 ping 不通外部,内网也断了。重启网络服务又能好一阵,但过段时间后故障复现。连续三天,我都在和这只“幽灵断联”搏斗。
元凶一:无线网卡的“深度睡眠”
因为机器摆放位置受限,这台服务器用的是无线网卡连接路由器,而不是我习惯的有线。一开始我怀疑过路由器老化、驱动兼容性、甚至 Ubuntu 的 NetworkManager 不稳定,直到无意中敲了句:
iwconfig
输出里赫然显示:
wlp2s0 IEEE 802.11 ESSID:"MyWiFi"
...
Power Management:on
电源管理竟然是开着的。 那一刻,所有诡异现象都说得通了。无线网卡为了省电,会在一段时间无流量后自动进入休眠,而服务器端的被动等待恰恰不会主动产生流量。当 SSH 或 HTTP 请求从外部进来时,网卡还“没睡醒”,直接造成连接超时。哪怕正在传数据,如果间隔稍长,它也可能随时“打盹”。
更坑的是,这是 Ubuntu Desktop 的默认行为。桌面用户确实需要省电,但对一台 7×24 小时待命的服务器而言,这种“节能”就是灾难。
解决:永久关闭 Wi-Fi 电源管理
临时关闭只需一行:
sudo iwconfig wlp2s0 power off
立刻生效,网络恢复坚挺。但重启后会还原,必须固化配置。Ubuntu 22.04 的网络由 NetworkManager 接管,电源管理策略在它的配置文件里。
检查现有的电源管理配置:
cat /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
内容通常是:
[connection]
wifi.powersave = 3
数值 3 代表“启用电源管理”。我们把它改成 2(禁用),或者创建一个覆盖文件更安全:
sudo nano /etc/NetworkManager/conf.d/wifi-powersave-off.conf
填入:
[connection]
wifi.powersave = 2
保存后重启 NetworkManager:
sudo systemctl restart NetworkManager
再用 iwconfig 确认,Power Management 变为 off。从那以后,这台无线服务器再也没自己“睡死”过。
元凶二:路由器 DHCP 租约(目前暂未发生)
在排查过程中我还了解到:即使关闭了电源管理,可能偶尔还是会掉线:DHCP 租约到期。
家用路由器默认的 DHCP 租约时间通常是 2 小时,甚至更短。租约到期时,设备会重新请求 IP,如果此时网卡恰好在省电模式边缘,或者路由器响应慢,就可能导致短暂的 IP 丢失,直接撕掉所有现有连接。对于无间断服务的服务器来说,这同样致命。
如果上面还未解决掉线的问题,可以考虑采用:给服务器配置静态 IP,彻底告别租约烦恼。 在 Ubuntu Desktop 上,最简单的方式是通过 NetworkManager 的图形界面设置——Wi-Fi 设置里,选择当前连接,IPv4 改为手动,填入一个路由器网段内未使用的固定 IP、子网掩码、网关和 DNS。
命令行的做法可以编辑 netplan 配置文件(/etc/netplan/01-network-manager-all.yaml),在 wifis 部分指定固定地址:
network:
version: 2
renderer: NetworkManager
wifis:
wlp2s0:
dhcp4: no
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [192.168.1.1, 8.8.8.8]
access-points:
"MyWiFi":
password: "你的密码"
应用配置:
sudo netplan apply
如果觉得 netplan 和 NetworkManager 打架,也可以直接用 nmcli 修改连接的 IP 方式:
nmcli con modify "MyWiFi" ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "192.168.1.1 8.8.8.8"
nmcli con up "MyWiFi"
两种方法都行,选一个用就好。自此,我的无线服务器终于展现出有线般的稳重,无论闲置多久都能随时连入。
小结:服务器用无线,两件事必须做
从 CentOS 迁到 Ubuntu,本以为是顺滑的平移,没想到在“无线网卡当生产网口”这个细节上翻了车。现在回过头看,只要做两件事,就能把坑填平:
- 关闭无线网卡电源管理,让网卡永不休眠;
- 设置静态 IP,摆脱 DHCP 租期波动。
这两条对任何基于 Ubuntu 的无线服务器都适用,无论是 AI 推理节点、家庭 NAS,还是边缘计算盒子。也希望这篇记录能帮更多人跳过这个几天的坑,省下时间去折腾更有趣的东西。
延伸阅读:
如果你用的是 netplan + systemd-networkd 的组合,关闭无线电源管理可能需要在 udev 规则或内核模块参数中处理,但大多数 Ubuntu Desktop 默认的 NetworkManager 方案,上述配置就足够了。