网络管理

1、网卡命名方式

1.1 网卡名称的组成格式

  • 前两个字母标识固件
    • 以太网卡以 en 开头
    • 无线网卡以 wl 开头
  • 后一个字母标识设备结构
    • o:主板上集成的设备的设备索引号
    • s:扩展槽的索引号
    • p s:基于拓扑的命名。如enp2s1,表示PCI总线上第2个总线的第1个插槽的设备索引号
    • x:基于MAC地址的命名

1.2 传统网卡命名方式

传统的网卡命名方式:
以太网卡 eth [0,1,2,…]
无线网卡 wlan [0,1,2,…]

1.3 Redhat7网卡命名机制

Systemd对网卡的命名方式:

  • 规则1:如果从BIOS中能够取到可用的,板载网卡的索引号,则使用这个索引号命名。例如:eno1
  • 规则2:如果从BIOS中能够取到可以用的,网卡所在的PCI-E热插拔插槽的索引号,则使用这个索引号命名。例如:ens1
  • 规则3:如果硬件接口的位置信息可用,则根据此信息进行命名。例如:enp2s0
  • 规则4:根据MAC地址命名,默认不开启。例如:enx2387a1dc56
  • 规则5:上述均不可用时,则使用传统命名机制。

注意:网卡的命名方式有dell的biosdevname和systemd的net.ifnames两种命名规范;在此主要使用systemd的net.ifnames方案。

1.5 回归传统网卡命名

#修改网卡配置文件
[root@hzz ~]# cd /etc/sysconfig/network-scripts/
[root@hzz network-scripts]# mv ifcfg-ens33 ifcfg-eth0
[root@hzz network-scripts]# vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
NAME=eth0                   #此处要把ens33改成eth0
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth0                 #此处要把ens33改成eth0
ONBOOT=yes

#编辑/etc/default/grub配置文件,在以GRUB_CMDLINE_LINUX开头的行内rhgb的前面加上net.ifnames=0 biosdevname=0
[root@hzz ~]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

#为grub2生成其配置文件
[root@hzz ~]# grub2-mkconfig -o /etc/grub2.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-fd0bcf5782d24ba5b903b175c35f328e
Found initrd image: /boot/initramfs-0-rescue-fd0bcf5782d24ba5b903b175c35f328e.img
done

#重启系统
[root@hzz ~]# reboot

2、网络管理常用命令

2.1 ifconfig命令

ifconfig命令,查看当前处于活动状态的所有网络接口(网卡)的信息,也可以临时修改网络接口(网卡)的配置。

