网卡命名规则
传统的 rhel 系统以 eth0 eth1 名来命名⽹卡, 在 rhel7 系统开始使⽤新的命名规则:
基于固件、设备结构、设备类型
1.由两个字⺟开头标示固件
以太⽹⽹卡以 en 开头
⽆线⽹卡以 wl 开头
2.设备结构
o 表示板载⽹卡(on-board)
s 热插拔结构(hotplug slot)
p PCI插槽位置
⽹络接⼝信息查看
//查看当前处于活动状态的⽹络接⼝
[root@i-m60lx3hh ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.140.57.59 netmask 255.255.255.0 broadcast 10.140.57.255inet6 fe80::5054:9eff:fe39:64d5 prefixlen 64 scopeid 0x20<link>ether 52:54:9e:39:64:d5 txqueuelen 1000 (Ethernet)RX packets 179047 bytes 203409222 (193.9 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 145355 bytes 19719266 (18.8 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 6 bytes 416 (416.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 6 bytes 416 (416.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0//⽹卡配置信息含义如下:
UP: ⽹卡处于活动状态
BROADCAST: ⽀持⼴播
RUNNING: ⽹线已接⼊
MULTICAST: ⽀持组播
MTU: 最⼤传输单元(字节),即此接⼝⼀次所能传输的最⼤封包
inet: 显示IPv4地址⾏
inet6: 显示IPv6地址⾏
link/enther: 指设备硬件(MAC)地址
txqueuelen: 传输缓存区⻓度⼤⼩
RX packets: 接收的数据包这个⽹络接⼝(ens33)在接收(RX)⽅向收到了38911个数据包,共计12109629字节
(约11.5 MiB)。
TX packets: 发送的数据包
errors: 总的收包的错误数量
dropped: 由于各种原因, 导致拷⻉在内存过程中被丢弃
collisions: ⽹络信号冲突情况, 值不为0则可能存在⽹络故障
flags=4163<UP,BROADCAST,RUNNING,MULTICAST>: 该⽹卡的状态标志,包括 UP(启⽤), BROADCAST(⼴
播), RUNNING(运⾏), MULTICAST(多播)等。
mtu 1500: 最⼤传输单元,表示该⽹卡能够⼀次传输的最⼤数据包⼤⼩。
inet 192.168.x.x: 该⽹卡的 IPv4 地址。
netmask 255.255.255.0: ⼦⽹掩码,⽤于指定⽹络地址和主机地址的分界线。
broadcast 192.168.x.xxx: 该⽹卡所在⼦⽹的⼴播地址,⽤于向该⼦⽹的所有主机发送⼴播信息。
inet6 fe80::97db:28da:1489:c939: 该⽹卡的 IPv6 地址,以 fe80 开头。
prefixlen 64: IPv6 地址的前缀⻓度,表示⼦⽹的⻓度。
scopeid 0x20: IPv6 地址的作⽤域标识符,⽤于指定该地址所属的范围。
ether 00:0c:29:f6:2d:2a: 该⽹卡的 MAC 地址,⽤于唯⼀标识该⽹卡。
txqueuelen 1000: 发送队列的⻓度,表示在该⽹卡上最多可以同时缓存多少个数据包。
RX packets 38911: 接收到的数据包数量。
bytes 12109629: 接收到的数据量,以字节为单位。
RX errors 0: 接收数据包时发⽣的错误数量。
dropped 0: 接收数据包时被丢弃的数量。
overruns 0: 接收数据包时发⽣的溢出数量。
frame 0: 接收数据包时发⽣的帧错误数量。
TX packets 26054: 发送的数据包数量。
bytes 4330603: 发送的数据量,以字节为单位。
TX errors 0: 发送数据包时发⽣的错误数量。
dropped 0: 发送数据包时被丢弃的数量。
overruns 0: 发送数据包时发⽣的溢出数量。
carrier 0: 发送数据包时发⽣的载波错误数量。
collisions 0: 发送数据包时发⽣的冲突数量。//仅查看eth0⽹卡状态信息
[root@i-m60lx3hh ~]# ifconfig eth0//其他查看ip指令
[root@i-m60lx3hh ~]# ip addr show enth0
2: eth0: <BROADCAST,MULTICAST,①UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen
1000②link/ether 00:0c:29:34:92:fc brd ff:ff:ff:ff:ff:ff③inet 192.168.9.3/24 brd④ 192.168.9.255 scope global ens33valid_lft forever preferred_lft forever⑤inet6 fe80::bd23:46cf:a12e:c0a1/64 scope linkvalid_lft forever preferred_lft forever
①: 活动接⼝为UP
②: Link⾏指定设备的MAC地址
③: inet⾏显示IPv4地址和前缀
④: ⼴播地址、作⽤域和设备名称在此⾏
⑤: inet6⾏显示IPv6信息//ip命令也可⽤于显示关于⽹络性能的统计信息, ⽐如: 发送和传送的数据包、错误、丢弃
[root@i-m60lx3hh ~]# ip -s link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000link/ether 52:54:9e:39:64:d5 brd ff:ff:ff:ff:ff:ffRX: bytes packets errors dropped overrun mcast 203428874 179341 0 0 0 0 TX: bytes packets errors dropped carrier collsns 19732756 145476 0 0 0 0
NetWorkManager管理网络
RHEL/CentOS7`系统默认使⽤`NetworkManager`来提供⽹络服务,这是⼀种动态管理⽹络配置的守护进程,能够让
⽹络设备保持连接状态。
NetworkManager提供的命令⾏和图形配置⼯具对⽹络进⾏设定, 设定保存的配置⽂件在
/etc/sysconfig/network-scripts⽬录下, ⼯具有 nmcli, nmtui, nm-connect-editordevice 物理设备, 例如 eth0,virbr0,team0
connection 连接设置, 具体⽹络配置⽅案
1.不同的⽹络连接配置可以应⽤到相同的物理设备,但物理设备同⼀时间只能应⽤其中某个⽹络连接
2.针对物理⽹络接⼝, 设定不同的⽹络连接, 在不同的使⽤环境中激活相应的⽹络连接,就可以实现⽹络配置
信息的⾃动切换了使⽤ nmcli 命令查看设备以及连接情况//查看设备状态
[root@i-m60lx3hh ~]# nmcli device
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected eth0
lo loopback unmanaged -- //指定查看设备的详细状态
[root@i-m60lx3hh ~]# nmcli dev show eth0
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 52:54:9E:39:64:D5
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: eth0
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 10.140.57.59/24
IP4.GATEWAY: 10.140.57.1
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 10.140.57.1, mt = 100
IP4.ROUTE[2]: dst = 10.140.57.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]: 100.64.9.5
IP6.ADDRESS[1]: fe80::5054:9eff:fe39:64d5/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = ff00::/8, nh = ::, mt = 256, table=255
IP6.ROUTE[2]: dst = fe80::/64, nh = ::, mt = 256//查看连接状态
[root@i-m60lx3hh ~]# nmcli connection
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0 //所有活动的连接
[root@i-m60lx3hh ~]# nmcli con show --active
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0//查看指定ID连接的详细情况
[root@i-m60lx3hh ~]# nmcli con show "eth0"使⽤ nmcli 创建新的连接
//定⼀个名为dhcp的连接, 配置DHCP地址
//实质是添加/etc/sysconfig/network-scripts/ifcfg-ens33-dhcp配置⽂件
[root@i-m60lx3hh ~]# nmcli connection add \
con-name ens33-dhcp ifname eth0 autoconnect yes \
type ethernet ipv4.method auto//新增⼀个静态地址的连接, 配置IP、掩码、⽹关等
静态地址添加流程
1.添加⼀个连接的配置
2.给连接指定⼀个名称
3.连接配置绑定物理⽹卡
4.⽹卡的类型,⽹卡开机启动
5.⽹卡通过什么途径获取地址(静态、dhcp)
6.配置对应的IP地址、掩码、⽹关、DNS
[root@i-m60lx3hh ~]# nmcli connection add con-name eht1-static ifname eth1 \
type ethernet autoconnect yes \
ipv4.method manual \
ipv4.addresses 192.168.56.100/24 \
ipv4.gateway 192.168.56.2 \
ipv4.dns 192.168.56.2 \
+ipv4.dns 8.8.8.8//激活指定的连接名为eht1-static的连接
[root@i-m60lx3hh ~]# nmcli connection up eht1-static# 使⽤ nmcli 修改已有的⽹络连接
//1、取消开机自动激活网络
[root@i-m60lx3hh ~]# nmcli connection modify eht1-static \
> autoconnect no//2、修改连接的dns
[root@i-m60lx3hh ~]# nmcli connection modify eth1-static \
> ipv4.dns 8.8.8.8//3、给连接在增加dns,有些设定值通过+/-可以怎家或则移出设定
[root@i-m60lx3hh ~]# nmcli connection modify eht1-static \
> +ipv4.dns 8.8.8.8//4、替换连接的静态ip和默认网关
[root@i-m60lx3hh ~]# nmcli connection modify eht1-static \
> ipv4.addresses 192.168.69.252/24 ipv4.gateway 192.168.69.22//5、添加一个没有默认网关的ip
[root@i-m60lx3hh ~]# nmcli connection modify eth1-static \
> +ipv4.addresses 192.168.70.12/24//6、修改完毕,nmlci仅仅修改并保存了配置,要激活更改,需要重激活连接
[root@i-m60lx3hh ~]# nmcli connection down eht1-static && \
nmcli connection up eht1-static//删除⾃建的connection
[root@i-m60lx3hh ~]# nmcli connection delete eht1-static//图形工具配置 nm-connection-editor//修改eht1-static配置⽂件
[root@i-m60lx3hh ~]# vim /etc/sysconfig/network-scripts/ifcfg-eht1-static
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.69.232
PREFIX=24
GATEWAY=192.168.69.1
DNS1=211.161.122.200
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens32-staic
UUID=6fdebe6e-5ef0-4a05-8235-57e317fdada0
DEVICE=ens32
ONBOOT=yes//⼿⼯编辑正在使⽤的配置⽂件,需要重载配置,然后重启
[root@i-m60lx3hh ~]# nmcli connection reload
[root@i-m60lx3hh ~]# nmcli connection down eht1-static && \
nmcli connection down eht1-static
使用原生的NetWork管理网络
CentOS/RHEL 的⽹络配置⽂件默认⽬录为 /etc/sysconfig/network-scripts
默认第⼀块物理⽹卡配置⽂件为 ifcfg-eth0 , 如果有第⼆块物理⽹卡, 配置⽂件则为 ifcfg-eth1 以此类推。 注
意: 如果新增物理⽹卡没有配置⽂件,可选择复制系统默认的进⾏修改。1.删除 NetworkManger 建⽴连接, 同时停⽌ NetworkManger 服务
[root@i-m60lx3hh ~]# systemctl disable NetworkManager
[root@i-m60lx3hh ~]# systemctl stop NetworkManager2.添加⼀块物理⽹卡, 然后新增⽹络连接配置⽂件
//复制配置eth0配置⽂件为eth1
[root@i-m60lx3hh ~]# cp /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth1}//编辑⽹卡配置⽂件
[root@i-m60lx3hh ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.56.12
NETMASK=255.255.255.0
GATEWAY=192.168.56.2
DNS1=192.168.56.2
//重启network⽹络服务加载⽹络
[root@i-m60lx3hh ~]# systemctl restart network.service
//选项 描述
BOOTPROTO=none //获取地址⽅式[none|dhcp|static]
IPADDR=192.168.56.12 //固定IP地址
PREFIX=24 //掩码
GATEWAY=192.168.56.2 //⽹关
DNS1=192.168.56.2 //域名解析
DEVICE=eth1 //设备名称
NAME="eth1" //连接名称
ONBOOT=yes //开机⾃启动
DEFROUTE=yes //将接⼝设定为默认路由[yes|no]
USERCTL=yes //允许⾮root⽤户管理接⼝[yes|no]
Route设置路由以及网关
Linux主机之间是使⽤IP进⾏通信, 假设A主机和B主机同在⼀个⽹段内且⽹卡都处于激活状态, 则A具备和B直接通信
的能⼒, 但如果A主机和B主机处于两个不同的⽹段, 则A必须通过路由器才能和B通信, 路由器属于IT设备的基础设施,
每⼀个⽹段都应该⾄少有⼀个⽹关
在同⼀个⼦⽹ 交换机arp 进⾏通信 不在同⼀⽹ 路由器// 跟踪路由(访问机器经过哪些路由)
[root@i-m60lx3hh ~]# traceroute 192.168.9.1
traceroute to 192.168.9.1 (192.168.9.1), 30 hops max, 60 byte packets1 10.16.95.84 (10.16.95.84) 0.497 ms 0.475 ms 0.466 ms// 增加网段路由
[root@i-m60lx3hh ~]# route add -net 192.168.90.0/24 gw 192.168.56.254
[root@i-m60lx3hh ~]# route add -net 0.0.0.0/0 gw 192.168.56.254//删除网段路由
[root@i-m60lx3hh ~]# route del -net 192.168.90.0/24
[root@i-m60lx3hh ~]# route del -net 0.0.0.0/0 gw 192.168.56.254//增加主机路由
[root@i-m60lx3hh ~]# route add -host 192.168.70.1 gw 192.168.56.254//删除主机路由
[root@i-m60lx3hh ~]# route del -host 192.168.70.1/32//查看当前主机路由表
[root@i-m60lx3hh ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.140.57.1 0.0.0.0 UG 100 0 0 eth0
10.140.57.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
主机名设定与名称解析服务
生产环境中必须配置主机名,同时主机名也需要遵循一定的规范,比如:
公有云: 地区-项⽬-业务-服务-节点-地址
wh-shop-register-nginx-node1-192.168.9.3
wh-med-pay-mysql-master01-192.168.9.3
wh-med-pay-mysql-slave01-192.168.9.41、主机名查看与配置
//hostname命令可以查看主机名, 也可以⽤于临时修改主机名
[root@i-m60lx3hh ~]# hostname//设定永久名称
[root@i-m60lx3hh ~]# hostnamectl set-hostname nginx.node1.com //永久修改主机名会修改/etc/hostname⽂件//检查状态信息
[root@i-m60lx3hh ~]# hostnamectlStatic hostname: i-m60lx3hhIcon name: computer-vmChassis: vmMachine ID: b3a4190c68b4331bb17a81033ca76894Boot ID: 6df9e8ed0ca84424bca5e4dcef050a24Virtualization: kvmOperating System: CentOS Linux 7 (Core)CPE OS Name: cpe:/o:centos:centos:7Kernel: Linux 3.10.0-1160.el7.x86_64Architecture: x86-64# DNS
[root@i-m60lx3hh ~]# cat /etc/resolv.conf
网络检测工具与故障排查
ping 命令的⽬的在于测试另⼀台主机是否可达, 如果ping不到某台主机,就说明对⽅主机已经出现了问题, 但是不排
除由于链路中的防⽕墙、ping被丢弃等原因造成ping不通的情况-c 指定ping的次数
-i 指定ping包的发送间隔
-w 如果ping没有回应, 则在指定超时时间后退出
host/nslookup`命令是⽤来查询`DNS`记录的,如果使⽤域名作为host的参数, 命令返回该域名的`IP# traceroute 命令是⽤来路由跟踪, 检测⽹络故障出现在 ISP 运营商或是对端服务⽆法响应
[root@i-m60lx3hh ~]# traceroute www.bai.com# ss/netstat 命令查看⽹络连接状态
-t tcp协议的连接
-a 所有状态的连接
-n 数字化输出
-u upd协议的连接
-l 处于listen状态的连接
-p 输出相应进程的名字1、Show TCP sockets (LISTEN)
[root@i-m60lx3hh ~]# netstat -lntup # l显示监听的 n以数字形式显示 t是tcp u是udp p是显示相关的PID和程序名[root@i-m60lx3hh ~]# netstat -tnl |grep 22 # 过滤以端口号22为监听的服务[root@i-m60lx3hh ~]# netstat -tnlp |grep 22 # 过滤以端口号22为监听的服务名字# 常见端口
http 80/tcp
https 443/tcp
ssh 22/tcp
ftp 20,21/tcp
mysql 3306/tcp
rsync 873/rsync
redis 6379/tcp
网络连接的状态
共有12中可能的状态,前⾯11种是按照TCP连接建⽴的三次握⼿和TCP连接断开的四次挥⼿过程来描述的:
1. LISTEN:⾸先服务端需要打开⼀个socket进⾏监听,状态为 LISTEN,侦听来⾃远⽅TCP端⼝的连接请求 ;
2. SYN_SENT:客户端通过应⽤程序调⽤connect进⾏active open,于是客户端tcp发送⼀个SYN以请求建⽴⼀
个连接,之后状态置为 SYN_SENT,在发送连接请求后等待匹配的连接请求;
3. SYN_RECV:服务端应发出ACK确认客户端的 SYN,同时⾃⼰向客户端发送⼀个SYN,之后状态置为,在收到
和发送⼀个连接请求后等待对连接请求的确认;
4. ESTABLISHED:代表⼀个打开的连接,双⽅可以进⾏或已经在数据交互了, 代表⼀个打开的连接,数据可以
传送给⽤户;
5. FIN_WAIT1:主动关闭(active close)端应⽤程序调⽤close,于是其TCP发出FIN请求主动关闭连接,之后进⼊
FIN_WAIT1状态, 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
6. CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为⽂件结
束符传递给上层应⽤程序),并进⼊CLOSE_WAIT, 等待从本地⽤户发来的连接中断请求;
7. FIN_WAIT2:主动关闭端接到ACK后,就进⼊了 FIN-WAIT-2,从远程TCP等待连接中断请求;
8. LAST_ACK:被动关闭端⼀段时间后,接收到⽂件结束符的应⽤程 序将调⽤CLOSE关闭连接,这导致它的TCP
也发送⼀个 FIN,等待对⽅的ACK.就进⼊了LAST-ACK,等待原来发向远程TCP的连接中断请求的确认;
9. TIME_WAIT:在主动关闭端接收到FIN后,TCP 就发送ACK包,并进⼊TIME-WAIT状态,等待⾜够的时间以确保
远程TCP接收到连接中断请求的确认;
10. CLOSING: ⽐较少⻅,等待远程TCP对连接中断的确认;
11. CLOSED: 被动关闭端在接受到ACK包后,就进⼊了closed的状态,连接结束,没有任何连接状态;
12. UNKNOWN:未知的Socket状态;# 常见标志位
SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握⼿建⽴TCP连接时有效。表示⼀个
新的TCP连接请求。
ACK: (确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有
数据。
FIN: (结束标志,FINish)⽤来结束⼀个TCP回话.但对应端⼝仍处于开放状态,准备接收后续数据。网络故障排查:
1、⽹络故障分为硬件\软件故障
⽹卡损坏
链路故障
⽹卡驱动不兼容2、网络排查思路
ping本地回环⼝, 确定本机TCP/IP协议栈是否正常
ping本机IP地址, 确定本地设备以及驱动是否正常
ping同⽹段主机, 确定⼆层⽹络是否正常⼯作
ping⽹关地址, 确定本地与⽹络是否正常
ping公⽹地址, 确定本地路由是否正常 ping baidu.com ping 223.5.5.5
ping公⽹域名, 确定DNS客户端是否正常 dns/resove配置dns有问题3、服务故障排查思路
使⽤telnet检测端⼝是否开放
检查服务端防⽕墙以及SElinux
检查相应的权限是否配置正常
检查⽇志是否有异常
检查完毕后持续测试⚠️: 所有的排查思路都从OSI七层模型由下往上逐⼀进⾏排查(学会看⽇志)