解决重启iptables内核模块自动unload

post by rocdk890 / 2012-9-18 11:25 Tuesday linux技术
  在Linux内核里,默认情况下,iptables重启动的时候,iptables模块会被卸载(unload),然后加载重启.这种配置下iptables如果重启,对于那些tcp发起端window scale option有效的的连接会产生以下影响:
1.重启后window size会不能被正确识别;
2.已经建立的tcp会话状态会从 ESTABLISHED → INVALID 导致会话中断;
以上问题对于有重传机制的应用或许问题不大,但是如果一个应用不支持重传,当底层tcp会话中断后 就会发生异常问题。
如果应用环境中,这种类型会话偏多,而且iptabls的配置又因为安全问题要经常变动,就有必要探讨是否配置强制iptable模块在重启时不被unlod。

其实解决的方法,就是修改 iptables 的 config 文件,修改 IPTABLES_MODULES_UNLOAD="no" 就可以了.


以下描述整个配置的修改过程:

1 确认配置情况
① window scale option 的配置确认
cat /proc/sys/net/ipv4/tcp_window_scaling

1 window scale option 有效  0:无效

② iptables的配置
grep UNLOAD /etc/sysconfig/iptables-config

引用
IPTABLES_MODULES_UNLOAD="yes"  
iptables模块在重启是会被unload    "no" :不会被unload

2 修改配置
① 系统环境
uname -a
Linux test01 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux



② 配置修改成重启iptables
/etc/init.d/iptables restart

Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: nat filter                [  OK  ]
Unloading iptables modules:                                [  OK  ]  ← 被卸载了
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]  ← 重新加载


③修改配置
vim /etc/sysconfig/iptables-config
修改如下字段,表示重启不重新加载内核模块

IPTABLES_MODULES_UNLOAD="no"



④配置后重启iptables的结果如下:
/etc/init.d/iptables restart

Flushing firewall rules:                            [  OK  ]
Setting chains to policy ACCEPT: nat filter                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]  ← 模块加载
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-257.html

标签: centos iptables kernel 内核 重启 防火墙 Firewalls unload

评论: