纸上得来终觉浅,绝知此事要躬行。
1. CentOS6 网络配置
使用 NetworkManager 服务会在你修改完文件后,自动生成 /etc/resolv.conf,这个就是 DNS 地址。
1.1 配置文件
配置文件
- 网络配置文件
/etc/sysconfig/network-scripts/ifcfg-xxx
DNS
配置文件/etc/resolv.conf
- 主机名配置文件
/etc/hosts
- 优先解析
hosts
里定义的域名,然后没有才会去DNS
里查
- 路由配置文件
/etc/sysconfig/network-scripts/route-IFNAME
修改配置文件
# ip、mask、gateway、dns相关配置文件
# vim /etc/sysconfig/network-scripts/ifcfg-xxx
NAME=xxx # 网卡名称
DEVICE=XXX # 设备名称
ONBOOT=yes # 是否自启动
BOOTPROTO=dhcp/none # DHCP还是静态,不写就是手工指定。
IPADDR=xx.xx.xx.xx # IP地址
PREFIX=xx # 掩码,新格式
NETMASK=xxx.xxx.xxx.xxx # 掩码,旧格式,可以使用新格式代替
DNS1=xxx.xxx.xxx.xxx # 指定主DNS地址
DNS2=xxx.xxx.xxx.xxx
HWADDR=xx:xx:xx:xx:xx:xx # 硬件MAC地址
MACADDR=yy:yy:yy:yy:yy:yy # 手动修改MAC地址要用MACADDR,而不能用HWADDR
# 配置文件事例
# /etc/sysconfig/network-scripts/ifcfg-eth0
NAME=eth0
DEVICE=eth0
IPADDR=192.168.100.100
PREFIX=24
GATEWAY=192.168.100.254
DNS1=223.5.5.5
1.2 配置网卡别名
- 在实现一个网卡获取两个
ip
地址,dhcp
自动获取和固定ip
地址 - 要注意,
dhcp
要先配置,然后新增的设为固定ip
地址
# 给网卡设置另外一个地址,指定label设备名为网卡名:xxx
# /etc/sysconfig/network-scripts/ifcfg-eth1:office
DEVICE=eth1:office
BOOTPROTO=none
IPADDR=5.5.5.5
PREFIX=24
2. CentOS7 网络配置
把网卡命名方式改为传统
eth
方式
(1) 修改/boot/grub2/grub.cfg文件
(2) linux16那行,最后添加net.ifnames=0
2.1 nmcli 命令
- 命令行网络配置工具
# 修改连接名称为 eth0
nmcli connection modify enp0s25 connection.id eth0
# 添加一条新的配置
nmcli connection add con-name eth1-lan type ethernet ifname eth1
# 重启连接
nmcli connection reload
# 去掉 ip 连接,不 down 设备
nmcli dev disconnect
2.2 nmtui 命令
- 字符界面网络配置工具
- 编辑连接、激活连接、设置主机名
3. 网卡绑定
网卡绑定: 将多块网卡绑定同一 IP 地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一 IP 地址是不可能的。通过 bonding 虚拟一块网卡对外提供连接,物理网卡的被修改为相同的 MAC 地址。
3.1 bond
模式
在 active-backup
、balance-tlb
和 balance-alb
模式不需要 交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco
交换机需要在模式 0
、2
和 3
中使用 EtherChannel
,但在模式 4
中需要 LACP
和 EtherChannel
。
高可用策略
Mode 0 (balance-rr)
- 轮转策略:从头到尾顺序的在每一个
slave
接口上面发送数据包 - 本模式提供负载均衡和容错的能力
- 轮转策略:从头到尾顺序的在每一个
Mode 1 (active-backup)
- 主备策略:只有一个
slave
被激活,当且仅当活动的slave
接口失败时才会激活其他slave
- 为了避免交换机发生混乱此时绑定的
MAC
地址只有一个外部端口上可见
- 主备策略:只有一个
Mode 3 (broadcast)
- 广播策略:在所有的
slave
接口上传送所有的报文,提供容错能力
- 广播策略:在所有的
配置方法
# 新建文件/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BONDING_OPTS="miimon=100 mode=0"
BOOTPROTO=none
IPADDR=
PREFIX=
GATEWAY=
DNS1=
DNS2=
DOMAIN=
# 修改eth0的ifcfg文件
# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
# 修改eth1的ifcfg文件
# /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
# 查看bond0状态
cat /proc/net/bonding/bond0
3.2 team 模式
team
网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量。
- 网络组不同于旧版中
bonding
技术,提供更好的性能和扩展性 - 网络组由内核驱动和
teamd
守护进程实现
runner
方式
broadcast
roundrobin
activebackup
loadbalance
lacp
使用方法
- 创建 team
# 创建team的命令格式
nmcli con add type team con-name CNAME ifname INAME [config JSON]
# 命令格式说明
CNAME连接名
INAME接口名
JSON指定runner方式
# JSON指定runner方式的格式
# METHOD可以是上述runner方式的任意一种
'{"runner": {"name": "METHOD"}}'
- 添加从属接口
# 添加从属接口命令格式
nmcli con add type team-slave con-name CNAME ifname INAME master TEAM
# 命令格式说明
CNAME连接名
INAME网络接口名
TEAM网络组接口名,连接名若不指定,默认为team-slave-IFACE
- 查看 team 状态
teamdctl team0 state
- 关闭 team 模式
# 关闭team,连slave也一起关闭掉
nmcli connect down team0
- 启动 team 模式
# 启动的时候,只会自动启动team,所以要手动启动各个slav
nmcli connect up team0
nmcli conect up team-slave-eth0
nmcli connect up team-slave-eth1
# 创建team的名称为team0,指定runner方法为loadbalance
nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name": "loadbalance"}}'
# 规划team0对外的网络配置
nmcli con mod team0 ipv4.addresses 192.168.1.100/24
nmcli con mod team0 ipv4.method manual
# 绑定多个物理网卡到team0上
nmcli con add type team-slave con-name team0-eth1 ifname eth1 master team0
nmcli con add type team-slave con-name team0-eth2 ifname eth2 master team0
# 启动team0
nmcli con up team0
nmcli con up team0-eth1
nmcli con up team0-eth2
# 查看team0状态和从属网卡状态
teamdctl team0 state
nmcli dev dis eth1