Ubuntu网络管理利器:nmcli完全指南
nmcli网络管理工具使用指南
1. 基础概念
NetworkManager是Ubuntu默认的网络管理服务,而nmcli是其命令行接口工具,用于管理和配置网络连接。
1.1 核心组件
- Device:物理网络接口
- Connection:网络连接配置
- Profile:连接配置文件
2. 基本操作
2.1 查看网络状态
# 显示所有网络设备状态
nmcli device status
# 显示所有连接
nmcli connection show
# 显示活动连接
nmcli connection show --active
# 显示详细网络信息
nmcli device show
2.2 WiFi操作
# 扫描可用WiFi网络
nmcli device wifi list
# 连接WiFi网络
nmcli device wifi connect "SSID" password "密码"
# 连接隐藏的WiFi网络
nmcli device wifi connect "SSID" password "密码" hidden yes
# 断开WiFi连接
nmcli device disconnect wlan0
3. 有线网络配置
3.1 创建有线连接
# 创建静态IP连接
nmcli connection add \
type ethernet \
con-name "static-eth0" \
ifname eth0 \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8,8.8.4.4"
# 创建DHCP连接
nmcli connection add \
type ethernet \
con-name "dhcp-eth0" \
ifname eth0 \
ipv4.method auto
3.2 修改连接配置
# 修改IP地址
nmcli connection modify "static-eth0" \
ipv4.addresses 192.168.1.101/24
# 修改DNS服务器
nmcli connection modify "static-eth0" \
ipv4.dns "223.5.5.5,223.6.6.6"
# 修改网关
nmcli connection modify "static-eth0" \
ipv4.gateway 192.168.1.1
4. WiFi网络管理
4.1 创建WiFi连接
# 创建WPA-PSK连接
nmcli connection add \
type wifi \
con-name "home-wifi" \
ifname wlan0 \
ssid "HomeNetwork" \
wifi-sec.key-mgmt wpa-psk \
wifi-sec.psk "密码"
# 创建企业级WiFi连接
nmcli connection add \
type wifi \
con-name "office-wifi" \
ifname wlan0 \
ssid "OfficeNetwork" \
wifi-sec.key-mgmt wpa-eap \
802-1x.eap peap \
802-1x.phase2-auth mschapv2 \
802-1x.identity "username" \
802-1x.password "password"
4.2 WiFi安全设置
# 修改WiFi密码
nmcli connection modify "home-wifi" \
wifi-sec.psk "新密码"
# 启用MAC地址随机化
nmcli connection modify "home-wifi" \
wifi.mac-address-randomization always
5. 网络接口管理
5.1 接口状态控制
# 启用网络接口
nmcli device connect eth0
# 禁用网络接口
nmcli device disconnect eth0
# 设置接口自动连接
nmcli connection modify "static-eth0" connection.autoconnect yes
# 设置接口优先级
nmcli connection modify "static-eth0" connection.autoconnect-priority 10
5.2 接口参数配置
# 设置MTU
nmcli connection modify "static-eth0" ethernet.mtu 1500
# 设置速度和双工模式
nmcli connection modify "static-eth0" \
ethernet.speed 1000 \
ethernet.duplex full
6. 故障排除
6.1 连接诊断
# 查看连接日志
journalctl -u NetworkManager
# 查看详细连接信息
nmcli -p connection show "static-eth0"
# 测试连接状态
nmcli networking connectivity check
# 重启网络服务
sudo systemctl restart NetworkManager
6.2 常见问题解决
# 重置连接
nmcli connection delete "static-eth0"
# 重新创建连接
# 刷新WiFi列表
nmcli device wifi rescan
# 清除DNS缓存
sudo systemd-resolve --flush-caches
7. 高级功能
7.1 网络桥接
# 创建网桥连接
nmcli connection add \
type bridge \
con-name "br0" \
ifname br0 \
ipv4.method manual \
ipv4.addresses 192.168.1.200/24
# 添加接口到网桥
nmcli connection add \
type bridge-slave \
con-name "bridge-eth0" \
ifname eth0 \
master br0
7.2 VLAN配置
# 创建VLAN接口
nmcli connection add \
type vlan \
con-name "vlan100" \
ifname vlan100 \
dev eth0 \
id 100 \
ipv4.method manual \
ipv4.addresses 192.168.100.2/24
8. 最佳实践
8.1 安全建议
- 定期更新网络配置
- 使用强密码保护WiFi连接
- 启用MAC地址随机化
- 禁用不需要的网络接口
8.2 性能优化
# 设置合适的MTU值
nmcli connection modify "static-eth0" ethernet.mtu 9000
# 启用TCP BBR
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
9. 自动化配置
9.1 使用配置文件
# 导出连接配置
nmcli connection export "static-eth0" > static-eth0.nmconnection
# 导入连接配置
nmcli connection import file static-eth0.nmconnection
9.2 批量操作脚本
#!/bin/bash
# 批量配置网络接口
for i in {1..5}; do
nmcli connection add \
type ethernet \
con-name "eth$i" \
ifname eth$i \
ipv4.method auto
done
date: 2024-03-22T23:14:37+08:00
update_date: 2024-06-22T23:14:37+08:00
tags: ["linux","network"]
常用指令
以下是一些使用 nmcli 命令进行网络配置的示例:
显示所有连接:
nmcli connection show
显示当前活动连接:
nmcli connection show --active
启用/禁用连接:
nmcli connection up <connection_name>
nmcli connection down <connection_name>
设置静态 IP 地址:
nmcli connection modify <connection_name> ipv4.method manual ipv4.addresses <ip_address>/<subnet_mask> ipv4.gateway <gateway_ip>
设置 DNS 服务器:
nmcli connection modify <connection_name> ipv4.dns <dns_server_ip>
添加虚拟 IP 地址:
nmcli connection modify <connection_name> +ipv4.addresses <virtual_ip>/<subnet_mask>
修改连接名称:
nmcli connection modify <old_connection_name> connection.id <new_connection_name>
删除连接:
nmcli connection delete <connection_name>
显示网络接口状态:
nmcli device status
显示网络接口详细信息:
nmcli device show <interface_name>
这些命令可以在 nmcli 中使用来管理网络连接、配置 IP 地址、修改连接信息等等。请注意替换尖括号中的占位符(如 <connection_name>、<ip_address> 等)为您实际使用的值。
说明
设置开机启动
nmcli connection modify eth0 connection.autoconnect yes
这将设置 eth0 网络接口在启动时自动连接,并立即启用该连接。如果您使用的不是 eth0,而是其他接口名称,请相应地替换。
自动连接只是为了确保当网络可用时,系统会自动尝试连接。如果网口没有连接网线,则无论设置自动连接与否,系统都无法连接到网络。
假设设备没有连接网线,那么网卡开机自动启动无效,需要手动启动一下连接
nmcli connection up eth0
清除网关和 dns
nmcli connection modify eth0 ipv4.gateway ""
nmcli connection modify eth0 ipv4.dns ""
清除之后,需要重启一下连接, 配置才会生效
nmcli connection down eth0 && nmcli connection up eth0
设置忽略网线插入后才能启用连接(ip 持久化)
打开或创建文件 /etc/NetworkManager/conf.d/ignore-carrier.conf:
[connection]
ignore-carrier=yes
保存并关闭文件,然后重启 NetworkManager 服务:
sudo systemctl restart NetworkManager
nmcli 获取连接的 ip 信息
nmcli conn show eno1 | grep ipv4