#查看当前处于活动状态的所有网络接口
[root@hzz ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.156  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::dbd:1db2:658d:30ab  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ab:61:83  txqueuelen 1000  (Ethernet)
        RX packets 3286  bytes 273792 (267.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4677  bytes 615915 (601.4 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 1  (Local Loopback)
        RX packets 72  bytes 5560 (5.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 72  bytes 5560 (5.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

#仅查看eth0网卡状态
[root@hzz ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.156  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::dbd:1db2:658d:30ab  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ab:61:83  txqueuelen 1000  (Ethernet)
        RX packets 4932  bytes 410142 (400.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7576  bytes 944073 (921.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

#查看所有网卡状态信息, 包括禁用和启用
[root@hzz ~]# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.156  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::dbd:1db2:658d:30ab  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ab:61:83  txqueuelen 1000  (Ethernet)
        RX packets 5834  bytes 484471 (473.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9030  bytes 1113649 (1.0 MiB)
        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 1  (Local Loopback)
        RX packets 72  bytes 5560 (5.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 72  bytes 5560 (5.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ifconfig输出结果

#第一行网卡基本信息:
<UP,BROADCAST,RUNNING,MULTICAST>
        UP                      #表示接口已启用
        BROADCAST               #表示支持广播
        RUNNING                 #表示接口在工作中
        MULTICAST               #表示支持组播
        MTU                     #1500(最大传输单元):1500字节

#第二行IPv4地址信息:
inet 192.168.52.156             #网卡的IP地址
netmask 255.255.255.0           #IP地址掩码
broadcast 192.168.52.255        #广播地址。

#第三行IPv6地址信息:
inet6 fe80::dbd:1db2:658d:30ab  #网卡的IPv6地址。
prefixlen 64                    #IPv6地址掩码长度。
scopeid 0x20<link>              #作用域,link表示仅该接口有效。

#第四行mac地址信息:
ether 00:0c:29:ab:61:83         #网卡接口的MAC地址。
txqueuelen 1000                 #传输队列长度。
(Ethernet)                      #接口类型为Ethernet。

#第五,六行接收报文信息:
RX packets 5834                 #表示此接口正确接收数据包的个数。
bytes 484471 (473.1 KiB)        #表示此接口正确接收数据包的总字节数。
RX errors 0                     #接收时,产生错误的数据包的个数
dropped 0                       #接收时,丢弃的数据包的个数。
overruns 0                      #接收时,由于速度过快而丢失的数据包的个数。
frame 0                         #接收时,发生frame错误而丢失的数据包的个数。

#第七,八行发送报文信息:
TX packets 9030                 #表示此接口正确发送的数据包的个数。
bytes 1113649 (1.0 MiB)         #表示此接口正确发送的数据包的总字节数。
TX errors 0                     #发送时,产生错误的数据包的个数。
dropped 0                       #发送时,丢弃的数据包的个数。
overruns 0                      #发送时,由于速度过快而丢失的数据包的个数。
carrier 0                       #发送时,发生carrier错误而丢失的数据包的个数。
collisions 0                    #发送时,冲突的数据包的个数。

2.2 ip命令

ip命令,查看所有网络接口的信息,也可临时修改网卡配置。

语法:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT:
    link   #网络设备
    addr   #协议地址(IPv4/IPv6)
    route  #路由表

OPTIONS
-s         #查看详细信息

COMMAND
show       #显示信息
set        #设置
add        #添加
del        #删除

ip link show

#查看网络设备属性
[root@hzz ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff

#显示报文统计信息
[root@hzz ~]# ip -s link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast   
    5560       72       0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    5560       72       0       0       0       0       
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    8447543    103002   0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    19165672   155011   0       0       0       0 

ip link set 网卡名 {up | down}

#启用或禁用网络设备
[root@hzz ~]# ip link set lo down
[root@hzz ~]# ip link set lo up

ip addr show

#查看网络接口协议地址(IPv4/IPv6)信息
[root@hzz ~]# ip addr show
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
    inet 192.168.52.156/24 brd 192.168.52.255 scope global dynamic ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::dbd:1db2:658d:30ab/64 scope link
       valid_lft forever preferred_lft forever

#ip addr show输出结果
<BROADCAST,MULTICAST,UP,LOWER_UP>
        BROADCAST                     #表示该接口支持广播
        MULTICAST                     #表示该接口支持多播
        UP                            #表示该网络接口已启用
        LOWER_UP                      #表示网络电缆已插入,设备已连接至网络
mtu 1500                              #最大传输单位(数据包大小)1500字节
qdisc pfifo_fast                      #用于数据包排队
state UP                              #网络接口已启用
qlen 1000                             #传输长度
link/ether 00:1e:4f:c8:43:fc          #接口的MAC(硬件)地址
brd ff:ff:ff:ff:ff:ff                 #MAC广播地址
inet 192.168.52.156/24                #IPv4地址
brd 192.168.52.255                    #IPv4广播地址
scope global                          #允许所有人访问此ip地址
dynamic eth0                          #地址是动态分配的
valid_lft forever                     #IPv4地址的有效使用期限
preferred_lft forever                 #IPv4地址的首选生存期
inet6 fe80::dbd:1db2:658d:30ab/64     #IPv6地址
scope link                            #仅在允许此设备上访问此ip地址
valid_lft forever                     #IPv6地址的有效使用期限
preferred_lft forever                 #IPv6地址的首选生存期

ip addr add IP地址 dev 网卡名

#给网卡添加IP地址
[root@hzz ~]# ip addr add 192.168.52.157/24 dev eth0
[root@hzz ~]# ip addr show
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
    inet 192.168.52.156/24 brd 192.168.52.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.52.157/24 scope global secondary ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::dbd:1db2:658d:30ab/64 scope link 
       valid_lft forever preferred_lft forever

ip addr del IP地址 dev 网卡名

#删除网卡的IP地址
[root@hzz ~]# ip addr del 192.168.52.157/24 dev eth0
[root@hzz ~]# ip addr show
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ab:61:83 brd ff:ff:ff:ff:ff:ff
    inet 192.168.52.156/24 brd 192.168.52.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::dbd:1db2:658d:30ab/64 scope link 
       valid_lft forever preferred_lft forever

ip route show

[root@hzz ~]# ip route show
default via 192.168.52.2 dev eth0 proto static metric 100
192.168.52.0/24 dev eth0 proto kernel scope link src 192.168.52.156 metric 100

#输出结果
default                   #默认路由
via 192.168.52.2          #下一跳
dev eth0                  #网卡
proto static              #路由的协议,kernel是指由内核判断自动设定
metric 100                #度量值
scope link                #有效范围本地,global全局,site站点。

ip route add 目的地址 via 下一跳 dev 网卡名

[root@hzz ~]# ip route add 192.168.1.0/24 via 192.168.52.2 dev eth0
[root@hzz ~]# ip route show
default via 192.168.52.2 dev eth0 proto static metric 100 
192.168.1.0/24 via 192.168.52.2 dev eth0 
192.168.52.0/24 dev eth0 proto kernel scope link src 192.168.52.156 metric 100 

ip route del 目的地址 dev 网卡名

[root@hzz ~]# ip route del 192.168.1.0/24 dev eth0
[root@hzz ~]# ip route show
default via 192.168.52.2 dev eth0 proto static metric 100 
192.168.52.0/24 dev eth0 proto kernel scope link src 192.168.52.156 metric 100 

2.3 route命令

route命令和ip route命令类似。

#查看当前路由表
[root@hzz ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 eth0
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

#以数字方式显示路由表
[root@hzz ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.52.2    0.0.0.0         UG    100    0        0 eth0
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

#输出结果
Flags标志说明:
    U         #Up表示此路由启动状态
    H         #Host,表示此网关为一主机
    G         #Gateway,表示此网关为一路由器
    R         #Reinstate Route,使用动态路由重新初始化的路由
    D         #Dynamically,动态路由
    M         #Modified,此路由已被修改
    !         #表示此路由当前为关闭状态
Ref           #该路由的引用数
Use           #该路由被使用的次数
Iface         #接口,也就是网卡

route命令添加或删除路由

route命令添加的路由是临时的,重启之后就会失效。

语法:route add或del [-net或-host] 目的地址 gw 网关地址 dev 网卡名
  -net          #表示目的地址是一个网段
  -host         #表示目的地址是一个具体的ip

#增加网段路由
[root@hzz ~]# route add -net 192.168.1.0/24 gw 192.168.52.2 dev eth0
[root@hzz ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.52.2    0.0.0.0         UG    100    0        0 eth0
192.168.1.0     192.168.52.2    255.255.255.0   UG    0      0        0 eth0
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

#增加主机路由
[root@hzz ~]# route add -host 192.168.2.1 gw 192.168.52.2 dev eth0
[root@hzz ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.52.2    0.0.0.0         UG    100    0        0 eth0
192.168.1.0     192.168.52.2    255.255.255.0   UG    0      0        0 eth0
192.168.2.1     192.168.52.2    255.255.255.255 UGH   0      0        0 eth0
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

#删除路由
[root@hzz ~]# route del -net 192.168.1.0/24
[root@hzz ~]# route del -host 192.168.2.1
[root@hzz ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.52.2    0.0.0.0         UG    100    0        0 eth0
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

3、网络相关配置文件

3.1 网卡配置文件

网卡(网络接口),其配置文件的路径是 /etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME。

[root@hzz ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.52.156
NETMASK=255.255.255.0
GATEWAY=192.168.52.2
DNS1=192.168.52.2
DNS2=8.8.8.8

#网卡配置说明
TYPE                        #接口类型。常见的接口类型有:Ethernet,bond,team,Bridge。
BOOTPROTO=static            #启动的协议,获取IP的方式。可选值有{static|none|dhcp|bootp}。如果要使用静态地址,使用static或none都可以。
NAME="eth0"                 #连接名称
UUID                        #设备的唯一标识,全局唯一的IEEE机器识别号,可以不写
DEVICE="eth0"               #关联的设备名称,要与文件名的后半部"INTERFACE_NAME"保持一致
ONBOOT=yes                  #在系统引导时是否自动激活此网络接口,可选值有{ yes | no }
IPADDR=192.168.52.156       #固定IP地址
PREFIX=24                   #子网掩码,生产环境中不建议用
NETMASK=255.255.255.0       #子网掩码
GATEWAY=192.168.52.2        #默认网关
DNS1=192.168.52.2           #第一个DNS服务器指向
DNS2=8.8.8.8                #第二个DNS服务器指向

HWADDR                      #硬件地址(mac地址),要与硬件中的地址保持一致,可不写。
DEFROUTE={yes|no}           #将接口设定为默认路由{yes|no}
USERCTL={yes|no}            #是否允许普通用户控制此接口的启用与禁用
PEERDNS={yes|no}            #是否在BOOTPROTO为dhcp时接受由dhcp服务器指定的DNS地址,此项设为yes时获得的DNS地址将直接覆盖至/etc/resolv.conf文件中
NM_CONTROLLED={yes|no}      #NM是NetworkManager的简写,NM是由RHEL研发的在RHEL6中取代network脚本来实现网络管理、配置的服务脚本.可选值有{ yes | no },此项是设定此网卡是否接受NM控制。CentOS6建议设为“no”

3.2 添加一块网卡

#添加一块物理网卡,新增加的网卡名称是根据你网卡命名机制来决定。
#但是新增加的物理网卡是没有配置文件的, 需要我们手动新增网络连接配置文件
#复制网卡eth0的配置文件,改为eth1的配置文件。
[root@hzz ~]# cp /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth1}

#编辑网卡配置文件
[root@hzz ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.52.158
NETMASK=255.255.255.0
GATEWAY=192.168.52.2
DNS1=192.168.52.2

#7.0重启network网络服务加载网络并设置开机启动
[root@localhost ~]# systemctl restart network
[root@localhost ~]# systemctl enable network

#8.0重启NetworkManager网络服务加载网络并设置开机启动
[root@localhost ~]# systemctl restart NetworkManager
[root@localhost ~]# systemctl enable NetworkManager
[root@localhost ~]# nmcli connection up eth1

3.3 路由配置文件

路由配置文件的路径是 /etc/sysconfig/network-scripts/route-INTERFACE_NAME ,该配置文件默认不存在。

#添加格式一:DEST via NEXTHOP
[root@hzz ~]# vim /etc/sysconfig/network-scripts/route-eth0
192.168.1.0/24 via 192.168.52.2

#添加格式二:三行为一条,序号不一样。
[root@hzz ~]# vim /etc/sysconfig/network-scripts/route-eth0
ADDRESS0=192.168.2.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.52.2
ADDRESS1=192.168.3.0
NETMASK1=255.255.255.0
GATEWAY1=192.168.52.2

3.4 DNS配置文件

DNS服务器配置文件的路径是 /etc/resolv.conf 。

#前面的nameserver固定,后面写DNS服务器地址。
[root@hzz ~]# vim /etc/resolv.conf
nameserver DNS_IP_1
nameserver DNS_IP_2
nameserver DNS_IP_3
  • 本地DNS解析配置文件路径是 /etc/hosts 。
[root@hzz ~]# vim /etc/hosts
127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4
::1             localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.52.156  hzz

3.5 主机名配置文件

生产环境中必须配置主机名,同时主机名也需要遵循一定的规范, 例如:公有云中主机名就以 ”地区-项目-业务-服务-节点-地址“ 这种方式命名。

公有云: 地区-项目-业务-服务-节点-地址
wh-shop-register-nginx-node1-192.168.56.13
wh-med-pay-mysql-master01-192.168.56.11
wh-med-pay-mysql-slave01-192.168.56.12

#主机名配置文件为/etc/hostname
[root@localhost ~]# cat /etc/hostname
localhost.localdomain

#hostname查看主机名
[root@localhost ~]# hostname
localhost.localdomain

#hostname临时修改主机名
[root@localhost ~]# hostname hzz
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
#注意:修改主机名后需要重新加载shell才会显示效果

#rhel7系统建议使用hostnamectl修改和查看主机名
#设定永久名称
[root@localhost ~]# hostnamectl set-hostname hzz
[root@localhost ~]# cat /etc/hostname
hzz

#查看主机信息
[root@localhost ~]# hostnamectl
   Static hostname: hzz
         Icon name: computer-vm
           Chassis: vm
        Machine ID: fd0bcf5782d24ba5b903b175c35f328e
           Boot ID: a060e3a2882f4d2c92884eee9db702bc
    Virtualization: vmware
  Operating System: Red Hat Enterprise Linux Server 7.4 (Maipo)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.4:GA:server
            Kernel: Linux 3.10.0-693.el7.x86_64
      Architecture: x86-64

注意:在Linux中以命令方式修改网络配置大部分情况只在当前状态有效,重启后将失效。故若想使修改的配置重启后依然有效,则必须编辑配置文件进行配置的修改。

4、NetworkManager管理网络

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

NetworkManager提供了命令行和图形配置工具对网络进行设定, 设定保存的配置文件在/etc/sysconfig/network-scripts目录下, 工具有 nmcli, nmtui。它可以管理网卡硬件设备;也可以管理网络的连接类型(网卡的配置文件)。

NetworkManager管理连接(connection)的特点:

  • 1.一个物理设备可以配置多种网络连接类型,但是同一时间只能应用其中某一个网络连接类型。
  • 2.针对物理网络接口, 设定不同的网络连接, 在不同的使用环境中激活相应的网络连接,就可以实现网络配置信息的自动切换了

4.1 nmcli命令管理网卡配置信息

#查看网卡使用的配置文件
[root@hzz ~]# nmcli connection show
NAME   UUID                                  TYPE            DEVICE
eth0   03be31f5-a3c1-4f8d-88b3-aea6e85c869f  802-3-ethernet   eth0

#查看指定网卡配置文件详细信息
[root@localhost ~]# nmcli connection show eth0
connection.id:                          eth0
connection.uuid:                        03be31f5-a3c1-4f8d-88b3-aea6e85c869f
connection.stable-id:                   --
connection.interface-name:              eth0
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.timestamp:                   1530455962
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
......

#开启连接名称为eth0的连接(启用指定网卡配置文件)
nmcli connection up eth0

#关闭连接名称为eth0的连接(关闭指定网卡配置文件)
nmcli connection down eth0

#修改连接名称为eth0的配置(修改指定网卡配置文件)
nmcli connection modify eth0 ...

#为eth0网卡添加一个连接名称eth0_hzz的以太网连接(为eth0网卡新增一个名为eth0_hzz的配置文件)
nmcli connection add type ethernet ifname eth0 con-name eth0_hzz ...

#删除连接名称为eth0_hzz的连接(删除名为hzz的网卡配置文件)
nmcli connection delete eth0_hzz

#操作示例及解释:
nmcli connection add type ethernet ifname eth0 con-name eth0_hzz ipv4.addresses 192.168.52.157/24 ipv4.gateway 192.168.52.2 ipv4.dns 192.168.52.2 ipv4.method manual autoconnect yes

add             #添加
type            #连接类型
ifname          #设备名称
con-name        #连接名称(名称随意,一般凸显此连接所应用的设备)
ipv4.addresses  #指定ipv4地址
ipv4.gateway    #指定ipv4网关
ipv4.dns        #指定ipv4的DNS地址
ipv4.method     #指定IP地址的获取方式 manual表示手动设置
autoconnect yes #开启开机自启(自动连接)

#修改连接名称为eth0_hzz的连接,修改IP地址为192.168.52.157/24
nmcli connection modify eth0_hzz ipv4.addresses 192.168.52.157/24

#修改连接名称为eth0_hzz的连接,添加一个IP地址192.168.52.158/24
nmcli connection modify eth0_hzz +ipv4.addresses 192.168.52.158/24

4.2 聚合网卡配置

#链路聚合两种类型:bond,team
bond:最多支持2块网卡
team:最多支持8块网卡

bond:负载轮询模式bond0(balance-rr),主备模式bond1(active-backup)

#添加bond类型网卡,设置网卡模式工作于负载轮询模式,创建一个bond0的网卡设备,设置连接名称为con-bond0,设置ipv4地址为192.168.52.140/24,设置网关为192.168.52.2,设置dns为192.168.52.2,选择IP地址获取方式为手动获取,设置连接开机自启
nmcli connection add type bond mode balance-rr ifname bond0 con-name con-bond0 ipv4.addresses 192.168.52.140/24 ipv4.gateway 192.168.52.2 ipv4.dns 192.168.52.2 ipv4.method manual autoconnect yes

#添加一个类型为bond-slave的连接,连接名为bond-slave0,将设备eth0添加至bond0网卡
nmcli connection add type bond-slave con-name bond-slave0 ifname eth0 master bond0

#添加第二个类型为bond-slave的连接,连接名为bond-slave1,将设备eth1添加至bond0网卡
nmcli connection add type bond-slave con-name bond-slave1 ifname eth1 master bond0

#查看bond0状态
cat /proc/net/bonding/bond0

team:主备模式activebackup,负载轮询模式roundrobin,负载均衡loadbalance,广播容错broadcast,lacp 需要交换机支持lacp协议

#添加team类型网卡,创建一个team0的网卡设备,设置连接名称为con-team0,设置网卡模式工作于主备模式,设置ipv4地址为192.168.52.140/24,设置网关为192.168.52.2,设置dns为192.168.52.2,选择IP地址获取方式为手动获取,设置连接开机自启
nmcli connection add type team ifname team0 con-name con-team0 config '{"runner":{"name":"activebackup"}}' ipv4.addresses 192.168.52.140/24 ipv4.gateway 192.168.52.2 ipv4.dns 192.168.52.2 ipv4.method manual autoconnect yes

#添加一个类型为team-slave的连接,连接名为team0-port1,将设备eth0添加至team0网卡
nmcli connection add type team-slave con-name team0-port1 ifname eth0 master team0

#添加一个类型为team-slave的连接,连接名为team0-port2,将设备eth1添加至team0网卡
nmcli connection add type team-slave con-name team0-port2 ifname eth1 master team0

#查看team0网卡工作状态
teamdctl team0 state

5、Centos7.0回归原生network管理网络

Centos7.0中原生network和NetworkManager程序都是使用 /etc/sysconfig/network-scripts 下的配置文件,只不过原生network管理网络需要修改配置文件,而NetworkManager则是使用nmcli命令。

#设置NetworkManger开机不启动, 同时停止NetworkManager服务
[root@hzz ~]# systemctl disable NetworkManager
[root@hzz ~]# systemctl stop NetworkManager

#NetworkManger服务停止就使用传统network管理网络,也就是使用配置文件。

6、网络检测工具与故障排查

6.1 ping命令

ping命令的目的在于测试另一台主机是否可达, 如果ping不到某台主机,就说明对方主机已经出现了问题, 但是不排除由于链路中的防火墙、ping被丢弃等原因造成ping不通的情况。

ping命令常用选项:
    -c        #指定ping的次数
    -i        #指定ping包的发送间隔
    -w        #指定ping的时间

#ping 3次后退出
[root@hzz ~]# ping -c 3 192.168.52.2
PING 192.168.52.2 (192.168.52.2) 56(84) bytes of data.
64 bytes from 192.168.52.2: icmp_seq=1 ttl=128 time=0.126 ms
64 bytes from 192.168.52.2: icmp_seq=2 ttl=128 time=0.235 ms
64 bytes from 192.168.52.2: icmp_seq=3 ttl=128 time=0.255 ms

--- 192.168.52.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.126/0.205/0.255/0.057 ms

#每隔两秒ping一次,一共ping3次。
[root@hzz ~]# ping -c 3 -i 2 192.168.52.2
PING 192.168.52.2 (192.168.52.2) 56(84) bytes of data.
64 bytes from 192.168.52.2: icmp_seq=1 ttl=128 time=0.135 ms
64 bytes from 192.168.52.2: icmp_seq=2 ttl=128 time=0.249 ms
64 bytes from 192.168.52.2: icmp_seq=3 ttl=128 time=0.163 ms

--- 192.168.52.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.135/0.182/0.249/0.049 ms

#一共ping3秒,3秒后退出
[root@hzz ~]# ping -w 3 192.168.52.1
PING 192.168.52.1 (192.168.52.1) 56(84) bytes of data.
64 bytes from 192.168.52.1: icmp_seq=1 ttl=128 time=0.495 ms
64 bytes from 192.168.52.1: icmp_seq=2 ttl=128 time=0.374 ms
64 bytes from 192.168.52.1: icmp_seq=3 ttl=128 time=0.297 ms

--- 192.168.52.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.297/0.388/0.495/0.084 ms

6.2 host与nslookup

host和nslookup命令用于查询DNS记录。

#host和nslookup命令需要安装
yum -y install bind-utils

#使用host命令查询看DNS解析记录
[root@hzz ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 36.152.44.95
www.a.shifen.com has address 36.152.44.96
www.a.shifen.com has IPv6 address ::1

#使用nslookup命令查询看DNS解析记录,nslookup命令可以看到查询DNS解析的流程
[root@hzz ~]# nslookup www.baidu.com
Server:         192.168.52.2
Address:        192.168.52.2#53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 36.152.44.96
Name:   www.a.shifen.com
Address: 36.152.44.95

6.3 traceroute命令

traceroute命令用于路由跟踪, 检测网络故障出现在ISP运营商或是对端服务无法响应。

#traceroute命令需要安装
yum -y install traceroute

#traceroute命令只追踪内网路由
[root@hzz ~]# traceroute www.baidu.com
traceroute to www.baidu.com (220.181.38.150), 30 hops max, 60 byte packets
 1  * * *
 2  11.220.137.109 (11.220.137.109)  7.620 ms 11.220.137.45 (11.220.137.45)  6.852 ms  7.284 ms
 3  11.220.136.54 (11.220.136.54)  3.305 ms 11.220.136.122 (11.220.136.122)  2.326 ms 11.220.136.58 (11.220.136.58)  2.092 ms

6.4 netstat命令

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

语法:netstat [options]
    -a        #所有信息
    -n        #数字格式
    -l        #listen状态的连接
    -t        #tcp协议连接
    -u        #udp协议连接
    -p        #相关的程序及pid

#常见的state:
        LISTENING:监听
        ESTABLISHED:已建立的连接

#常用组合
[root@hzz ~]# netstat -anltup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1093/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1325/master         
tcp        0      0 192.168.52.156:22       192.168.52.1:50250      ESTABLISHED 3927/sshd: root@pts 
tcp6       0      0 :::22                   :::*                    LISTEN      1093/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1325/master         
udp        0      0 0.0.0.0:20009           0.0.0.0:*                           7632/dhclient       
udp        0      0 0.0.0.0:68              0.0.0.0:*                           7632/dhclient       
udp        0      0 127.0.0.1:323           0.0.0.0:*                           749/chronyd         
udp6       0      0 :::53754                :::*                                7632/dhclient       
udp6       0      0 ::1:323                 :::*                                749/chronyd         

6.5 ss命令

ss是一种网络状态查看工具,取代netstat。

语法:ss [options]
    -a        #所有信息
    -n        #数字格式
    -l        #listen状态的连接
    -t        #tcp协议连接
    -u        #udp协议连接
    -p        #相关的程序及pid

#常见的state:
        LISTENING:监听
        ESTABLISHED:已建立的连接

#常用组合:以数字格式查看监听的tcp和udp端口以及进程pid
[root@hzz ~]# ss -anltup
Netid State      Recv-Q Send-Q      Local Address:Port                     Peer Address:Port              
udp   UNCONN     0      0               127.0.0.1:323                                 *:*                   users:(("chronyd",pid=749,fd=1))
udp   UNCONN     0      0                     ::1:323                                :::*                   users:(("chronyd",pid=749,fd=2))
tcp   LISTEN     0      128                     *:22                                  *:*                   users:(("sshd",pid=1093,fd=3))
tcp   LISTEN     0      100             127.0.0.1:25                                  *:*                   users:(("master",pid=1325,fd=13))
tcp   LISTEN     0      128                    :::22                                 :::*                   users:(("sshd",pid=1093,fd=4))
tcp   LISTEN     0      100                   ::1:25                                 :::*                   users:(("master",pid=1325,fd=14))

#常见端口
http    80/tcp 
https   443/tcp 
ssh     22/tcp 
ftp     20,21/tcp
mysql   3306/tcp

7、 网络故障排查

  • 网络故障分为硬件/软件故障
    • 网卡损坏
    • 链路故障
    • 网卡驱动不兼容
  • 网络排查思路
    • ping本地回环口, 确定本机TCP/IP协议栈是否正常
    • ping本机IP地址, 确定本地设备以及驱动是否正常
    • ping同网段主机, 确定二层网络是否正常工作
    • ping网关地址, 确定本地与网络是否正常
    • ping公网地址, 确定本地路由是否正常
    • ping公网域名, 确定DNS客户端是否正常
  • 服务故障排查思路
    • 使用telnet检测端口是否开放
    • 检查服务端防火墙以及SElinux
    • 检查相应的权限是否配置正常
    • 检查日志是否有异常
    • 检查完毕后持续测试

建议:所有的排查思路都从OSI七层模型由下往上逐一进行排查(学会看日志)。