RHEL7网络管理NetworkManager和nmcli指令
1、NetworkManager简介
在 Red Hat Enterprise Linux 7 中,NetworkManager 提供的默认联网服务是一个动态网络控制和配置守护
进程,它尝试在其可用时保持网络设备和连接处于活动状态。仍支持传统 ifcfg 类型配置文件。
-
nmcli:NetworkManager的命令行工具(CLI)
-
nmtui:NetworkManager的文本用户界面工具(TUI)
安装NetworkManager:
#yum install NetworkManager
查看NetworkManager守护进程状态:
#systemctl status NetworkManager
设置开机启动NetworkManager服务:
#systemctl enable NetworkManager
2、使用文本用户界面(nmtui)进行网络配置
#nmtui
从上面看出 可以配置IP地址、主机名。
建议使用这种方法配置主机名很方便。
3、使用sysconfig文件进行网络配置
网卡接口的具体信息保存在/etc/sysconfig/network-scripts/ 目录下的ifcfg文件中。
[root@test network-scripts]# cat ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="e51a1d1e-fe3b-4360-b916-d005fa98fa7d"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.110.168
NETMASK=255.255.255.0
GATEWAY=192.168.110.2
DNS1=114.114.114.114
在RHEL7中编辑ifcfg文件时,networkmanager不会自动意识到更改,必须让networkmanager 重新读取该配置文件,使用
如下指令:
#nmcli connection reload
或者,
# systemctl restart network
官方文档中提到:
建议不要在ifcfg文件的同一位置保存其备份文件。网络脚本会运行ifcfg-*,扩展名.old、.orig、.rpmnew、.rpmorig和
.rmpsave除外。最好不要将备份文件保存在/etc/目录下。
ifup和ifdown指令
ifup ensxx //调用networkmanager 启动该接口连接
ifdown ensxx //调用networkmanager 终止该接口连接
4、使用nmcli命令行工具配置网络
nmcli指令与配置文件对应关系
nmcli指令帮助信息:
#nmcli help
#nmcli general help
4.1 查看网卡接口信息
#nmcli device status
#nmcli device show eno49
4.2查看连接信息
#nmcli conn show
查看某个接口连接的详细信息:
#nmcli conn show eno49
显示所有活动连接:
4.3启动与停止接口
启动接口:
nmcli connection up eno49
nmcli device connect eno49
#停止接口
nmcli connection down eno49
nmcli device disconnect eno49
建议使用nmcli dev connect/disconnect enoxx指令,这样断开链接后,会将接口放到“手动”模式,接口不会被自动激活。
删除网络连接的配置文件:
nmcli conn delete eno49
重新加载网络配置文件:
nmcli conn reload
4.4 修改网卡是不是开机自动启动(ONBOOT=yes/no)
nmcli conn modify eno49 connection.autoconnect no/on
4.5设置修改IP地址和DNS
给eno49添加一个IP(IPADDR)
# nmcli connection modify eth0 ipv4.addresses 192.168.0.58
给eno49添加一个子网掩码(NETMASK)
# nmcli connection modify eth0 ipv4.addresses 192.168.0.58/24
IP获取方式设置成手动(BOOTPROTO=static/none/dhcp)
# nmcli connection modify eth0 ipv4.method manual
添加DNS
# nmcli connection modify eth0 ipv4.dns 114.114.114.114
删除DNS
# nmcli connection modify eth0 -ipv4.dns 114.114.114.114
添加一个网关(GATEWAY)
# nmcli connection modify eth0 ipv4.gateway 192.168.0.2
或者:
nmcli connection modify eno49 ipv4.addresses '192.168.10.10/24 ' ipv4.gateway '192.168.10.254' ipv4.dns '8.8.8.8'
6、RHEL7中一致网络设备命名【摘自官方文档】
在 Red Hat Enterprise Linux 7 中,udev 支持大量不同的命名方案。默认是根据固件、拓扑及位置信息分配
固定名称。这样做的优点是命名可完全自动进行,并可预期,即使添加或删除硬件后也会保留其名称(不会出
现重复枚举的情况),同时可顺利更换损坏的硬件。不足之处是,相比传统的名称,比如 eth0 或 wlan0,这
些名称有时会比较难理解。例如:enp5s0。
RHEL7中命名方案层级结构:
默认情况下,systemd 会使用以下策略,采用支持的命名方案为接口命名:
-
方案 1:如果固件或 BIOS 信息适用且可用,则使用整合了为板载设备提供索引号的固件或 BIOS 的名称(例如:eno1),否则请使用方案 2。
-
方案 2:如果固件或 BIOS 信息适用且可用,则使用整合了为 PCI 快速热插拔插槽提供索引号的固件或BIOS 名称(例如 ens1),否则请使用方案 3。
-
方案 3:如果硬件连接器物理位置信息可用,则使用整合了该信息的名称(例如:enp2s0),否则请使用方案 5。
-
方案 4: 默认不使用整合接口 MAC 地址的名称(例如:enx78e7d1ea46da),但用户可选择使用此方案。
-
方案 5:传统的不可预测的内核命名方案,在其他方法均失败后使用(例如: eth0)。
这个策略(如上所述)是默认策略。如果该系统已启用 biosdevname,则会使用该方案。注:启用
biosdevname 需要添加 biosdevname=1 作为命令行参数(Dell 系统除外),此时只要安装
biosdevname,就会默认使用该方案。如果用户已添加 udev 规则,该规则会更高内核设备名称,则会优
先使用这些规则。
结合上述规则,从下面可以看出eno49/50是板载的网卡。ens1f0/ens1f1是PCI网卡,后面添加的。
苦难并非乐事,但能者等闲视之,人生本来就是苦中作乐,切莫长吁短叹,虚度年华。