背景:
这天客户反馈说我们的服务器网络配置好后,与网关、连接在同一交换机上的主机之间连通性测试不通过。怎么检查都无法ping通,网络状态、网卡状态、系统状态、硬件通通没有问题。申请售后支持。
分析步骤:
通常我们排查网络的思路如下:
1 查看网络是否正常启动,网卡是否处于UP状态(正常)
2 查看/var/log/messages日志中是否存在有关网卡的error描述(正常)
3 测试插在该服务器上交换机的其他正常机器之间的连通性是否正常(异常)
4 查看服务器连接到交换机的网线网口的连接状态指示灯和信号传输指示灯师傅正常(正常)
通过分析步骤后,硬件和系统层面是不存在问题的,问题还是出在网卡的配置上。
那就查看网卡的配置文件,重启网络一顿操作,和网关还有其他主机还是不通。我懵了!
最后在我火眼金睛下,发现了查看ip地址有和其他服务器不一样的地方,那就是NOARP,我的网卡配置文件没有这一项啊,怎么会多出来这个设置呢,我的测试环境中也不存在该配置。赶紧一查,我的天,原来是它搞得鬼!
客户环境如下:
正常环境如下(只有四个选项):
赶紧学习一下,学习内容如下:
在Linux中,当你执行ip a
(或ip addr
)命令来查看网络接口信息时,如果看到某个网络接口的配置中有NOARP
标记,这意味着该网络接口被配置为禁用ARP(Address Resolution Protocol,地址解析协议)。ARP协议负责将网络层的IP地址映射到数据链路层的MAC地址,这是一个在网络通信中至关重要的过程。
ARP协议的主要作用是将IP地址解析为MAC地址,这对于在局域网内通信至关重要,包括与网关的通信。如果一个网络接口被设置了NOARP标志,那么该接口将不会发送ARP请求来获取其想要通信的目标设备(包括网关)的MAC地址。这意味着,如果服务器需要通过一个配置了NOARP的接口去ping网关或者建立任何TCP/IP连接,它将无法完成IP到MAC地址的解析过程,从而无法建立网络层以下的通信链路。结果就是,服务器将不能通过这个接口成功地与网关通信,导致ping不通网关以及其他依赖于ARP解析的网络活动失败。
学习完了,知道了是什么原因导致的,那就赶紧把这个NOARP设置取消掉是不是就可以了。
取消NOARP的指令:(设置开启eth1网卡开启arp协议,其中eth1是网卡名)
ip link set eth1 arp on
设置完后,发现与网关的连通性还是不行,但是与连接该服务器的交换机上的其他服务器的连通性正常。
总算让我尝到一点甜头了,不然搞半天,都没法给客户交代。为啥与网关的连通性还是不行,重启网络走起,再一测试结果ping通了,万事大吉。
测试步骤:
将NOARP配置取消后,进行网关和其他主机的连通性测试:
思考:为什么客户会给网卡的配置中添加NOARP设置呢,能干什么呢?
- 静态路由场景:当网络中的某个接口不需要进行IP地址到MAC地址的动态解析,比如配置了静态ARP条目或者在一些特殊的安全设置中,可能会使用
NOARP
来禁用这个过程。 - 点对点链接:在点对点的连接中,尤其是当两端的MAC地址已知且固定时,ARP协议可能不是必需的。(客户在这个服务器上之前就是这么干的,因此添加了NOARP网卡设置)
- 安全考虑:在某些安全策略中,为了减少网络暴露面或防止ARP攻击,可能会选择禁用ARP。
- 虚拟接口或隧道:某些虚拟网络接口或隧道接口可能不需要ARP来运作,因此配置为NOARP。
相关链接:
网卡指示灯含义及故障分析_网卡指示灯颜色含义-CSDN博客
两台服务器分别绑定一台交换机,两台服务器之间网络却ping不通,怎么办?_两台电脑介入交换机,ping不通-CSDN博客