iptables与F5所碰到的问题

前些时间让网络同事开通了公网的某个端口NAT到内网的某台服务器,由于此端口暴露在公网,所以在服务器上用iptables进行ip限制访问,先允许再拒绝。

配置好之后,内网测试通过,凡是不在规则里面的ip,都无法访问此端口。然而,外网却出现问题,百思不得其解啊。都走的是tcp/ip协议,怎么内网可以外网不行(外网的此端口在没有配置iptables之前是正常访问的),难道iptables没有配置正确。

找了一大圈,确认所配置的iptables是没有问题,只往源地址这边想了,是不是我把某个源地址漏掉了,造成了这种现象。

后面才发现,公司的公网IP默认都是建在F5上面,无论你需不需要做群集,所以造成了当F5转发外网访问请求到该端口时,F5的ip并不在我配置的iptables规则里面,自然就无法转发成功,所以导致外网此端口无法连通。

随之将F5的ip加入允许访问此端口的规则,外网端口访问正常。

好久没写日志了,六月最后一天,意思意思写一下了。

=========================================

晚上突然想了想,觉得应该不是F5转发请求的问题,应该是F5在自身是具备故障监控的功能,若所配置的端口不通时(iptables将F5监控该端口的数据包drop了),F5会实现故障转移自动将无法访问的主机从群集中踢出,但此在F5上针对此端口的VS的pool中只有一台主机,所以结果自然就是无法访问了。

service iptables start 无反应的解决方法

新装的RHEL5.4,想启用iptables的时候没点反应,现象就是无论start或者stop,都是没有任何输出的,而且service iptables status提示Firewall is stopped。新装的系统咋会有这情况?

网上一搜才发现,这现象的原因是因为iptables的配置文件没有生成,文件位置是/etc/sysconfig/iptables,才记起在系统安装向导时,我是选择禁用iptables的,可能就是这一步引起了没有配置文件生成。

解决方法如下

1、执行  iptables –L
2、service iptables save
3、然后再执行start或者stop都会有反应啦。

iptables限制IP连接数connlimit

最近公司activemq服务器默认连接了N个TCP连接,看了下有几百个都是同一个IP,后面确认了是合作商的消费端有问题,没几条消息竟然创建了N个连接来接收消息,哥你这代码写得也太破了吧。像这种情况你去让他们改代码可想而知不太可能,只能在服务端这边做限制了,等到他们发现用不了的时候,自己就会乖乖的去改了。

用到了强大的iptables,但默认的iptables并没有connlimit这个模块,应该是跟系统版本有关,服务器的系统版本为:

[root@web01 ~]# uname -r
2.6.18-128.el5PAE

[root@web01 ~]# iptables –version
iptables v1.3.5

继续阅读“iptables限制IP连接数connlimit”