22

linux入门系列11--Centos7网络服务管理

 4 years ago
source link: https://segmentfault.com/a/1190000021765342
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

通过前面文章的学习已经掌握了Linux系统配置管理的知识,本文讲解Centos7网络配置知识。

Linux要对外提供服务,需要保证网络通信正常,因此需要正确配置网络参数。本文将讲解如何使用Network Manager配置网络参数、管理网络会话服务,以及如何手工绑定mode6模式双网卡,实现网络的负载均衡。

一、Centos7网络概述

1.1 Centos7网络管理

对于网络功能来说,CentOS7与之前的版本变化较大。

在RHEL/CentOS 6及以前的版本中,网络功能是通过一系列网络相关的脚本文件实现(如/etc/init.d/network文件,及如下/sbin/if*文件等)。

从RHEL/CentOS 7开始,网络功能默认由NetworkManager以服务的形式提供。Network Manager是一个能够动态控制和配置网络的守护进程,管理网络服务和网络连接,对应NetworkManager.service服务(其配置文件/etc/NetworkManager/NetworkManager.conf,默认为空,无需任何配置)

虽然RHEL/CentOS 6中的网络相关的脚本文件仍然以network.service的形式被支持,但是建议使用NetworkManager.service来进行配置和管理。 并且只能选择其中一种,不然会有冲突。

1.2 network.service

etwork.service是系统提供的服务之一,以兼容遗留的网络功能。该服务的运行也被纳入SystemD的管理。

管理命令格式

systemctl start|stop|restart|status network

设置开机启动

systemctl enable network

以上命令设置network.service在系统启动时自动加载,注意,系统启动时,/etc/init.d/network会读取ifcfg文件,并检测NetworkManager是否已经已经启动该设备。如果NetworkManager已经启动该设备,则/etc/init.d/network脚本什么也不做;否则/etc/init.d/network会启动该设备。

1.3 NetworkManager.service

启动networkmanager(注意大小写,linux严格区分大小写)

***systemctl start NetworkManager***

NetworkManager默认不会执行任何脚本,当脚本满足以下条件时,才会安装字母顺序顺序执行。

(1)位于/etc/NetworkManager/dispatcher.d/目录下

(2)拥有root用户的可执行权限

1.4 网络配置文件

无论是network.service,还是NetworkManager.service,都能够使用如下网络相关的配置文件。

(1)全局配置文件

文件名:/etc/sysconfig/network

(2)网卡相关的配置文件

配置文件所在文件夹:/etc/sysconfig/network-scripts/

注意:修改网络配置文件后,需要重新加载网络连接,如果是通过network.service则使用命令:systemctl restart network;如果是通过NetworkManager.service则使用nmcli命令:nmcli connection reload。

二、网络参数配置

配置服务本质就是配置文件,以下演示2种方式

2.1 通过编辑配置文件配置网络

在 RHEL7以前的版本中,网卡配置文件的前缀为 eth,第 1 块网卡为 eth0,第 2 块网卡为 eth1;以此类推。而在 RHEL7中,网卡配置文件的前缀则以 ifcfg 开始, 加上网卡名称共同组成了网卡配置文件的名字,例如 ifcfg-eno16777736。

现在有一个名称为 ifcfg-eno16777736 的网卡设备,我们将其配置为开机自启动,并且 IP 地址、子网、网关等信息由人工指定,其步骤应该如下所示。

(1)找到网卡配置文件

网卡配置文件存放在/etc/sysconfig/network-scripts目录下,形如:ifcfg-eno16777736。

[root@heimatengyun ~]# ls /etc/sysconfig/network-scripts/
ifcfg-eno16777736
...省略部分内容

如图所示就是网卡配置文件。

(2)编辑网卡配置文件

由于在第一篇文章介绍linux的安装时就已经配置好了网络参数并且可以正常上网,所以先查看一下现有的配置文件内容。

