CentOS7下的网络配置管理

一、让配置永久有效的办法:修改配置文件

  1. 与网卡相关(课配置网卡的IP,掩码,网关,DNS)

    /etc/sysconfig/network-scripts/ifcfg-INTERFACE

ifcfg-eno.png

字段解释:

TYPE            #接口类型 常见Ethernet,Bridge
BOOTPROTO       #分配ip时候采用的协议,一般有dhcp或者static。设定为static的时候,还要提供IPADDR和NETMASK
DNS1            #在这个文件里面,我们也可以指定dns服务器,局域网内一般是填网关的ip,可以定义3个。
NM_CONTROLED    #是否由NetworkManager控制,Centos6上建议为no。
USERCTL         #是否可由用户激活该设备,建议为no
ONBOOT          #是否开机启动
PEERDNS         #如果BOOTPROTO为dhcp,是否允许dhcp服务器分配的dns服务器指向信息直接覆盖至/etc/resolv.conf

网卡命名机制

systemd对网络设备的命名方式 CentOS7

a.如果固件(Firmware)或BIOS为主板上集成的设备(即,板载设备),如eno1。如果不成立,则方案b备选生效。    #集成网卡
b.如果Firmware或BIOS为PCI-E扩展槽,如ens1。如果也不成立,则方案c备选生效。                       #独立网卡
c.如果硬件接口的物理位置拓扑信息可用,如enp2s0。如果也不成立,则方案e备选生效。                    #usb网卡
d.如果用户显式启动,也可根据MAC地址进行命名,如enx237a1dc56                                      #默认关闭
e.以上都不成立,传统命名方式,如eth0

延伸:通过配置文件来给网卡,配置多IP地址

配置文件:新建一个ifcfg-别名 (注意:需要关闭NetworkManager)

cp ifcfg-eth0 ifcfg-eth0:0

网卡别名1.png

首先我们复制一份网卡的配置,用作修改。

网卡别名2.png

接着使用vim删除一些不必要的信息,添加一行onparent=yes来表示设备附属于eno16777736

然后使用service network restart 来重启一下服务。

网络别名3.png

我们可以看见接口那里多了一个eno16777736:0,而且物理地址和eno16777736相同。

接着我们使用ping命令来尝试一个能不能使用端口连通外网

网卡别名4_ping.png

ping命令

    -c    #指定次数
    -I    #指定源ip

ssh.png

甚至ssh连上去再ping

不过需要注意的是给网卡拿多一个ip(ip别名)不支持dhcp自动获取,要手动指定静态ip。

2.路由相关的配置文件 (路由就是指路,告诉别人路怎么走)

    /etc/sysconfig/network-scripts/route-INTERFACE (route-eth0)#默认不存在
        两种定义路由的风格:
      1. Target via GW
      #要访问Target的ip,就要走GW这个网关。
      #按照格式来说的话就是,如果你的目标是Target,那么你的下一跳(via)就去找GW这个ip。
                
       2.每三行定义一条路由
       ADDRESS0=192.168.0.0
       NETMASK0=255.255.255.0
       GATEWAY0=192.168.0.1
                    
      #这三行的意思是:想要与这个网段(ipAddress+Netmask)的ip通信的话,就要从指定的网关(GATEWAY)走
      #所以就是每三条定义一个路由。

route -n.png

首先,我们使用route -n来查看当前的路由有哪些。

我们可以看见,

第一行表示,假如目标是外部网络(Destination 0.0.0.0),则走192.168.2.1这个网关(Gateway)。U表示启用,G是网关。

第二行表示,如果目的地是192.168.2.0/24的这个私有地址网段,则不需要网关。则可以进行内部通信。 

3.dns服务器指定

        /etc/resolv.conf            #最多可以出现三次,不仅可以在这里配置,也可以在网卡那里单独指定DNS服务器
        nameserver DNS_SERVER_IP1
        nameserver DNS_SERVER_IP2
        nameserver DNS_SERVER_IP3
        
resolv.conf的关键字主要有四个,分别是:
nameserver             #定义DNS服务器的IP地址
domain               #定义本地域名
search               #定义域名的搜索列表
sortlist              #对返回的域名进行排序

resolv.conf.png

因为网卡那里开启了PEERDNS,所以网卡启动的时候读取到的DNS服务器已经输入到这个文件中。

4.主机名相关

/etc/hostname

二、让配置即时(临时)生效的办法:使用命令管理

ip命令        #功能强大,可以用于替换ifconfig和nmcli

使用ip help来获得帮助。而且这个命令,可以省略输入,或者使用tab键来补全,所以忘记的时候,可以尽情地按tab键。

常用的子选项

link    #管理网络设备的

常用组合

ip link set DEVICE [ up | down ]

需要注意的是,如果把ip别名设置为down的话,整个设备都会变成down。

ip link set eno16777736:0 down

那么eno16777736这个网卡也会down掉。

