别名与绑定
别名
网卡别名就是一张物理网卡上配置多个IP地址,实现类似子接口之类的功能。
在配置网卡别名时需要关闭 NetworkManager 服务,这是在图形界面上管理网络接口的服务。
[root@CentOS7 ~]# cat > /etc/sysconfig/network-scripts/ifcfg-ens33:1 #为设备别名生成独立的接口配置文件
DEVICE=ens33:1
IPADDR=1.1.1.1 #必须使用静态联网
NETMASK=255.0.0.0
ONPARENT=yes
^C
[root@CentOS7 ~]# service network restart #重启网络服务
Restarting network (via systemctl): [ OK ]
[root@CentOS7 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:d5:dd:f9 brd ff:ff:ff:ff:ff:ff
inet 192.168.30.2/24 brd 192.168.30.255 scope global dynamic ens33
valid_lft 604786sec preferred_lft 604786sec
inet 1.1.1.1/8 brd 1.255.255.255 scope global ens33:1 #设备别名生效
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed5:ddf9/64 scope link
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:d5:dd:03 brd ff:ff:ff:ff:ff:ff
inet 172.20.103.22/16 brd 172.20.255.255 scope global dynamic ens34
valid_lft 86393sec preferred_lft 86393sec
inet6 fe80::20c:29ff:fed5:dd03/64 scope link
valid_lft forever preferred_lft forever
也可以使用 ip 命令生成网卡别名(临时生效,重启消失)
[root@CentOS7 ~]# ip addr add 2.2.2.2/8 dev ens34 label ens34:1 #使用label生成网卡别名
[root@CentOS7 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:d5:dd:f9 brd ff:ff:ff:ff:ff:ff
inet 192.168.30.2/24 brd 192.168.30.255 scope global dynamic ens33
valid_lft 604580sec preferred_lft 604580sec
inet 1.1.1.1/8 brd 1.255.255.255 scope global ens33:1
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed5:ddf9/64 scope link
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:d5:dd:03 brd ff:ff:ff:ff:ff:ff
inet 172.20.103.22/16 brd 172.20.255.255 scope global dynamic ens34
valid_lft 86187sec preferred_lft 86187sec
inet 2.2.2.2/8 scope global ens34:1 #网卡别名定义成功
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed5:dd03/64 scope link
valid_lft forever preferred_lft forever
绑定 Bonding
将多块网卡绑定同一 IP 地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 Bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的 MAC 地址。
Bonding的工作模式分为很多模式,常见的有
Mode 0 (balance-rr)轮转(Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力
Mode 1 (active-backup)
活动-备份(主备)策略:只有一个slave被激活,当且仅当活动的slave接口失败时才会激活其他slave。为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见
Mode 3 (broadcast)
广播策略:在所有的slave接口上传送所有的报文,提供容错能力
active-backup、balance-tlb和balance-alb模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需要在模式0、2 和3 中使用EtherChannel,但在模式4中需要LACP和EtherChannel。
配置 Mode 1 Bonding
1、创建虚拟网卡
[root@CentOS7 ~]# cat > /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BONDING_OPTS="miimon=100 mode=1" #每100毫秒检测一次链路状态 模式为Bonding 1
IPADDR=192.168.30.2
PREFIX=24
2、配置物理网卡
[root@CentOS7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
BOOTPROTO=none #不适用dhcp
MASTER=bond0 #主网卡为bond0
SLAVE=yes #定义此网卡为从网卡
USERCTL=no
[root@CentOS7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens37
DEVICE=ens37
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
3、重启网络服务
[root@CentOS7 ~]# systemctl restart network.service
[root@CentOS7 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether 00:0c:29:d5:dd:f9 brd ff:ff:ff:ff:ff:ff
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:d5:dd:03 brd ff:ff:ff:ff:ff:ff
inet 172.20.103.22/16 brd 172.20.255.255 scope global dynamic ens34
valid_lft 86395sec preferred_lft 86395sec
inet6 fe80::20c:29ff:fed5:dd03/64 scope link
valid_lft forever preferred_lft forever
4: ens37: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether 00:0c:29:d5:dd:f9 brd ff:ff:ff:ff:ff:ff #两块网卡MAC地址一样,与主网卡bond0相同
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether 00:0c:29:d5:dd:f9 brd ff:ff:ff:ff:ff:ff
inet 192.168.30.2/24 brd 192.168.30.255 scope global bond0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed5:ddf9/64 scope link
valid_lft forever preferred_lft forever
查看bond状态 /proc/net/bonding/BondName
[root@CentOS7 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens33
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:d5:dd:f9
Slave queue ID: 0
Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:d5:dd:0d
Slave queue ID: 0
移除bond网卡
[root@CentOS7 ~]# ifconfigbond0 down
[root@CentOS7 ~]# rmmod bonding
再将物理网卡的配置还原,然后重启网络服务就完成了。
nmcli命令
nmcli 是命令行的NetworkManager工具,会自动把配置写到/etc/sysconfig/network-scripts/目录下面。
语法:nmcli [选项] 对象 [操作] [参数]
[root@CentOS7 ~]# nmcli connection add con-name ens37 ifname ens37 type ethernet ipv4.method auto connection.autoconnect yes
Connection 'ens37' (e0a37a4f-f514-4e74-bb56-c6eae61c880c) successfully added.
[root@CentOS7 ~]# nmcli connection show
NAME UUID TYPE DEVICE
Wired connection 1 e6d3dfce-92af-3e00-9ea1-1e57c14b6ebc 802-3-ethernet ens37
ens33 81c16150-23d5-4a7a-91c2-1051cc39ce99 802-3-ethernet ens33
ens37 e0a37a4f-f514-4e74-bb56-c6eae61c880c 802-3-ethernet --
[root@CentOS7 ~]# nmcli connection up ens37
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
对象有6个,经常用到的有:
connection:连接
操作:show:显示连接信息up:开启连接
down关闭连接
add:创建连接
modify:配置连接
clone:复制连接
edit:编辑连接
delete:删除连接
monitor:监控连接
device:设备
操作:status:设备状态show:显示设备信息
set:设置设备状态
reapply:重启设备
modify:配置设备
disconnect:断开连接
delete:删除设备
monitor:监控设备
general:综合
网络组与桥接
网络组(Network Teaming)
在CentOS 7中推荐使用网络组来将多个网卡进行聚合,因为网络组的性能更好,从而使用容错与提高吞吐量。网络组功能有内核驱动与 teamd 守护进程实现。
网络组也提供多个工作模式(runner),常见的有:
broadcast
roundrobin
activebackup
loadbalance
lacp(implements the 802.3ad Link Aggregation Control Protocol)
配置 activebackup 模式网络组
1、删除原有配置文件并重载网卡配置
[root@CentOS7 network-scripts]# rm -f ifcfg-ens37
[root@CentOS7 network-scripts]# ls
ifcfg-ens33 ifdown-ib ifdown-ppp ifdown-tunnel ifup-ib ifup-plusb ifup-Team network-functions
ifcfg-lo ifdown-ippp ifdown-routes ifup ifup-ippp ifup-post ifup-TeamPort network-functions-ipv6
ifdown ifdown-ipv6 ifdown-sit ifup-aliases ifup-ipv6 ifup-ppp ifup-tunnel
ifdown-bnep ifdown-isdn ifdown-Team ifup-bnep ifup-isdn ifup-routes ifup-wireless
ifdown-eth ifdown-post ifdown-TeamPort ifup-eth ifup-plip ifup-sit init.ipv6-global
[root@CentOS7 network-scripts]# nmcli connection reload #重载网卡配置
[root@CentOS7 network-scripts]# nmcli connection show
NAME UUID TYPE DEVICE
Wired connection 1 84a91cde-74ad-36bb-8200-29cf43fc4cb6 802-3-ethernet ens38
Wired connection 2 5bb7f684-4877-3ddf-b9bd-4c28e95085be 802-3-ethernet ens37
ens33 81c16150-23d5-4a7a-91c2-1051cc39ce99 802-3-ethernet ens33
2、生成网卡配置文件
[root@CentOS7 ~]# nmcli connmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}' ipv4.method manual ipv4.addresses 172.20.111.54/16
Connection 'team0' (cc2ae04a-71b4-4c11-85a4-64bee0ae89c3) successfully added. #team0配置成功
[root@CentOS7 ~]# nmcli connection add type team-slave con-name team0_ens37 ifname ens37 master team0
Connection 'team0_ens37' (70e29b1e-d1f2-4cc1-966b-0033f11d2c13) successfully added. #生成ens37配置文件
[root@CentOS7 ~]# nmcli connection add type team-slave con-name team0_ens38 ifname ens38 master team0
Connection 'team0_ens38' (f5f2859f-dccd-46c2-b363-393816d9d743) successfully added. #生成ens38配置文件
[root@CentOS7 ~]# nmcli connection show #新的ens37、ens38配置并没有激活
NAME UUID TYPE DEVICE
Wired connection 1 84a91cde-74ad-36bb-8200-29cf43fc4cb6 802-3-ethernet ens38
Wired connection 2 5bb7f684-4877-3ddf-b9bd-4c28e95085be 802-3-ethernet ens37
ens33 81c16150-23d5-4a7a-91c2-1051cc39ce99 802-3-ethernet ens33
team0 cc2ae04a-71b4-4c11-85a4-64bee0ae89c3 team team0
team0_ens37 70e29b1e-d1f2-4cc1-966b-0033f11d2c13 802-3-ethernet --
team0_ens38 f5f2859f-dccd-46c2-b363-393816d9d743 802-3-ethernet --
3、激活网卡配置
[root@CentOS7 ~]# nmcli connection up team0_ens37 #启用team_ens配置
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
[root@CentOS7 ~]# nmcli connection up team0_ens38
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
[root@CentOS7 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 81c16150-23d5-4a7a-91c2-1051cc39ce99 802-3-ethernet ens33
team0 cc2ae04a-71b4-4c11-85a4-64bee0ae89c3 team team0
team0_ens37 70e29b1e-d1f2-4cc1-966b-0033f11d2c13 802-3-ethernet ens37
team0_ens38 f5f2859f-dccd-46c2-b363-393816d9d743 802-3-ethernet ens38
Wired connection 1 84a91cde-74ad-36bb-8200-29cf43fc4cb6 802-3-ethernet --
Wired connection 2 5bb7f684-4877-3ddf-b9bd-4c28e95085be 802-3-ethernet --
[root@CentOS7 ~]# teamdctl team0 state
setup:
runner: activebackup
ports:
ens37
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens38
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
active port: ens37
网络组的规则
启动网络组接口不会自动启动网络组中的port接口
启动网络组接口中的port接口总会自动启动网络组接口
禁用网络组接口会自动禁用网络组中的port接口
没有port接口的网络组接口可以启动静态IP连接
启用DHCP连接时,没有port接口的网络组会等待port接口的加入
桥接
把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。