Linux nmcli 命令
什么是 nmcli
nmcli 是 NetworkManager 的命令行工具,用于在 Linux 系统中配置和管理网络连接。它是 NetworkManager 的官方客户端,提供了比图形界面更强大和灵活的网络管理能力。
nmcli 的主要特点
- 全功能支持:几乎涵盖所有 NetworkManager 的功能
- 脚本友好:适合自动化脚本和远程管理
- 无依赖:不需要图形界面,纯命令行操作
- 实时反馈:立即显示命令执行结果
nmcli 基础语法
nmcli 的基本命令格式如下:
nmcli [OPTIONS] OBJECT { COMMAND | help }
常用 OBJECT 类型
general
:NetworkManager 常规状态和操作networking
:整体网络控制radio
:无线网络开关connection
:网络连接配置device
:网络设备管理
常用 OPTIONS 选项
选项 | 说明 |
---|---|
-t |
简洁输出(适合脚本处理) |
-p |
漂亮输出(更易读) |
-h |
显示帮助信息 |
-v |
显示版本信息 |
常用 nmcli 命令详解
1. 查看网络状态
查看 NetworkManager 整体状态:
实例
nmcli general status
输出示例:
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled
2. 管理网络连接
列出所有网络连接:
实例
nmcli connection show
激活/停用连接:
实例
nmcli connection up "连接名"
nmcli connection down "连接名"
nmcli connection down "连接名"
3. 管理网络设备
列出所有网络设备:
实例
nmcli device status
输出示例:
DEVICE TYPE STATE CONNECTION eth0 ethernet 已连接 有线连接 1 wlan0 wifi 已断开 -- lo loopback 未托管 --
查看设备详细信息:
实例
nmcli device show eth0
无线网络管理
扫描可用 WiFi 网络
实例
nmcli device wifi list
连接到 WiFi 网络
实例
nmcli device wifi connect "SSID名称" password "密码"
创建新的 WiFi 连接配置
实例
nmcli connection add type wifi ifname wlan0 con-name "我的WiFi" ssid "SSID名称"
nmcli connection modify "我的WiFi" wifi-sec.key-mgmt wpa-psk
nmcli connection modify "我的WiFi" wifi-sec.psk "密码"
nmcli connection modify "我的WiFi" wifi-sec.key-mgmt wpa-psk
nmcli connection modify "我的WiFi" wifi-sec.psk "密码"
有线网络配置
创建静态 IP 连接
实例
nmcli connection add type ethernet ifname eth0 con-name "静态连接" \
ip4 192.168.1.100/24 gw4 192.168.1.1
nmcli connection modify "静态连接" ipv4.dns "8.8.8.8,8.8.4.4"
ip4 192.168.1.100/24 gw4 192.168.1.1
nmcli connection modify "静态连接" ipv4.dns "8.8.8.8,8.8.4.4"
修改现有连接为 DHCP
实例
nmcli connection modify "连接名" ipv4.method auto
高级用法
创建 VPN 连接
实例
nmcli connection add type vpn vpn-type openvpn \
con-name "我的VPN" ifname tun0 \
vpn.data "remote=vpn.example.com, username=user, password=pass"
con-name "我的VPN" ifname tun0 \
vpn.data "remote=vpn.example.com, username=user, password=pass"
创建网桥
实例
nmcli connection add type bridge ifname br0 con-name "我的网桥"
nmcli connection add type bridge-slave ifname eth0 master br0
nmcli connection add type bridge-slave ifname eth0 master br0
创建 VLAN
实例
nmcli connection add type vlan ifname eth0.100 con-name "VLAN100" \
dev eth0 id 100 ip4 192.168.100.100/24
dev eth0 id 100 ip4 192.168.100.100/24
常见问题解决
1. 网络设备显示"未托管"
实例
# 检查 NetworkManager.conf
cat /etc/NetworkManager/NetworkManager.conf
# 如果看到 unmanaged-devices 配置,可以注释掉相关行
# 然后重启 NetworkManager
systemctl restart NetworkManager
cat /etc/NetworkManager/NetworkManager.conf
# 如果看到 unmanaged-devices 配置,可以注释掉相关行
# 然后重启 NetworkManager
systemctl restart NetworkManager
2. 忘记连接密码
实例
nmcli connection show "连接名" | grep psk
3. 重置网络配置
实例
nmcli connection reload
实践练习
- 使用 nmcli 连接到你的 WiFi 网络
- 创建一个静态 IP 的有线连接
- 扫描并列出所有可用的 WiFi 网络
- 查看当前活跃连接的详细信息
总结
nmcli 是 Linux 系统网络管理的强大工具,通过本文的学习,你应该能够:
- 理解 nmcli 的基本概念和语法结构
- 使用 nmcli 管理有线和无线网络连接
- 配置静态 IP 和 DHCP 连接
- 处理常见的网络连接问题
掌握 nmcli 可以让你在没有图形界面的服务器环境中高效管理网络,也是 Linux 系统管理员的重要技能之一。
点我分享笔记