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远程登录服务
【工作】Linux 实用的端口转发工具:socat安装使用记录

【工作】Linux 实用的端口转发工具:socat安装使用记录

【工作】解决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 网卡绑定配置和模式详解

【工作】Linux 实用的端口转发工具:socat安装使用记录

【工作】Linux 实用的端口转发工具:socat安装使用记录

发表评论

昵称 *
邮箱 *
网址

沙发空闲中,快来抢!