[root@heimatengyun ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777736"
UUID="ea487965-c5bc-4b43-9eab-36445d996179"
ONBOOT="yes"
HWADDR="00:0C:29:BC:5E:EF"
IPADDR0="192.168.78.100"
PREFIX0="24"
GATEWAY0="192.168.78.2"
DNS1="114.114.114.114"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"

可以看到根据当时的配置生成了配置,并且也可以正常上网。但其实里边有部分内容可以精简,我们先把原来文件备份一下,然后在重新手动配置一下

[root@heimatengyun ~]# cd /etc/sysconfig/network-scripts/
[root@heimatengyun network-scripts]# ls
ifcfg-eno16777736
...省略部分内容
[root@heimatengyun network-scripts]# cp ifcfg-eno16777736 ifcfg-eno16777736-autobackup
[root@heimatengyun network-scripts]# vi ifcfg-eno16777736

输入以下内容,并保存退出。

注意:备份目的是以防万一配置错误方便恢复,备份文件为ifcfg-eno16777736-autobackup,虽然前缀相同,但是linux系统不会把他当成为网卡设备。

TYPE="Ethernet"
BOOTPROTO="static"
NAME="eno16777736"
ONBOOT="yes"
IPADDR="192.168.78.100"
NETMASK=255.255.255.0
GATEWAY="192.168.78.2"
DNS1="114.114.114.114"

配置项说明:

设备类型:TYPE=Ethernet

地址分配模式:BOOTPROTO=static 表示设置静态ip地址

网卡名称:NAME=eno16777736

是否启动:ONBOOT=yes

IP 地址:IPADDR=192.168.78.100

子网掩码:NETMASK=255.255.255.0 可以不配做

网关地址:GATEWAY=192.168.78.2

DNS 地址:DNS1=114.114.114.114

具体参数值根据自己实际情况进行配置。

(3)重启网卡设备

[root@heimatengyun ~]# systemctl restart network
[root@heimatengyun ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38: icmp_seq=1 ttl=128 time=41.4 ms

重启网卡服务后,可以ping通说明配置成功。

2.2 通过nmtui命令配置网络

通过nmtui命令运行网络配置工具

[root@heimatengyun network-scripts]# nmtui

执行后进入配置工具主界面

3qMVJjF.png!web

通过键盘方向键选择操作项,此处选择“Edit a connection”,按回车键,进入选择网卡界面

eeuAjaU.png!web

选择网卡,然后通过键盘方向键选择编辑(注意,在此界面选择网卡后如果选择Delete会删除配置文件下对应的网卡配置文件)

ai6J7f6.png!web

按回车键,进入编辑界面,然后在ipv4处选择Manual手动指定ip地址

IbuYvej.png!web

如果为折叠状态,在选择后边Show,展示配置界面,如果默认为展开状态则直接进行配置即可

vaAZzeu.png!web

配置ip地址、网关、dns信息

ieEnaaM.png!web

配置完成后,选择“OK”

vqiM3u3.jpg!web

选择“Quit”退出

zmAbQbE.png!web

至此配置完毕。

配置完成后,手动重启网络服务,并测试是否生效。

[root@heimatengyun network-scripts]# systemctl restart network
[root@heimatengyun network-scripts]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38: icmp_seq=1 ttl=128 time=41.4 ms
 ...省略部分内容

三、网络会话管理

Centos7默认使用NetworkManager 来提供网络服务,它是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。

nmcli 是一款基于命令行的网络配置工具,功能丰富,可以使用 nmcli 命令来管理 Network Manager 服务。

3.1 查看网络信息或网络状态

[root@heimatengyun network-scripts]# nmcli connection show 
NAME         UUID                                  TYPE            DEVICE      
eno16777736  13756690-ac77-b776-4fc1-f5535cee6f16  802-3-ethernet  eno16777736 
[root@heimatengyun network-scripts]# nmcli con show eno16777736 
connection.id:                          eno16777736
connection.uuid:                        13756690-ac77-b776-4fc1-f5535cee6f16
connection.interface-name:              --
connection.type:                        802-3-ethernet
...省略部分内容

3.2 网络会话管理

CentosL7 系统支持网络会话功能,允许用户在多个配置文件中快速切换,非常类似 于 firewalld 防火墙服务中的区域技术。

如果我们在公司网络中使用笔记本电脑时需要手动指 定网络的 IP 地址,而回到家中则是使用 DHCP 自动分配 IP 地址。这就需要麻烦地频繁修改 IP 地址,但是使用了网络会话功能后一切就简单多了—只需在不同的使用环境中激活相应 的网络会话,就可以实现网络配置信息的自动切换了。

主要实现原理就是创建2个不同的网络会话,根据需要激活相应的网络会话即可,用到的nmcli命令格式为:connection add 会话名称 type ifname。但是一般只有针对个人电脑使用才会有此需求,而我们主线主要基于服务器进行讲解,因此就不在演示具体用法,感兴趣可以自学查阅相关资料即可。

四、绑定双网卡

生产环境的服务器要求是一天24小时不间断提供服务,借助于网卡绑定技术,不仅 可以提高网络传输速度,还可以确保在其中一块网卡出现故障时,依然可以正常提供网络服务。

centos7进行双网卡绑定有2种方式:采用bonding或采用team。由于篇幅所限,本文只采用bonding模式进行演示。

我们还是以虚拟机中添加网卡进行模拟。具体步骤如下:

4.1 关闭虚拟机

4.2 添加网卡设备

R32iIzu.jpg!web

注意,添加的网卡设备,模式必须相同。本例都采用的是NAT模式。

4.3 配置网卡信息

需要对参与绑定的网卡设备逐个进行设置,把这些原本独立的网卡设备被配置成为一块“从属”网卡,服务于“主”网卡, 不应该再有自己的 IP 地址等信息。在进行了初始设置之后,它们就可以支持网卡绑定。

开启虚拟机,此时进入网卡配置文件查看,是没有新加网卡的配置信息的,还是只有原来的网卡配置文件autobackup-ifcfg-eno16777736。

[root@heimatengyun ~]# cd /etc/sysconfig/network-scripts/
[root@heimatengyun network-scripts]# ls
autobackup-ifcfg-eno16777736  ifdown-sit       ifup-plusb
ifcfg-eno16777736             ifdown-Team      ifup-post
ifcfg-lo

此时通过ip命令可以查看到已经新添加了网卡设备

[root@heimatengyun network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    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: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:bc:5e:ef brd ff:ff:ff:ff:ff:ff
    inet 192.168.78.100/24 brd 192.168.78.255 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:febc:5eef/64 scope link 
       valid_lft forever preferred_lft forever
3: eno33554976: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:bc:5e:f9 brd ff:ff:ff:ff:ff:ff

配置第一张网卡参数

[root@heimatengyun ~]# cd /etc/sysconfig/network-scripts/
[root@heimatengyun network-scripts]# vim ifcfg-eno16777736

输入如下内容并保存

TYPE="Ethernet"
BOOTPROTO=none
NAME="eno16777736"
ONBOOT="yes"
USERCTL="no"
MASTER=bond0
SLAVE=yes

配置第二张网卡参数

[root@heimatengyun network-scripts]# vi ifcfg-eno33554976

输入如下内容并保存

TYPE="Ethernet"
BOOTPROTO=none
NAME="eno33554976"
ONBOOT="yes"
USERCTL="no"
MASTER=bond0
SLAVE=yes

注意:网卡设备名称必须要根据自身电脑来进行配置,修改为自己电脑的网卡名称。

配置主网卡参数

[root@heimatengyun network-scripts]# vim ifcfg-bond0

输入如下内容并保存

BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond0
IPADDR=192.168.78.100
PREFIX=24
GATEWAY=192.168.78.2
DNS1="114.114.114.114"
NM_CONTROLLED=no

4.4 创建网卡驱动文件

Linux 内核支持网卡绑定驱动bonding有七种模式,分别为mode0到mode6。其中这三种mode0、mode1 和 mode6比较常用,mode0为默认模式。

​ mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地 网卡相连的交换机设备上进行端口聚合来支持绑定技术。

​ mode1(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。

​ mode6(平衡负载模式):平时两块网卡均工作,且自动备援,无须交换机设备提供辅 助支持。

创建一个用于网卡绑定的驱动文件,使得绑定后的 bond0 网卡 设备能够支持绑定技术(bonding);同时定义网卡以 mode6 模式进行绑定,且出现故障时自动切换的时间为 100 毫秒。

[root@heimatengyun network-scripts]# vim /etc/modprobe.d/bond.conf

填入如下内容并保存

alias bond0 bonding
options bond0 miimon=100 mode=6

4.5 重启网络服务

重启网络服务(重启系统)后网卡绑定操作即可成功。正常情况下只有 bond0 网卡设备才会 有 IP 地址等信息。

[root@heimatengyun network-scripts]# systemctl restart network
[root@heimatengyun network-scripts]# ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
        inet 192.168.78.100  netmask 255.255.255.0  broadcast 192.168.78.255
        inet6 fe80::20c:29ff:febc:5ef9  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:bc:5e:f9  txqueuelen 0  (Ethernet)
        RX packets 28  bytes 2856 (2.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 83  bytes 8273 (8.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:bc:5e:ef  txqueuelen 1000  (Ethernet)
        RX packets 1054  bytes 112121 (109.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 731  bytes 137795 (134.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eno33554976: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:0c:29:bc:5e:f9  txqueuelen 1000  (Ethernet)
        RX packets 28  bytes 2856 (2.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 83  bytes 8273 (8.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 12  bytes 1088 (1.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12  bytes 1088 (1.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

在宿主机ping主网卡ip,ping通表示双网卡配置成功

zyEbIbe.png!web

注意:偶尔出现重启network后,可以ping通但是却ping不通百度,然而直接重启虚拟机后又正常了。

4.6 验证双网卡自动备援功能

思路:开启另外一台centos(目的是在centos中ping不会自动停止除非按ctrl+c终止,这样就能很好的模拟网卡故障和测试自动备援功能),ping主网卡的ip地址,逐一关闭网卡,直到网卡关闭完后不能ping通。

(1)在另外一台centos中ping前边设置的主网卡ip地址

[root@yum-local-server ~]# ping 192.168.78.100
PING 192.168.78.100 (192.168.78.100) 56(84) bytes of data.
64 bytes from 192.168.78.100: icmp_seq=1 ttl=64 time=0.844 ms
64 bytes from 192.168.78.100: icmp_seq=2 ttl=64 time=0.405 ms

(2)模拟网卡故障,逐一停止网卡,观察步骤1中的数据

在虚拟机开启的情况下,逐一断掉网卡,观察步骤1的数据收发情况

fmMRvmm.jpg!web

会发现当停止一块网卡后,步骤1还是会收到数据,只是中途有短暂的终端。再继续停止第二块网卡后将没有数据收到。直到再次打开网卡后才会继续收到数据。

由此可见,多网卡确实有自动备援功能,避免单块网卡坏掉导致断网的情况。

本文初步探讨网络配置,下一篇文章将讲解磁盘及存储结构相关知识。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK