Linux 网络管理

Strong 2020年04月03日 483次浏览

网络管理

1、网卡命名方式

1.1 传统网卡命名机制

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

1.2 Redhat7网卡命名机制

Systemd对网卡的命名方式:

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

注意:上述命名机制中,有的需要biosdevname程序的参与。所以必须安装biosdevname程序且启用它,默认启用。

网卡名称的组成格式

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

1.3 网卡设备的命名过程

按照如下顺序执行udev(设备管理器)的rule(规则):

1./usr/lib/udev/rules.d/60-net.rules

  • 使用/lib/udev/rename_device这个程序,去查询/etc/sysconfig/network-scripts/下所有以ifcfg-开头的文件,如果在ifcfg-xx中匹配到HWADDR=xx:xx:xx:xx:xx:xx参数的网卡接口则选取DEVICE="name"中设置的名字作为网卡名称。

2./usr/lib/udev/rules.d/71-biosdevname.rules

  • 如果系统中安装了biosdevname,且内核参数指定biosdevname=1,且上一步没有重命名网卡,则按照biosdevname的命名规范,从BIOS中取相关信息来命名网卡。
  • 主要是取SMBIOS中的type 9 (System Slot) 和 type 41 (Onboard Devices Extended Information)不过要求SMBIOS的版本要高于2.6,且系统中要安装biosdevname程序。

3./lib/udev/rules.d/75-net-description.rules

  • 依据/lib/udev/rules.d/75-net-description.rules,将udev工具会根据设备属性(device)填写网卡的属性命名,可能一个网卡会有多个维度的名称哦。

        ID_NET_NAME_ONBOARD
        ID_NET_NAME_SLOT
        ID_NET_NAME_PATH
        ID_NET_NAME_MAC
    

4./usr/lib/udev/rules.d/80-net-name-slot.rules

  • 如果在60-net.rules ,71-biosdevname.rules这两条规则中没有重命名网卡,且内核指定net.ifnames=1参数,则udev依次尝试使用以下属性值来命名网卡,如果这些属性值都没有,则网卡不会被重命名。

       ID_NET_NAME_ONBOARD
       ID_NET_NAME_SLOT
       ID_NET_NAME_PATH
    

1.4 回归传统网卡命名

