解决 Raspberry Pi 网络配置:NetworkManager
树莓派网络配置(wlan)
当在 Raspberry Pi OS Lite (Debian) 上配置网络时,首先想到编辑 /etc/network/interfaces 文件,但这并不奏效,特别是当系统使用其他网络管理工具时。例如,本文最终发现并使用的 NetworkManager。
问题描述#
最初尝试通过修改 /etc/network/interfaces 来配置 Wi-Fi 和有线网络,并希望使用 ifup 等命令来应用更改。但遇到以下情况:
/etc/network/interfaces中的配置似乎未生效。- 执行
ifup命令时提示command not found。
故障排除与发现#
-
检查
ifupdown:
bashdpkg -s ifupdown结果显示未安装,这意味着
/etc/network/interfaces文件不会被传统方式处理。 -
检查
dhcpcd:
bashdpkg -s dhcpcd5 dhcpcd --version同样显示未安装或命令未找到,排除了
dhcpcd作为主要网络管理器的可能性。 -
检查
systemd-networkd:
bashsudo systemctl status systemd-networkd结果显示服务为
inactive (dead)且被禁用。 -
发现
NetworkManager:
bashsudo systemctl status NetworkManager输出显示
NetworkManager.service处于active (running)状态,并且日志中有其管理网络接口(如eth0)的记录。 这表明NetworkManager是当前系统上实际的网络管理工具。
解决方案:使用 NetworkManager (nmcli)#
既然 NetworkManager 在运行,我们就应该使用它的工具来配置网络,而不是直接编辑 /etc/network/interfaces(该文件在这种情况下通常会被忽略或仅用于非常有限的配置)。
nmcli 是 NetworkManager 的命令行工具,非常适合在无图形界面的环境中使用。
步骤:#
-
确认 NetworkManager 状态:
bashsudo systemctl status NetworkManager -
查看无线设备工作状态
bashnmcli device status 或 nmcli connection show (nmcli c s)查看无线网络是否被
NetworkManager禁用:
bashnmcli radio wifi如果显示
enabled,则无线设备正常工作。如果显示disabled,则需要启用无线设备。
bashsudo nmcli radio wifi on -
列出可用的 Wi-Fi 网络: 在尝试连接前,
wlan0接口需要能扫描到网络。如果之前扫描失败提示 “unavailable”,确保无线开关未被软/硬阻止 (rfkill list) 并且nmcli radio wifi显示为enabled。
bashnmcli device wifi list如果此命令成功列出网络,说明无线设备工作正常。
-
连接到 Wi-Fi 网络: 使用
sudo是因为修改网络配置需要管理员权限。
bashsudo nmcli device wifi connect "你的WiFi名称" password "你的WiFi密码" ifname wlan0 name "自定义连接名""你的WiFi名称": 替换为实际的 SSID。"你的WiFi密码": 替换为实际的密码。ifname wlan0: 指定使用wlan0接口。name "自定义连接名": 为此连接设置一个易于识别的名称 (例如MyHomeWiFi),方便以后管理。
-
验证连接状态:
bashnmcli device status # 查看 wlan0 是否已连接 nmcli connection show # 查看已建立的连接及其状态 ping -c 3 google.com # 测试网络连通性 -
为Wifi设置静态IP地址:
bashsudo nmcli connection modify "我的WiFi连接名" ipv4.method manual ipv4.addresses 192.168.1.101/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8,1.1.1.1" sudo nmcli connection up "我的WiFi连接名"
重要提示#
- 当
NetworkManager活跃时,它会主导网络配置。/etc/network/interfaces文件通常只应包含lo(环回) 接口的定义,或者将其他接口(如eth0,wlan0)标记为inet manual以明确告知NetworkManager接管。 - 始终首先确定你的 Linux 发行版正在使用哪个网络管理工具。常见的有
ifupdown(配合/etc/network/interfaces)、dhcpcd、systemd-networkd和NetworkManager。 - 对于服务器,
nmcli是管理NetworkManager的强大工具。对于有图形界面的系统,通常会有相应的图形化网络配置工具。