1、网卡命名方式

自动化的前提是标准化、规范化

1.1 传统命名规则

第一块网卡eth0
第二块网卡eth1
第三块网卡eth2

1.2 网卡回归传统名

网卡回归传统名的步骤
1、修改网卡配置文件的名字并改其内容

[root@JLin ~]# cd /etc/sysconfig/network-scripts/
[root@JLin network-scripts]# mv ifcfg-ens160 ifcfg-eth0
[root@JLin network-scripts]# vim ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.122.133
NETMASK=255.255.255.0
GATEWAY=192.168.122.2
DNS1=114.114.114.114

2、编辑 /etc/default/grub,在rhgb前面加上net-ifnames=0 biosdevname=0

[root@JLin ~]# vim /etc/default/grub
vim /etc/default/grub.cof
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=centos/root rd.lvm.lv=centos/swap ifnames=0 biosdevname rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

3、生成配置文件grub2-mkconfig -o /etc/grub2.cfg

[root@jlin ~]# grub2-mkconfig -o /etc/grub2.cfg 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-3c9ab33527ab4484b00377dadda9e5f5
Found initrd image: /boot/initramfs-0-rescue-3c9ab33527ab4484b00377dadda9e5f5.img
done

4、重启电脑

reboot

2、网络管理常用命令

2.1 ifconfig命令

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

