Linux下使用DNAT、网卡故障一例

故障描述:

     全新的Linux服务器配置iptables开启DNAT后,用户通过公网访问内网服务器很慢,具体表现是下载只有1Kb/s ,服务器网页加载也是相当的慢...但通过局域网访问正常


系统环境:

     Dell PowerEdge R620、4块博通网卡、RHEL5.8 x64 2.6.18-308.el5


故障分析:

     1.通过eth1从内网访问正常,说明后台服务是OK的

     2.停用iptables后发现故障不再,初步判定是iptables引起的问题,刚开始怀疑是规则写错了,调试几次仍然不行,索性把iptables规则全重写,默认策略先全部开启,主要规则如下:(ip和端口已和谐・・・)

     3.发现开启iptables后故障依旧,这下纠结了,很明显是iptables引起的问题...查看系统日志也没有发现什么异常的信息,突然想到iptables有个调试跟踪模块,说不定可以帮忙定位问题,于是在iptables脚本中加入了如下几行:(主要是第二行ip_conntrack,由于此功能比较耗空间,所以一般调试时才开启)

再查看系统日志这下有发现了...

提示:received packets cannot be forwarded while LRO is enabled....

(当开启LRO模式时,eth1上收到的包不能被转发...)

经过查询资料发现是网卡BNX2X驱动的TPA模式所致...

参考:http://docs.oracle.com/cd/E20065_01/doc.30/e18546/toc.htm

于是参考Oracle的解决方案,修改/etc/modprobe.conf文件,添加options bnx2x disable_tpa=1关闭网卡的TPA模式,重启网络服务问题得到解决...


关于TPA:http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=1493706


你可能感兴趣的:(iptables,Linux网卡故障)