一、简介
Red Hat Enterprise Linux 7 与 CentOS 7 中默认的网络服务由 NetworkManager 提供,这是动态控制及配置网络的守护进程,它用于保持当前网络设备及连接处于工作状态,同时也支持传统的 ifcfg 类型的配置文件。
NetworkManager 可以用于以下类型的连接:Ethernet,VLANS,Bridges,Bonds,Teams,Wi-Fi,mobile boradband(如移动3G)以及 IP-over-InfiniBand。针对与这些网络类型,NetworkManager 可以配置他们的网络别名,IP 地址,静态路由,DNS,VPN连接以及很多其它的特殊参数。
在CentOS / RHEL 7中网络管理命令行工具,也叫nmcli – command-line tool for controlling NetworkManager
经常使用ifconfig的用户应该在CentOS 7中避免使用ifconfig了。nmcli的功能要强大、复杂的多。
二、网卡配置文件详解
/etc/sysconfig/network-scripts/ifcfg-ens33
配置参数说明
# 注:这些参数值不区分大小写,不区分单引号和双引号,甚至可以不用引号。
# 有Ethernet、IPsec等类型,网络接口类型为Ethernet。
TYPE:配置文件接口类型。
DEVICE:网络接口名称
# none dhcp static,dhcp表示动态分配ip;none或者static则为静态固定ip
BOOTPROTO:网卡获取ip地址方式
# 刚安装系统未勾选启动启动,默认是ONBOOT为 no
ONBOOT:系统启动时是否激活
yes:系统启动时激活该网络接口
no:系统启动时不激活该网络接口
UUID含义是通用唯一识别码 (Universally Unique Identifier),在此可以忽略
IPADDR:IP地址
NETMASK:子网掩码
GATEWAY:网关地址
BROADCAST:广播地址
# 只需设置其中一个,同时设置时不能相互冲突。
HWADDR/MACADDR:MAC地址。
# 如果使用DHCP协议,默认为yes。 静态配置就需要手动指定
PEERDNS:是否指定DNS。
yes:如果DNS设置,修改/etc/resolv.conf中的DNS
no:不修改/etc/resolv.conf中的DNS
# 当PEERDNS为yes时会被写入/etc/resolv.conf中。DNS可以设置多个,在DNS后面加数字依次排序
DNS{1, 2}:DNS地址。
# 修改保存后立即生效,无需重启。被其坑过几次,建议一般设为no。
NM_CONTROLLED:是否由Network Manager控制该网络接口。
yes:由Network Manager控制
no:不由Network Manager控制
USERCTL:用户权限控制
yes:非root用户允许控制该网络接口
no:非root用户不运行控制该网络接口
IPV6INIT:是否执行IPv6
yes:支持IPv6
no:不支持IPv6
IPV6ADDR:IPv6地址/前缀长度
二、命令使用
1、命令语法:
nmcli[ OPTIONS ] OBJECT { COMMAND | help }
OBJECT 和 COMMAND 可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母。
OBJECT里面我们平时用的最多的就是connection和device,这里需要简单区分一下connection和device
device叫网络接口,是物理设备
nmcli device help
connection是连接,偏重于逻辑设置
nmcli connection help
# 多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。
# 这样的好处是针对一个网络接口,我们可以设置多个网络连接,比如静态IP和动态IP,再根据需要up相应connection
2、查看网卡信息命令
# 查看所有网络连接
# 长格式
nmcli connection show
# 短格式,缩写
nmcli con show
# 查看活动的网络连接
nmcli con show -active
# 查看指定网卡的详细信息
nmcli con show eth0
# 显示设备的连接状态
nmcli status
# 显示所有设备网络设备详情信息
nmcli device show
# 显示指定网络设备的详细信息
nmcli device show eth0
3、网卡状态修改命令
# 启用网络连接
nmcli con up eth0
# 停用网络连接(可以被自动激活)
nmcli con down eth0
# 禁用网卡,防止自动被激活
nmcli device disconnect eth0
# 删除网络连接的配置文件
nmcli con delete eth0
# 重新加载网络配置文件
nmcli con reload
4、新增网卡配置文件
# 使用 add 命令会在 /etc/sysconfig/network-scripts中生成以为 ifcfg开头加add指定的 con-name 名称命名,此文件皆由 nmcli命令进行动态配置
# 如果手动修改 ifcfg文件,重启NetworkManager是无法生效,还需要在执行 nmcli con up才行
# 因此不建议手动修改配置文件,一切修改都使用nmcli命令,修改后执行 nmcli con up 立即生效
# 动态获取IP方式的网络连接配置:
nmcli con add con-name dynamic ifname ens36 type ethernet
#启用动态配置文件
nmcli con up dynamic
# 指定静态IP方式的网络连接配置:
nmcli con add con-name static ifname ens36 autoconnect yes type ethernet ip4 10.10.10.10/24 gw4 10.10.10.1
#启动静态配置文件
nmcli con up static
4、修改网卡配置
命令语法:
nmcli connection modify Con-Name [+|-]setting.propertyvalue
setting.property:
ipv4.method (manual | auto)
ipv4.addresse
ipv4.gateway
ipv4.dns1
修改网络单项
# 设置网卡自启动,实际修改的是网卡配置文件 ONBOOT=yes
nmcli con mod CON-NAME connection.autoconnect yes
# 修改IP地址是静态(manual)还是dhcp动态(auto)
# 实际修改的是网卡配置文件BOOTPROTO,BOOTPROTO=none 表示静态;BOOTPROTO=dhcp 表示动态
nmcli con mod CON-NAME ipv4.method manual(static) | auto
# 修改IP配置及网关
nmcli con mod CON-NAME ipv4.addresses “10.10.10.10/24 10.10.10.1”
# 修改默认网关
nmcli con mod CON-NAME ipv4.gateway 10.10.10.1
# 添加第二个IP地址
nmcli con mod CON-NAME +ipv4.addresses 10.10.10.10/16
# 删除第二个IP地址
nmcli con mod CON-NAME -ipv4.addresses 10.10.10.10/16
# 添加dns1
nmcli con mod CON-NAME ipv4.dns 114.114.114.114
# 添加dns2
nmcli con mod CON-NAME +ipv4.dns 8.8.8.8
修改所对应的文件条目
#修改配置文件
nmcli con mod # ifcfg-* 文件
# IP获取方式
ipv4.method manual|static # BOOTPROTO=none
ipv4.method auto # BOOTPROTO=dhcp
# 连接名称
connection.id eth0 # NAME=eth0
#IP地址信息
ipv4.addresses
“192.0.2.1/24 # IPADDR0=192.0.2.1 PREFIX0=24
192.0.2.254” # GATEWAY0=192.0.2.254
# dns
ipv4.dns 8.8.8.8 # DNS0=8.8.8.8
# dns搜索域
ipv4.dns-search example.com # DOMAIN=example.com
ipv4.ignore-auto-dns true # PEERDNS=no
connection.autoconnect yes # ONBOOT=yes
connection.interface-name eth0 # DEVICE=eth0
802-3-ethernet.mac-address... # HWADDR=...