在很多新版本的发行版上,默认的网络管理组件都被替换成 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 的强大功能:
命令格式:nmcli connection modify [网卡名] [资源类.资源名] 地址/子网掩码
比如修改地址
sudo nmcli connection modify eth0 ipv4.addresses 192.168.1.155/24
然后修改网关
sudo nmcli connection modify eth0 ipv4.gateway 192.168.1.1
然后修改网络模式(默认 DHCP,改为手动指定)
sudo nmcli connection modify eth0 ipv4.method manual
然后按需求修改 DNS
sudo nmcli connection modify eth0 ipv4.dns 223.5.5.5,223.6.6.6
小贴士:多个 DNS 之间使用逗号分隔。
如果不确定修改是否正确,可以添加参数 --temporary 临时修改(不会将修改写入配置文件,重启后失效)后确认可用后再去掉参数重新执行一遍。
小贴士:参数有位置要求:sudo nmcli [对象] [操作] --temporary [网卡] [具体配置项],如sudo nmcli connection modify --temporary eth0 ipv4.dns 223.5.5.5,223.6.6.6。
修改完成后应用设置即可
sudo nmcli connection up eth0
上述的命令也支持在一行中配置多个项(同时配置网卡类型、地址、网关、子网掩码、DNS、启动配置等):
sudo nmcli connection modify eth0 \
ipv4.method manual \
ipv4.addresses 192.168.1.155/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns '192.168.1.1,192.168.1.2' \
connection.autoconnect yes
参数表
## 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
其他常用命令
关闭 IPv6:
sudo nmcli connection modify eth0 ipv6.method disabled
sudo nmcli connection down eth0 && sudo nmcli connection up eth0
补充
使用命令修改,默认会将改动写入网卡配置文件,需要注意的是,不同版本的系统写入的配置文件地址也不同。
- RHEL 8 series
/etc/sysconfig/network-scripts/ifcfg-[网卡名] - RHEL 9 series
/etc/NetworkManager/system-connections/[网卡名].nmconnection - RHEL 10 series
/etc/NetworkManager/system-connections/[网卡名].nmconnection
附录
参考链接
本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
本文由 柒 创作,采用 知识共享署名4.0 国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间:

当前已关闭评论