Home > 工作记录 > 正文

【工作】解决服务器重启后bond网卡无法正常通信

写在前面:

之前另外一个事业部刚成立时候没有运维,他们业务的所有服务器都由我们这边来安装配置,后来他们有自己的运维后,服务器和权限逐步移交过去了,但是最近那边运维反应我们之前装的一台服务器重启后,Web服务不能正常访问,希望帮忙查下问题。

问题描述:

这台服务器是他们前端Web服务器,上面配置的外网地址,现在现象是网站无法正常访问,通过telnet 80端口发现有时候成功有时候不成功。

解决过程:

经过排查防火墙等配置,发现没有问题,根据现象查看网卡配置,发现其中一个网卡的MAC地址跟bond的MAC地址居然不一样,如下图:
20170106145210
这也是造成为什么有时候通有时候不通,当流量访问到em1这个网卡时候,em1和bond接口的MAC地址一致所以可以正常处理报文,通信是正常的。而当访问到em2时候,由于em2的MAC地址跟bond接口的不同,所以em2判断报文不是发给自己的,就会丢弃该报文,造成无法通信。
 
那是什么原因导致em2的mac地址改变的呢?经过查找资料发现,bond配置里有一个NM_CONTROLLED参数,这个参数的作用是把网卡交给Networkmanager服务来管理。
 
而Network Manager其实就是屏幕右上角落里的一个图形化管理网络设备的网络管理器,对协助你管理无线,ADSL,VPN等都有很大便利,但是此处如果把NM_CONTROLLED设置成yes的话,服务器重启后,Networkmanager会接管网卡,直接调用网卡的实际物理mac地址,导致上面出现的网卡物理mac地址和bond不一致的现象。
 
由于我们的服务器都是批量安装,所有服务器配置都是统一的,这个服务我安装系统的时候是不会存在的,经确认是他们那边的人安装并启动了这个服务。

解决办法:

 
1、先查看NM_CONTROLLED参数配置,发现bond中并没有配置此参数:
# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
BONDING_OPTS="mode=0 miimon=50 fail_over_mac=0"
USERCTL=no
BRIDGE=br0
 
2、检查NetworkManager服务的状态,发现服务是自启动的:
# chkconfig --list | grep  NetworkManager
NetworkManager 0:off 1:off 2:off 3:on 4:on 5:on 6:off
 
3、关闭NetworkManager服务:
# service NetworkManager stop
# chkconfig NetworkManager off
 
4、临时down掉有问题的网卡:
# ifconfig em2  down

5、重启网络服务:
# /etc/init.d/network restart

重启之后,ssh连接会断开,重新ssh登录,发现em2的MAC地址和bond一样了,通信也正常,问题解决。

 

题外话:

更改Bond的MAC地址的方法是在bond的配置文件中添加 "MACADDR="参数,而不是"HWADDR="这个参数.
上一篇:【工作】Zabbix 高可用架构的实现
下一篇:【基础】Linux 开启telnet远程登录服务
【工作】解决ACPI Error: No handler for Region错误导致linux系统自动重启

【工作】解决ACPI Error: No handler for Region错误导致linux系统自动重启

【工作】Centos上ssh连接服务器缓慢的解决办法

【工作】Centos上ssh连接服务器缓慢的解决办法

【工作】Centos 7/6 内核版本由3.10.0 升级至 4.12.4方法

【工作】Centos 7/6 内核版本由3.10.0 升级至 4.12.4方法

【基础】怎样在 CentOS 里下载 RPM 包及其所有依赖包

【基础】怎样在 CentOS 里下载 RPM 包及其所有依赖包

【理论】Linux bond 网卡绑定配置和模式详解

【理论】Linux bond 网卡绑定配置和模式详解

【工作】Nginx 实现域名的登录验证功能

【工作】Nginx 实现域名的登录验证功能

【工作】Centos 6.5 PHP 5.3 yum升级到5.5、5.6、5.7版本方法

【工作】Centos 6.5 PHP 5.3 yum升级到5.5、5.6、5.7版本方法

发表评论

昵称 *
邮箱 *
网址

沙发空闲中,快来抢!