通过前面文章的学习已经掌握了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严格区分大小写)

  1. ***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。

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

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

(2)编辑网卡配置文件

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

  1. [root@heimatengyun ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
  2. TYPE="Ethernet"
  3. BOOTPROTO="none"
  4. DEFROUTE="yes"
  5. IPV4_FAILURE_FATAL="no"
  6. IPV6INIT="yes"
  7. IPV6_AUTOCONF="yes"
  8. IPV6_DEFROUTE="yes"
  9. IPV6_FAILURE_FATAL="no"
  10. NAME="eno16777736"
  11. UUID="ea487965-c5bc-4b43-9eab-36445d996179"
  12. ONBOOT="yes"
  13. HWADDR="00:0C:29:BC:5E:EF"
  14. IPADDR0="192.168.78.100"
  15. PREFIX0="24"
  16. GATEWAY0="192.168.78.2"
  17. DNS1="114.114.114.114"
  18. IPV6_PEERDNS="yes"
  19. IPV6_PEERROUTES="yes"

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

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

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

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

  1. TYPE="Ethernet"
  2. BOOTPROTO="static"
  3. NAME="eno16777736"
  4. ONBOOT="yes"
  5. IPADDR="192.168.78.100"
  6. NETMASK=255.255.255.0
  7. GATEWAY="192.168.78.2"
  8. 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)重启网卡设备

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

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

2.2 通过nmtui命令配置网络

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

  1. [root@heimatengyun network-scripts]# nmtui

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

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

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

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

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

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

配置完成后,选择“OK”

选择“Quit”退出

至此配置完毕。

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

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

三、网络会话管理

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

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

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

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

3.2 网络会话管理

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

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

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

四、绑定双网卡

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

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

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

4.1 关闭虚拟机

4.2 添加网卡设备

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

4.3 配置网卡信息

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

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

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

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

  1. [root@heimatengyun network-scripts]# ip a
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
  3. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4. inet 127.0.0.1/8 scope host lo
  5. valid_lft forever preferred_lft forever
  6. inet6 ::1/128 scope host
  7. valid_lft forever preferred_lft forever
  8. 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  9. link/ether 00:0c:29:bc:5e:ef brd ff:ff:ff:ff:ff:ff
  10. inet 192.168.78.100/24 brd 192.168.78.255 scope global eno16777736
  11. valid_lft forever preferred_lft forever
  12. inet6 fe80::20c:29ff:febc:5eef/64 scope link
  13. valid_lft forever preferred_lft forever
  14. 3: eno33554976: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  15. link/ether 00:0c:29:bc:5e:f9 brd ff:ff:ff:ff:ff:ff

配置第一张网卡参数

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

输入如下内容并保存

  1. TYPE="Ethernet"
  2. BOOTPROTO=none
  3. NAME="eno16777736"
  4. ONBOOT="yes"
  5. USERCTL="no"
  6. MASTER=bond0
  7. SLAVE=yes

配置第二张网卡参数

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

输入如下内容并保存

  1. TYPE="Ethernet"
  2. BOOTPROTO=none
  3. NAME="eno33554976"
  4. ONBOOT="yes"
  5. USERCTL="no"
  6. MASTER=bond0
  7. SLAVE=yes

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

配置主网卡参数

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

输入如下内容并保存

  1. BOOTPROTO=none
  2. ONBOOT=yes
  3. USERCTL=no
  4. DEVICE=bond0
  5. IPADDR=192.168.78.100
  6. PREFIX=24
  7. GATEWAY=192.168.78.2
  8. DNS1="114.114.114.114"
  9. NM_CONTROLLED=no

4.4 创建网卡驱动文件

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

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

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

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

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

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

填入如下内容并保存

  1. alias bond0 bonding
  2. options bond0 miimon=100 mode=6

4.5 重启网络服务

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

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

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

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

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

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

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

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

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

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

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

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

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