在练习使用ip命令的时候,推荐直接使用虚拟机,不要用xshell等工具连接。

因为使用ip link和ip addr flush等命令会经常断线。

addr    #配置ip地址

Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]
                                    [ CONFFLAG-LIST ]
       ip addr del IFADDR dev STRING [mngtmpaddr]
       ip addr {show|save|flush} [ dev STRING ] [ scope SCOPE-ID ]
                            [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ] [up]
       ip addr {showdump|restore}
名词解释:    #|表示多选一,[]表示可选选项
IFADDR := PREFIX | ADDR peer PREFIX
          [ broadcast ADDR ] [ anycast ADDR ]
          [ label STRING ] [ scope SCOPE-ID ]
SCOPE-ID := [ host | link | global | NUMBER ]
FLAG-LIST := [ FLAG-LIST ] FLAG
FLAG  := [ permanent | dynamic | secondary | primary |
           tentative | deprecated | dadfailed | temporary |
           CONFFLAG-LIST ]
CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG
CONFFLAG  := [ home | nodad | mngtmpaddr | noprefixroute ]
LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]
LFT := forever | SECONDS

常用组合:

1.给设备添加ip,并设置ip别名。

ipaddr add IP_ADDRESS dev DEVICE label IP_ALIAS   ip别名可以通过ifconfig看到。

ip-addr-add label.png

2.删除指定的ip

ip addr del.png

3.指定并查看特定状态的设备

ipaddr show_.png

ip addr show表示显示全部设备的ip地址,可以简写成ip a。

或者用选项来筛选,如上面这条命令则是表示显示第二子网,scope类型为global的ip。

    scope 作用域(一般很少主动设置)

    global    #ip全局有效#ip在内核上,能相应外部的请求
    link     #仅配置的那个设备有相应#ip只在设备上,接受请求的网卡有这个ip才会响应,否则不会转发。
    host     #仅本机内部有有响应#ip只在本机通信中有用,就像被人ping不到我们的127.0.0.1一样

4.替换IP地址

ip-addr-replace.png

5..清空所有ip

ip addr flush dev DEVICE

ip addr flush.png

注意:连接了xshell做ip命令的练习的话,会经常断开很麻烦。

所以练习的时候还是不要用xshell,直接在虚拟机那里做试验。


route    #配置路由

常用组合:

add TARGET via GW  dev INTERFACE src SOURCE_IP   #添加路由条目
add default via GW dev INTFACE                     #设置默认网关
1.添加默认路由。

iproute default.png

这个案例中,我们可以看出只有两个私有地址地址的路由

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eno16777736
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eno16777736
#第一条是,访问192.168.0.0/24这个网段的ip,往eno16777736这个接口走。
#第二条是,访问192.168.2.0/24这个网段的ip,往eno16777736这个接口走。
所以访问外网地址的时候,我们便无处可走。
所以要添加一条路由,访问外网要怎么走。
#添加ip route add default via 192.168.2.1 dev eno16777736则是告诉大家:
#如果不是访问上面两个私有网段的地址,则其余的都让192.168.2.1这个ip作为网关帮忙转发。

2.删除特定路由条目

iproute del.png

三、查看网络状态的工具

网络状态查看

1.netstat

        -n        #num,不解析域名,显示为ip状态
        -t        #显示tcp相关的状态
        -u        #显示udp相关的状态
        -l        #listen,显示状态为监听的链接
        -p        #program,显示相关进程
        -e        #扩展格式
        -r        #raw socket,裸套接字
        -a        #显示监听状态和非监听状态

常用组合:

tnl-nul.png

netstat -tnl    #把以tcp协议传输且处于监听状态的端口,以ip形式输出。
netstat -unl    #把以udp协议传输且处于监听状态的端口,以ip形式输出。

tan-uan.png

netstat -tan    #输出tcp协议的端口状态
netstat -uan    #输出udn协议的端口状态

显示路由表

    -r     #显示路由表

    -n     #ip格式

netstat-nr.png

2.ifconfig

-a          #什么都不加,或者-a的时候,表示显示当前所有设备的ip,包括ip别名。
DEVICE IPADDRESS    #为设备指定ip地址,立即生效。但重启网络之后还是按配置文件来。

ifconfig.png

重启网卡之后,ip别名还是取回网卡设置192.168.2.133这个ip。

3.nmcli    (NetworkManager的rpm安装而来) 

如果关了NetworkManager服务的话,是不能用的。

这个命令有一个很有趣的地方,就是子命令可以省略输入

nmcli.png

而且我们可以看到,这个device子命令,显示的是实体的设备。

之前配置的eno16777736:0的IP别名,在这里只会显示成设备的一个ip。

这点与ifconfig的不一样。

4.hostnamectl,hostname查看主机名或获得本机的IP

hostnamectl.png


原创文章,作者:菠菜,如若转载,请注明出处:http://www.178linux.com/13528