NetworkManager 命令行控制 nmcli 工具入门
后知后觉 暂无评论

在很多新版本的发行版上,默认的网络管理组件都被替换为了 NetworkManager,特别是 RHEL 及其衍生版本。

查询

使用 nmcli 命令可以查询当前网络相关组件的状态:

查询网络概况

sudo nmcli general

查询网络控制器

sudo nmcli networking 

查询无线控制器

sudo nmcli radio

查询所有连接

sudo nmcli connection

查询所有设备(包含物理设备、虚拟设备、逻辑设备等)

sudo nmcli device

查询设备详细信息,包含设备名、类型、地址、MTU、状态、地址、子网掩码、网关、DNS 等超级详细的信息。

sudo nmcli device show

缩写

上面所有的命令对象都支持缩写

  g[eneral]       NetworkManager 的一般状态和操作
  n[etworking]    整体网络控制
  r[adio]         NetworkManager 无线网开关
  c[onnection]    NetworkManager 的逻辑连接
  d[evice]        被 NetworkManager 接管的设备
  a[gent]         NetworkManager secret 代理或 polkit 代理
  m[onitor]       监听 NetworkManager 改动

执行命令时可以直接将对象简写,最为神奇的是简写多少位都可以,比如 connection 可以简写为 c, co, con, conn...

以此类推。


修改

最强大的功能可以说是配置修改,可以通过命令配置网络,配置的结果会自动写入配置文件,再也不用担心配置文件格式不对了。

配置固定地址

以配置固定 IP 为例,演示一下 nmcli 的强大功能

sudo nmcli connection modify ens34 ipv4.addresses 192.168.1.155/24
命令格式:nmcli connection modify [网卡名] [资源类.资源名] 地址/子网掩码

然后修改网关

sudo nmcli connection modify ens34 ipv4.gateway 192.168.1.1

然后修改网络模式(默认 DHCP,改为手动指定)

sudo nmcli connection modify ens34 ipv4.method manual

然后按需求修改 DNS

sudo nmcli connection modify ens34 ipv4.dns 223.5.5.5,223.6.6.6
小贴士:多个 DNS 之间使用逗号分隔。

如果不确定修改是否正确,可以添加参数 --temporary 临时修改(不会将修改写入配置文件,重启后失效)后确认可用后再去掉参数重新执行一遍。

小贴士:参数有位置要求:sudo nmcli [对象] [操作] --temporary [网卡] [具体配置项],如 sudo nmcli connection modify --temporary ens34 ipv4.dns 223.5.5.5,223.6.6.6

修改完成后应用设置即可

sudo nmcli connection up ens34

参数表

## IPv4 可修改的所有配置
ipv4.addresses
ipv4.dad-timeout
ipv4.dhcp-client-id
ipv4.dhcp-fqdn
ipv4.dhcp-hostname
ipv4.dhcp-hostname-flags
ipv4.dhcp-iaid
ipv4.dhcp-reject-servers
ipv4.dhcp-send-hostname
ipv4.dhcp-timeout
ipv4.dhcp-vendor-class-identifier
ipv4.dns
ipv4.dns-options
ipv4.dns-priority
ipv4.dns-search
ipv4.gateway
ipv4.ignore-auto-dns
ipv4.ignore-auto-routes
ipv4.may-fail
ipv4.method
ipv4.never-default
ipv4.required-timeout
ipv4.route-metric
ipv4.routes
ipv4.route-table
ipv4.routing-rules
## IPv6 可修改的所有配置
ipv6.addresses
ipv6.addr-gen-mode
ipv6.dhcp-duid
ipv6.dhcp-hostname
ipv6.dhcp-hostname-flags
ipv6.dhcp-iaid
ipv6.dhcp-send-hostname
ipv6.dhcp-timeout
ipv6.dns
ipv6.dns-options
ipv6.dns-priority
ipv6.dns-search
ipv6.gateway
ipv6.ignore-auto-dns
ipv6.ignore-auto-routes
ipv6.ip6-privacy
ipv6.may-fail
ipv6.method
ipv6.never-default
ipv6.ra-timeout
ipv6.required-timeout
ipv6.route-metric
ipv6.routes
ipv6.route-table
ipv6.routing-rules
ipv6.token

补充

使用命令修改,默认会将改动写入网卡配置文件,需要注意的是,不同版本的系统写入的配置文件地址也不同。


附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。