使用nmcli管理Wi-Fi连接

环境:Fedora 43,NetworkManager 管理网络,基于 nmcli(NetworkManager Command Line Interface)操作。


WiFi 连接全流程

1. 确认网卡状态

1
nmcli device status

输出示例:

1
2
3
DEVICE   TYPE      STATE         CONNECTION
wlan0    wifi      disconnected  --
eth0     ethernet  connected     Wired connection 1

如果 STATEunmanaged,说明网卡未被 NetworkManager 接管:

1
sudo nmcli device set wlan0 managed yes

2. 扫描可用网络

1
nmcli device wifi list

输出示例:

1
2
3
4
5
IN-USE  SSID               MODE   CHAN  RATE        SIGNAL  BARS  SECURITY
        MyHome_5G          Infra  149   1300 Mbit/s  75      ▂▄▆_  WPA2
        MyHome_2.4G        Infra  6     1300 Mbit/s  90      ▂▄▆█  WPA3
        Neighbor_WiFi      Infra  1     195 Mbit/s   30      ▂___  WPA2
*       Office_Guest       Infra  36    540 Mbit/s   60      ▂▄▆_  WPA2

IN-USE 列带 * 表示当前已连接的网络。

3. 连接 WiFi

基本连接(自动保存配置)

1
sudo nmcli device wifi connect "MyHome_5G" password "your_password"

成功输出:

1
Device 'wlan0' successfully activated with 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

此命令自动完成:生成 connection profile(保存在 /etc/NetworkManager/system-connections/)→ 触发 DHCP → 设置 autoconnect=yes

连接隐藏 SSID

1
sudo nmcli device wifi connect "Hidden_SSID" password "your_password" hidden yes

指定加密方式(避免协商不确定性)

1
sudo nmcli device wifi connect "MyHome_5G" password "your_password" wep-key-type key

4. 查看活动连接与 IP

1
2
3
nmcli connection show --active
ip addr show wlan0
ping -c 3 8.8.8.8

5. 切换 WiFi(断旧连新一步完成)

1
sudo nmcli device wifi connect "New_SSID" password "new_password"

nmcli device wifi connect 会自动断开当前连接,无需手动先行断开。

6. 断开当前 WiFi

方式一:断开网卡(不会自动重连)

1
sudo nmcli device disconnect wlan0

方式二:禁用连接配置(autoconnect 可能触发重连)

1
sudo nmcli connection down "MyHome_5G"

方式三:彻底删除配置

1
sudo nmcli connection delete "MyHome_5G"

nmcli 网卡操作参考

查看设备与连接

命令用途
nmcli device status查看所有网卡状态、类型、连接情况
nmcli device show wlan0查看指定网卡详细信息(驱动、MAC、IP、DNS 等)
nmcli connection show列出所有 connection profile
nmcli connection show --active列出当前活动的连接
nmcli connection show "MyHome_5G"查看指定连接配置详情

设备管理

命令用途
nmcli device connect wlan0让网卡尝试自动连接(根据已有 profile)
nmcli device disconnect wlan0断开网卡,不再自动连接
nmcli device set wlan0 managed yes将网卡纳入 NetworkManager 管理
nmcli device set wlan0 managed no将网卡排除出管理(变为 unmanaged)
nmcli device reapply wlan0重新应用当前连接配置
nmcli device wifi list扫描并列出附近 WiFi
nmcli device wifi rescan强制重新扫描
nmcli device monitor wlan0实时监控网卡状态变化

Connection Profile 管理

modify 常用示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 设置静态 IP
sudo nmcli con modify "MyHome_5G" ipv4.addresses 192.168.1.100/24
sudo nmcli con modify "MyHome_5G" ipv4.gateway 192.168.1.1
sudo nmcli con modify "MyHome_5G" ipv4.dns "8.8.8.8,1.1.1.1"
sudo nmcli con modify "MyHome_5G" ipv4.method manual

# 关闭自动连接
sudo nmcli con modify "MyHome_5G" connection.autoconnect no

# 设置连接优先级(数字越大越优先)
sudo nmcli con modify "MyHome_5G" connection.autoconnect-priority 10

全局设置

命令用途
nmcli general status查看 NetworkManager 整体状态
nmcli general hostname查看/设置主机名
nmcli general set wifi.on-demand on仅在需要时启用 WiFi(省电/安全)
nmcli general permissions查看当前用户权限

配置文件操作

直接编辑后重载:

1
2
sudo vim /etc/NetworkManager/system-connections/MyHome_5G.nmconnection
sudo nmcli connection reload

配置文件为 INI 格式,手动修改后必须 reload 才能生效。注意设置权限:

1
2
sudo chmod 600 /etc/NetworkManager/system-connections/*.nmconnection
sudo chown root:root /etc/NetworkManager/system-connections/*.nmconnection
使用 Hugo 构建
主题 StackJimmy 设计