// 查看当前处于活动状态的所有网络接口
[root@jlin ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.23.180  netmask 255.255.255.0  broadcast 192.168.23.255
        inet6 fe80::a221:f87a:a500:8777  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:1c:53:02  txqueuelen 1000  (Ethernet)
        RX packets 525408  bytes 758603438 (723.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 95578  bytes 10771294 (10.2 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 1000  (Local Loopback)
        RX packets 8  bytes 696 (696.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 696 (696.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

// 仅查看ens33网卡状态
[root@jlin ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.23.180  netmask 255.255.255.0  broadcast 192.168.23.255
        inet6 fe80::a221:f87a:a500:8777  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:1c:53:02  txqueuelen 1000  (Ethernet)
        RX packets 584234  bytes 843966148 (804.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 106566  bytes 12087228 (11.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

// 查看所有网卡状态信息,包括禁用和启用
[root@jlin ~]# ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.23.180  netmask 255.255.255.0  broadcast 192.168.23.255
        inet6 fe80::a221:f87a:a500:8777  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:1c:53:02  txqueuelen 1000  (Ethernet)
        RX packets 646259  bytes 929238178 (886.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 125543  bytes 14841119 (14.1 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 1000  (Local Loopback)
        RX packets 8  bytes 696 (696.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 696 (696.0 B)
        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 网卡的IP地址
netmask IP地址掩码
broadcast 广播地址

第三行IPv6地址信息

信息 含义
inet6 网卡的IPv6地址
prefixlen IPv6地址掩码长度
scopeid 0x20 作用域,link表示仅该接口有效

第四行mac地址信息

信息 含义
ether 网卡接口的MAC地址
txqueuelen 传输队列长度
(Ethernet) 接口类型为Ethernet

第五、六行接收报文信息

信息 含义
RX packets 此接口正确接收数据包个数
bytes 此接口正确接收数据包总字节数
RX errors 接收时产生错误的数据包个数
dropped 接收时丢弃的数据包个数
overruns 接收时由于速度过快而丢失的数据包个数
frame 接收时发生frame错误而丢失的数据包个数

第七、八行发送报文信息

|TX pakets|表示此接口正确发送的数据包个数|
|bytes|表示此接口正确发送的的数据包总字节数|
|TX errors|发送时产生错的数据包个数|
|dropped|发送时丢弃的数据包个数|
|overruns|发送时由于数据过快而丢失的数据包个数|
|carrier|发送时发生carrier错误而丢失的数据包个数|
|collisions|发送时冲突的数据包个数|

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@jlin ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    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 group default qlen 1000

// 显示报文统计信息
[root@jlin ~]# ip -s link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast   
    2592       32       0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    2592       32       0       0       0       0       
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:1c:53:02 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    977956     12484    0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    4727743    21068    0       0       0       0 

ip link set 网卡名{up|down}

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

ip addr show

// 查看网络接口协议地址(IPv4/IPv6)信息
[root@jlin ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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 group default qlen 1000
    link/ether 00:0c:29:1c:53:02 brd ff:ff:ff:ff:ff:ff
    inet 192.168.23.180/24 brd 192.168.23.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::a221:f87a:a500:8777/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

ip addr show输出结果

信息 含义
BROADCAST 表示该接口支持广播
MULTICAST 表示该接口支持多播
UP 表示该网络接口已开启
LOWER_UP 表示网络电缆已接入,设备已连接之网络
mtu 最大传输单位(数据包大小)
qdisc prifo_fast 用于数据包排队
state UP 网络接口已开启
qlen 传输长度
link/ether 接口的MAC(硬件)地址
brd MAC广播地址
inet IPV4地址
brd IPv4广播地址
scope global 允许所有人访问此ip地址
dynamic 地址是动态分配的
valid_lft forever(永久) IPv4地址的有效使用期限
preferred_lft forever IPv4地址的首选生存期
inet6 IPv6地址
scope link 仅在允许此设备上访问此ip地址
valid_lft forever IPv6地址的有效使用期限
preferred_lft forever IPv6的首选生存期

ip addr add ip地址 dev网卡名

// 给网卡添加IP地址
[root@jlin ~]# ip addr add 192.168.23.180/24 dev ens33
[root@jlin ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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 group default qlen 1000
    link/ether 00:0c:29:1c:53:02 brd ff:ff:ff:ff:ff:ff
    inet 192.168.23.180/24 brd 192.168.23.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::a221:f87a:a500:8777/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

ip addr del ip地址 dev 网卡名

// 删除网卡的IP地址
[root@jlin ~]# ip addr del 192.168.23.180/24 dev ens33
[root@jlin ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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 group default qlen 1000
    link/ether 00:0c:29:1c:53:02 brd ff:ff:ff:ff:ff:ff
    inet 192.168.23.181/24 brd 192.168.23.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::a221:f87a:a500:8777/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

ip route show

[root@jlin ~]# ip route show
default via 192.168.23.2 dev ens33 proto static metric 100 
192.168.23.0/24 dev ens33 proto kernel scope link src 192.168.23.180 metric 100 

ip route show输出结果

信息 含义
default 默认路由
via 下一跳
dev 网卡
proto 路由协议
metric 度量值
scope 有效范围

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

[root@jlin ~]# ip route add 192.168.23.0/24 dev 192.168.23.2 dev ens33
[root@jlin ~]# ip route show
default via 192.168.23.2 dev ens33 proto static metric 100 
192.168.23.0/24 dev ens33 proto kernel scope link src 192.168.23.180 metric 100 

ip route del 目的地址 dev 网卡名

[root@jlin ~]# ip route add 192.168.17.0/24 via 192.168.23.180 dev ens33
[root@jlin ~]# ip route show
default via 192.168.23.2 dev ens33 proto static metric 100 
192.168.17.0/24 via 192.168.23.180 dev ens33 
192.168.23.0/24 dev ens33 proto kernel scope link src 192.168.23.180 metric 100 

2.3 route命令

// 查看当前路由表
[root@jlin ~]# 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.23.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33

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

route命令输出结果

信息 含义
Flags:U up表示此路由启动状态
Flags:H host表示网关为以主机
Flags:G gateway表示网络为一路由器
Flags:R reinstate route使用动态路由重新初始化的路由
Flags:D dynamically动态路由
Flags:M modified此路由已被修改
Flags:! 表示此路由当前为关闭状态
Ref 该路由的引用数
Use 该路由被使用的次数
Iface 接口,也是网卡

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

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

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

3.1 ping命令

ping命令测试与另一台主机是否可达

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

// ping 3次后退出
[root@jlin ~]# ping -c 3 www.jlin.red
PING www.jlin.red (116.62.111.221) 56(84) bytes of data.
64 bytes from localhost (116.62.111.221): icmp_seq=1 ttl=128 time=31.4 ms
64 bytes from localhost (116.62.111.221): icmp_seq=2 ttl=128 time=34.1 ms
64 bytes from localhost (116.62.111.221): icmp_seq=3 ttl=128 time=29.3 ms

--- www.jlin.red ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 3067ms
rtt min/avg/max/mdev = 29.310/31.609/34.112/1.971 ms

// 每隔两秒ping一次,一共ping3次
[root@jlin ~]# ping -c 3 www.jlin.red
PING www.jlin.red (116.62.111.221) 56(84) bytes of data.
64 bytes from localhost (116.62.111.221): icmp_seq=1 ttl=128 time=31.4 ms
64 bytes from localhost (116.62.111.221): icmp_seq=2 ttl=128 time=34.1 ms
64 bytes from localhost (116.62.111.221): icmp_seq=3 ttl=128 time=29.3 ms

--- www.jlin.red ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 3067ms
rtt min/avg/max/mdev = 29.310/31.609/34.112/1.971 ms

// 一共ping 3秒,3秒后退出
[root@jlin ~]# ping -w 3 www.jlin.red
PING www.jlin.red (116.62.111.221) 56(84) bytes of data.
64 bytes from 221.111.62.116.in-addr.arpa (116.62.111.221): icmp_seq=1 ttl=128 time=29.7 ms
64 bytes from 221.111.62.116.in-addr.arpa (116.62.111.221): icmp_seq=2 ttl=128 time=32.8 ms

--- www.jlin.red ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2035ms
rtt min/avg/max/mdev = 29.799/31.319/32.839/1.520 ms

3.2 host与nslookup

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

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

// 使用host命令查询看DNS解析记录
[root@jlin ~]# host www.jlin.red
www.jlin.red has address 116.62.111.221

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

Non-authoritative answer:
Name:   www.jlin.red
Address: 116.62.111.221

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

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

// traceroute命令只追踪内网路由
[root@jlin ~]# traceroute www.jlin.red
traceroute to www.jlin.red (116.62.111.221), 30 hops max, 60 byte packets
 1  gateway (192.168.23.2)  0.101 ms  0.038 ms  0.169 ms
 2  * * *
 3  * * *

3.4 netstat命令

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

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

// 显示路由表
[root@jlin ~]# 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.23.0    0.0.0.0         255.255.255.0   U         0 0          0 ens33

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

// 常用选项
[root@jlin ~]# 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:111             0.0.0.0:*               LISTEN      756/rpcbind         
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1984/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1171/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1168/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1590/master         
tcp        0      0 192.168.23.180:22       192.168.23.1:57370      ESTABLISHED 14568/sshd: root@pt 
tcp6       0      0 :::111                  :::*                    LISTEN      756/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      1171/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1168/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1590/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           801/chronyd         
udp        0      0 0.0.0.0:45409           0.0.0.0:*                           799/avahi-daemon: r 
udp        0      0 0.0.0.0:929             0.0.0.0:*                           756/rpcbind         
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           799/avahi-daemon: r 
udp        0      0 192.168.122.1:53        0.0.0.0:*                           1984/dnsmasq        
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1984/dnsmasq        
udp        0      0 0.0.0.0:68              0.0.0.0:*                           10028/dhclient      
udp        0      0 0.0.0.0:111             0.0.0.0:*                           756/rpcbind         
udp6       0      0 ::1:323                 :::*                                801/chronyd         
udp6       0      0 :::929                  :::*                                756/rpcbind         
udp6       0      0 :::111                  :::*                                756/rpcbind        

3.5 ss命令

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

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

// 常见的state
	# TCP finite state machine:有限状态机
		listening:监听
		established:已建立的连接

// 以数字格式查看TCP相关信息
[root@jlin ~]# ss -ant

// 以数字格式查看监听的tcp端口
[root@jlin ~]# ss -tanl

// 以数字格式查看监听的tcp端口和进程号
[root@jlin ~]# ss -antlp

// 以数字格式查看udp相关信息
[root@jlin ~]# ss -anu

// 以数字格式查看udp监听的端口
[root@jlin ~]# ss -anul

// 以数字格式查看监听的tcp和udp端口以及进程pid
[root@jlin ~]# ss -anltup

常见端口

服务 端口
http 80/tcp
https 443/tcp
ssh 22/tcp
ftp 20,21/tcp
mysql 3306/tcp
rsync 873/rsync
redis 6379/tcp

3.6 网络故障排查

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

更多推荐