首页 > 技术文章 > (六)网络配置之配置工具nmcli

xuanlv-0413 2021-04-17 21:58 原文

使用传统命名方式:
(1) 编辑/etc/default/grub配置文件

[root@CentOS-8 ~]# vim /etc/default/grub

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

(2) 为grub2生成其配置文件

[root@CentOS-8 ~]# grub2-mkconfig -o /etc/grub2.cfg

(3) 重启系统

[root@CentOS-8 ~]# reboot

或者使用sed 改 CentOS7和8

[root@CentOS-8 ~]# sed -ri '/^GRUB_CMDLINE_LINUX=/s@"$@ net.ifnames=0"@' /etc/default/grub

[root@CentOS-8 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@CentOS-8 ~]# reboot

Ubuntu
[root@BJ-Ubuntu ~]#sed -ri.bak ‘/^GRUB_CMDLINE_LINUX/s#(.*)"$#\1 net.ifnames=0"#’ /etc/default/grub
[root@BJ-Ubuntu ~]# grub-mkconfig -o /boot/grub/grub.cfg
[root@BJ-Ubuntu ~]# reboot

主机名

配置文件:

/etc/hostname

默认没有此文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain

设置主机名

[root@CentOS-8 ~]# hostnamectl set-hostname centos7.longxuan.com

删除文件/etc/hostname,恢复主机名localhost.localdomain

显示主机名信息

hostname
hostnamectl status

网络配置工具 nmcli

图形工具:nm-connection-editor
字符配置 tui工具:
nmtui
nmtui-connect
nmtui-edit
nmtui-hostname

命令行工具:nmcli
以上工具都依赖NetworkManager服务,此服务是管理和监控网络设置的守护进程

nmcli命令

nmcli命令相关术语

设备即网络接口
连接是对网络接口的配置,一个网络接口可有多个连接配置,但同时只有一个连接配置生效

格式:

nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage network interfaces
nmcli device help
connection - start, stop, and manage network connections
nmcli connection help

修改IP地址等属性

nmcli connection modify IFACE [+|-]setting.property value
setting.property: ipv4.addresses ipv4.gateway ipv4.dns1 ipv4.method manual |
auto

修改配置文件执行生效:

nmcli con reload
nmcli con up con-name
nmcli con mod ifcfg-* 文件
ipv4.method manual BOOTPROTO=none
ipv4.method auto BOOTPROTO=dhcp
ipv4.addresses 192.168.2.1/24 IPADDR=192.168.2.1 PREFIX=24
ipv4.gateway 172.16.0.200 GATEWAY=192.0.2.254
ipv4.dns 8.8.8.8 DNS0=8.8.8.8
ipv4.dns-search example.com DOMAIN=example.com
ipv4.ignore-auto-dns true PEERDNS=no
connection.autoconnect yes ONBOOT=yes
connection.id eth0 NAME=eth0
connection.interface-name eth0 DEVICE=eth0
802-3-ethernet.mac-address . . . HWADDR= . . .

范例:

#查看帮助
nmcli con add help
#使用nmcli配置网络
nmcli con show
#显示所有活动连接
nmcli con show --active
#显示网络连接配置
nmcli con show "System eth0“
#显示设备状态
nmcli dev status
#显示网络接口属性
nmcli dev show eth0
#创建新连接default,IP自动通过dhcp获取
nmcli con add con-name default type Ethernet ifname eth0
#删除连接
nmcli con del default
#创建新连接static ,指定静态IP,不自动连接
nmcti con add con-name static ifname eth0 autoconnect no type Ethernet
ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254
#启用static连接配置
nmcli con up static
#启用default连接配置
nmcli con up default
#修改连接设置
nmcli con mod “static” connection.autoconnect no
nmcli con mod “static” ipv4.dns 172.25.X.254
nmcli con mod “static” +ipv4.dns 8.8.8.8
nmcli con mod “static” -ipv4.dns 8.8.8.8
nmcli con mod “static” ipv4.addresses “172.16.X.10/24 172.16.X.254”
nmcli con mod “static” +ipv4.addresses 10.10.10.10/16
#DNS设置存放在/etc/resolv.conf,PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,
不自动获取等价于下面命令
nmcli con mod “system eth0” ipv4.ignore-auto-dns yes

nmcli实现 bonding

没有执行前是没有看到bond的三个配置文件

#添加bonding接口
nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 172.31.0.17/16
#添加从属接口
nmcli con add type bond-slave ifname eth0 master bond0
nmcli con add type bond-slave ifname eth1 master bond0
#注:如无为从属接口提供连接名,则该名称是接口名称加类型构成


执行以上命令后自动在/etc/sysconfig/network-scripts/ 生成三个bond配置文件

#要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-eth0
nmcli con up bond-slave-eth1
#启动绑定
nmcli con up mybond0

网络组 Network Teaming

网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
网络组不同于旧版中bonding技术,提供更好的性能和扩展性
网络组由内核驱动和teamd守护进程实现
多种方式 runner
broadcast
roundrobin
activebackup
loadbalance
lacp (implements the 802.3ad Link Aggregation Control Protocol)