linux入门系列11--Centos7网络服务管理的更多相关文章

  1. Linux入门进阶第四天——服务管理

    以下均基于CentOS6.3,其中有部分命令已经过时,在CentOS7中不再使用,请注意 [更新]:CentOS7改变: CentOS .0中一个最主要的改变,就是切换到了systemd.它用于替代红 ...

  2. linux入门系列14--ssh服务及主机远程管理

    通过前面十余篇文章的介绍,相信已经初步入门Linux本地管理的基本方法了,后续的文章将介绍Linux中常用的服务部署以及如何为外部提供相应的服务. 系列文章第三篇"linux入门系列3--l ...

  3. linux入门系列12--磁盘管理之分区、格式化与挂载

    前面系列文章讲解了VI编辑器.常用命令.防火墙及网络服务管理,本篇将讲解磁盘管理相关知识. 本文将会介绍大量的Linux命令,其中有一部分在"linux入门系列5--新手必会的linux命令 ...

  4. linux入门系列13--磁盘管理之RAID、LVM技术

    前一篇文章学习了磁盘分区.格式化.挂载等相关知识,本文将讲解RAID和LVM技术. 磁盘管理操作主要是运维人员用的较多,如果只是单纯的开发人员,可以先略过本文.但是在很多小公司里往往都是一人多用,运维 ...

  5. linux入门系列18--Web服务之Apache服务1

    前面系列文章讲解了Linux下通过文件传输.文件共享.邮件系统来分享和获取资源,本文讲解网络资源获取和共享的另外一种形式,通过Apache服务程序来提供Web服务. 本文先讲解目前主流的Web服务程序 ...

  6. linux入门系列20--Web服务之LNMP架构实战

    作为本入门系列最后一篇文章,将演示如何在CentOS7环境下搭建LNMP环境来构建个人博客网站. 常见搭建网站的方式有LAMP.LNMP.IIS.Nginx.Tomcat等等,本文演示比较流行的基于L ...

  7. linux入门系列18--Web服务之Apache服务2

    接上一篇文章,在了解Apache基本配置以及SELinux相关知识后,继续演示Apache提供的虚拟主机功能以及访问控制方式. 如果还没看上一篇的建议先查看后再来,上篇文章"linux入门系 ...

  8. linux入门系列5--新手必会的linux命令

    上一篇文章"linux入门系列4--vi/vim编辑器"我们讨论了在linux下如何快速高效对文本文件进行编辑和管理,本文将进一步学习必须掌握的linux命令,掌握这些命令才能让计 ...

  9. linux入门系列16--文件共享之Samba和NFS

    前一篇文章"linux入门系列15--文件传输之vsftp服务"讲解了文件传输,本篇继续讲解文件共享相关知识. 文件共享在生活和工作中非常常见,比如同一团队中不同成员需要共同维护同 ...

  10. linux入门系列2--CentOs图形界面操作及目录结构

    上一篇文章"linux入门系列1--环境准备及linux安装"直观演示了虚拟机软件VMware和Centos操作系统的安装,按照文章一步一步操作,一定都可以安装成功.装好系统之后, ...

随机推荐

  1. 原型,原型链,给予原型和class的继承

    学习react的时候遇到了class方式的继承语法,原理和代码的解释很详细,值得一读. 原型每个函数(构造函数)都有一个 prototype 属性,指向该函数(构造函数)的原型对象.实例没有 prot ...

  2. C#支付宝支付接口H5版(手机网页支付)

    接口官方文档 https://docs.open.alipay.com/203/107090/ 首先在Nuget 安装 Alipay /// <summary>         /// 支 ...

  3. rabbitmq系列(三)消息幂等性处理

    一.springboot整合rabbitmq 我们需要新建两个工程,一个作为生产者,另一个作为消费者.在pom.xml中添加amqp依赖: <dependency> <groupId ...

  4. oracle的一些简单语法

    1.创建主键自增: --创建序列 create sequence seq_tb_user minvalue nomaxvalue start with increment by nocycle --一 ...

  5. Redis常用命令详细介绍

    一.字符串 字符串键是Redis最基本的键值对类型,将一个单独的键和一个单独的值关联起来.通过字符串键,不仅可以存储和读取字符串,如果输入能被解释为整数和浮点数,还能执行自增或自减操作. 1.SET: ...

  6. flask路由要点

    1.参数类型intfloatstringpath uuid<any(a, b): an> 枚举, an必须是any中的值2.多个url指向一个视图函数是可行的3.url_for('蓝图名字 ...

  7. item方法

    class Person: def __init__(self, name, age): self.name = name self.age = age def __getitem__(self, i ...

  8. HTML5浏览器支持及兼容性处理

    1.现代的浏览器都支持HTML5. 2.所有浏览器不管是新的还是旧的对无法识别的元素会作为内联元素自动处理. 3.HTML5定义了8个HTML语义元素,所有这些元素都是块级元素,为了能让旧版本的浏览器 ...

  9. 异想家IDEA的偏好配置

    最好将配置文件位置改为软件安装目录下,因为只有自己用,易于便携. 修改bin目录下的idea.properties,注释#去掉修改idea.config.path.idea.system.path配置 ...

  10. 完美实现STM32单总线挂多个DS18B20

    一般常见的STM32的关于DS18B20的例程都是检测一个传感器,代码一般都是跳过ROM检测,直接获取温度值.这种写法并不适用于单总线上挂载多个DS18B20的情况,Sandeepin的这个代码就是针 ...