//修改网卡配置文件
[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
IPV4_FAILURE_FATAL=no
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
ens33: 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

//仅查看ens33网卡状态
[root@hzz ~]# ifconfig ens33
ens33: 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
ens33: 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        删除
//查看网络设备属性
[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: ens33: <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: ens33: <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 
//启用或禁用网络设备
[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: ens33: <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 ens33                         地址是动态分配的
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 ens33
[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: ens33: <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 ens33
[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: ens33: <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 ens33 proto static metric 100
192.168.52.0/24 dev ens33 proto kernel scope link src 192.168.52.156 metric 100

//输出结果
default                   默认路由
via 192.168.52.2          下一跳
dev ens33                 网卡
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 ens33
[root@hzz ~]# ip route show
default via 192.168.52.2 dev ens33 proto static metric 100 
192.168.1.0/24 via 192.168.52.2 dev ens33 
192.168.52.0/24 dev ens33 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 ens33
[root@hzz ~]# ip route show
default via 192.168.52.2 dev ens33 proto static metric 100 
192.168.52.0/24 dev ens33 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 ens33
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33

////以数字方式显示路由表
[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 ens33
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33

//输出结果
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 ens33
[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 ens33
192.168.1.0     192.168.52.2    255.255.255.0   UG    0      0        0 ens33
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33

//增加主机路由
[root@hzz ~]# route add -host 192.168.2.1 gw 192.168.52.2 dev ens33
[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 ens33
192.168.1.0     192.168.52.2    255.255.255.0   UG    0      0        0 ens33
192.168.2.1     192.168.52.2    255.255.255.255 UGH   0      0        0 ens33
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33

//删除路由
[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 ens33
192.168.52.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33

3、网络相关配置文件

3.1 网卡配置文件

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

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

////网卡配置说明
TYPE                        接口类型。常见的接口类型有:Ethernet,bond,team,Bridge。
BOOTPROTO=static            启动的协议,获取IP的方式。可选值有{static|none|dhcp|bootp}。如果要使用静态地址,使用static或none都可以。
NAME="ens33"                连接名称
UUID                        设备的唯一标识,全局唯一的IEEE机器识别号,可以不写
DEVICE="ens33"              关联的设备名称,要与文件名的后半部"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                        第二个DNS服务器指向
DNS3                        第三个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 路由配置文件

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

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

//添加格式二:三行为一条,序号不一样。
[root@hzz ~]# vim /etc/sysconfig/network-scripts/route-ens33
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.3 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.4 主机名配置文件

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

公有云: 地区-项目-业务-服务-节点-地址
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 wangqing
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
//注意:修改主机名后需要重新登录用户才会显示效果


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

//查看主机信息
[root@localhost ~]# hostnamectl
   Static hostname: seancheng
         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, nm-connection-editor。它可以管理网络接口(device)也就是网卡,管理的是物理设备。也可以管理网络的连接类型(网卡的配置文件)。 例如:Ethernet,VLANS,Bridges,Bonds,Teams等。

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

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

4.1 nmcli命令查看设备状态

//查看设备状态
[root@hzz ~]# nmcli device
DEVICE  TYPE      STATE      CONNECTION
ens33   ethernet  connected  ens33
lo      loopback  unmanaged  --

//查看指定设备的详细状态
[root@hzz ~]# nmcli device show ens33
GENERAL.DEVICE:                         ens33
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:73:01:10
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     ens33
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.52.156/24
IP4.GATEWAY:                            192.168.52.2
IP4.DNS[1]:                             192.168.52.2
IP4.DOMAIN[1]:                          localdomain
IP6.ADDRESS[1]:                         fe80::20c:29ff:fe73:110/64
IP6.GATEWAY:                            --
......

4.2 nmcli命令查看网卡配置信息

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

//查看指定网卡配置文件详细信息
[root@localhost ~]# nmcli connection show ens33
connection.id:                          ens33
connection.uuid:                        03be31f5-a3c1-4f8d-88b3-aea6e85c869f
connection.stable-id:                   --
connection.interface-name:              ens33
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
......

//创建一个网卡配置文件
[root@localhost ~]# nmcli connection add type ethernet con-name hzz ifname eth0 ipv4.method auto autoconnect yes

[root@hzz ~]# nmcli connection show 
名称         UUID                                  类型            设备 
System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0 
hzz          bf62579b-3d14-4a63-9124-a73c7f2803b3  802-3-ethernet  --   

//修改一个网卡配置文件
[root@hzz ~]# nmcli connection modify hzz ipv4.method manual ipv4.addresses 192.168.52.222/24 ipv4.gateway 192.168.52.2 ipv4.dns 192.168.52.2  autoconnect no

//启用一个网卡配置文件
[root@hzz ~]# nmcli connection up hzz 

//关闭一个网卡配置文件
[root@hzz ~]# nmcli connection down hzz 

//删除一个网卡配置文件
[root@hzz ~]# nmcli connection delete hzz 
成功删除连接 'hzz'(bf62579b-3d14-4a63-9124-a73c7f2803b3)。

[root@hzz ~]# nmcli connection show 
名称         UUID                                  类型            设备 
System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0 

5、原生network管理网络

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

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

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

6、添加一块网卡

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

//编辑网卡配置文件
[root@hzz ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth1
NM_CONTROLLED=no
ONBOOT=yes
IPADDR=192.168.52.158
NETMASK=255.255.255.0
GATEWAY=192.168.52.2
DNS1=192.168.52.2

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

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

7.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

7.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

7.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

7.4 netstat命令

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

//语法:netstat [options]
//常用的options:
    -r:显示路由表
    -n:数字格式
    -t:tcp协议连接
    -u:udp协议连接
    -l:listen状态的连接
    -p:相关的程序及pid
    -a:所有

//显示路由表
[root@hzz ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         gateway         0.0.0.0         UG        0 0          0 ens33
192.168.52.156  0.0.0.0         255.255.255.0   U         0 0          0 ens33

//以数字方式显示路由表
[root@hzz ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.52.156  0.0.0.0         UG        0 0          0 ens33
192.168.52.156  0.0.0.0         255.255.255.0   U         0 0          0 ens33

//显示建立的tcp连接
[root@hzz ~]# netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address            State
tcp        0      0 hzz:ssh                 192.168.52.156:56187       ESTABLISHED
tcp        0      0 hzz:ssh                 192.168.52.156:53808       ESTABLISHED

//显示udp连接
[root@hzz ~]# netstat -u
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State

//显示监听状态的连接
[root@hzz ~]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN

//显示监听指定的套接字的进程的进程号及进程名
[root@hzz ~]# netstat -p
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 hzz:ssh                 192.168.52.156:56187    ESTABLISHED 2094/sshd: root@pts
tcp        0      0 hzz:ssh                 192.168.52.156:53808    ESTABLISHED 1077/sshd: root@pts

//显示所有状态的连接
[root@hzz ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp        0      0 hzz:ssh                 192.168.52.156:56187    ESTABLISHED
tcp        0      0 hzz:ssh                 192.168.52.156:53808    ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
udp        0      0 0.0.0.0:23511           0.0.0.0:*
udp        0      0 0.0.0.0:bootpc          0.0.0.0:*
udp6       0      0 [::]:35299              [::]:* 


//常用选项
-anltup
[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         

7.5 ss命令

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

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

//常见的state:
    //tcp finite state machine:有限状态机
        LISTENING:监听
        ESTABLISHED:已建立的连接

//常用组合:以数字格式查看tcp相关信息
[root@hzz ~]# ss -ant
State      Recv-Q Send-Q                Local Address:Port                               Peer Address:Port
LISTEN     0      128                               *:22                                            *:*
LISTEN     0      100                       127.0.0.1:25                                            *:*
ESTAB      0      0                     172.16.12.128:22                                  172.16.12.1:56187
ESTAB      0      0                     172.16.12.128:22                                  172.16.12.1:53808
LISTEN     0      128                              :::22                                           :::*
LISTEN     0      100                             ::1:25                                           :::* 

//常用组合:以数字格式查看监听的tcp端口
[root@hzz ~]# ss -tanl
State      Recv-Q Send-Q                Local Address:Port                               Peer Address:Port
LISTEN     0      128                               *:22                                            *:*
LISTEN     0      100                       127.0.0.1:25                                            *:*
LISTEN     0      128                              :::22                                           :::*
LISTEN     0      100                             ::1:25                                           :::* 

//常用组合:以数字格式查看监听的tcp端口和进程号
[root@hzz ~]# ss -antlp
State      Recv-Q Send-Q                Local Address:Port                               Peer Address:Port
LISTEN     0      128                               *:22                                            *:*                   users:(("sshd",pid=889,fd=3))
LISTEN     0      100                       127.0.0.1:25                                            *:*                   users:(("master",pid=1007,fd=13))
LISTEN     0      128                              :::22                                           :::*                   users:(("sshd",pid=889,fd=4))
LISTEN     0      100                             ::1:25                                           :::*                   users:(("master",pid=1007,fd=14))

//常用组合:以数字格式查看udp相关信息
[root@hzz ~]# ss -anu
State      Recv-Q Send-Q                Local Address:Port                               Peer Address:Port
UNCONN     0      0                                 *:23511                                         *:*
UNCONN     0      0                                 *:68                                            *:*
UNCONN     0      0                                :::35299                                        :::* 

//常用组合:以数字格式查看udp监听的端口
[root@hzz ~]# ss -anul
State       Recv-Q Send-Q        Local Address:Port                       Peer Address:Port              
UNCONN      0      0                 127.0.0.1:323                                   *:*                  
UNCONN      0      0                       ::1:323                                  :::*    

//常用组合:以数字格式查看监听的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
rsync   873/rsync
redis   6379/tcp

8、 网络故障排查

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

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