网络组特点

启动网络组接口不会自动启动网络组中的port接口
启动网络组接口中的port接口总会自动启动网络组接口
禁用网络组接口会自动禁用网络组中的port接口
没有port接口的网络组接口可以启动静态IP连接
启用DHCP连接时,没有port接口的网络组会等待port接口的加入
#创建网络组接口
nmcli con add type team con-name CNAME ifname INAME [config JSON]
CNAME 连接名
INAME 接口名
JSON 指定runner方式,格式:'{"runner": {"name": "METHOD"}}'
METHOD 可以是broadcast, roundrobin, activebackup, loadbalance, lacp
#创建port接口
nmcli con add type team-slave con-name CNAME ifname INAME master TEAM
CNAME 连接名,连接名若不指定,默认为team-slave-IFACE
INAME 网络接口名
TEAM 网络组接口名
#断开和启动
nmcli dev dis INAME
nmcli con up CNAME
INAME 设备名 CNAME 网络组接口名或port接口

网络组示例

nmcli con add type team con-name myteam0 ifname team0 config '{"runner":
{"name": "loadbalance"}}' ipv4.addresses 192.168.1.100/24 ipv4.method manual
nmcli con add con-name team0-eth1 type team-slave ifname eth1 master team0
nmcli con add con-name team0-eth2 type team-slave ifname eth2 master team0
nmcli con up myteam0
nmcli con up team0-eth1
nmcli con up team0-eth2
teamdctl team0 state
ping -I team0 192.168.0.254
nmcli dev dis eth1
teamdctl team0 state
nmcli con up team0-port1
nmcli dev dis eth2
teamdctl team0 state
nmcli con up team0-port2
teamdctl team0 state

管理网络组配置文件

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0
DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG="{\"runner\": {\"name\": \"broadcast\"}}"
BOOTPROTO=none
IPADDR0=172.31.0.100
PREFIX0=16
NAME=team0
ONBOOT=yes

管理网络组配置文件

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0-eth1
DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth1
ONBOOT=yes

删除网络组

nmcli connection down team0
teamdctl team0 state
nmcli connection show
nmcli connectioni delete team0-eth0
nmcli connectioni delete team0-eth1
nmcli connection show

网桥

网桥原理

桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其
他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,
并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。

主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、eth2桥接在一起,故而报文被复制到
eth1和eth2,并且发送出去,然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、D

CentOS 8 取消brctl 工具,可以用下面方法查看网桥

#查看桥接情况
[root@centos8 ~]#ip link show master virbr0
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state
DOWN mode DEFAULT group default qlen 1000

配置实现网桥

工具包:bridge-utils,目前 CentOS 8 无此包

[root@centos7 ~]# yum install bridge-utils
#查看网桥
[root@centos7 ~]# brctl show
#查看CAM(content addressable memory内容可寻址存储器)表
[root@centos7 ~]# brctl showmacs br0
#添加和删除网桥
brctl addbr | delbr br0
#添加和删除网桥中网卡
brctl addif | delif br0 eth0
#默认br0 是down,必须启用
[root@centos7 ~]# ifconfig br0 up
#启用STP
[root@centos7 ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c297e67a3 no eth1
eth2
[root@centos7 ~]# brctl stp br0 on
[root@centos7 ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c297e67a3 yes eth1
eth2

注意:NetworkManager只支持以太网接口接口连接到网桥,不支持聚合接口

nmcli命令创建软件网桥

nmcli con add con-name mybr0 type bridge ifname br0
nmcli con modify mybr0 ipv4.addresses 172.31.0.17/16 ipv4.method manual
nmcli con add con-name br0-port0 type bridge-slave ifname eth0 master br0

查看配置文件

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0-port0

范例:nmcli实现网桥

#1创建网桥
[root@centos7 ~]# nmcli con add type bridge con-name br0 ifname br0
[root@centos7 ~]# nmcli connection modify br0 ipv4.addresses 172.31.0.17/16 ipv4.method manual
[root@centos7 ~]# nmcli con up br0

#2加入物理网卡
[root@centos7 ~]# nmcli con add type bridge-slave con-name br0-port0 ifname eth0 master br0
[root@centos7 ~]# nmcli con add type bridge-slave con-name br0-port1 ifname eth1 master br0
[root@centos7 ~]# nmcli con up br0-port0
[root@centos7 ~]# nmcli con up br0-port1

#3查看网桥配置文件
[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
STP=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=172.31.0.17
PREFIX=16
[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0-port0
TYPE=Ethernet
NAME=br0-port0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0

#4安装管理软件包:
[root@centos7 ~]# yum install bridge-utils
[root@centos7 ~]# brctl show
#5删除br0
[root@centos7 ~]# nmcli con down br0
[root@centos7 ~]# rm /etc/sysconfig/network-scripts/ifcfg-br0*
[root@centos7 ~]# nmcli con reload

推荐阅读