Iptables实现HA双机进出口ip都为浮动ip,更保证了收发信验证的一致性!
这个项目是前一阵子,帮老师配置双机的时候遇到的,跟大家分享下,好久没有进入自己的博客了哈~不过倒是经常关注咱们的chinaunix,希望这个网站越来越强大!
客户环境:
PS: 老师那边给的俩个真实ip(网络通信的ip),都配置在eth0上,而这俩个ip实际都没有对外开放的,原先主机使用的是浮动ip。这样就就带来了后续的问题:
第一,修改浮动ip和真实ip兑换之后,重启肯定是无法远程了,只能qq远程,不过我都配置好双机才更改的ip,所以不一会启动主机双机服务就可以访问了;
第二:配置完双机之后出口ip都是真实的ip地址,使得仅能够收信而无法正常往外发信。具体的现象那就是,虽然服务器能够正常解析外网服务器的DNS,但是无法正常连接外网任何一台server。由于老师所给的这俩个真实ip原先没有开通,我在项目操作的时候才得知,再者当时向电信申请开通是需要一段时间的。为了尽快让老师恢复服务器的使用,我临时写了个脚本实现进出口ip都变为浮动ip,这样就解决了发信的问题。
脚本内容如下:
=============================================================================================================
#!/bin/bash
IPtables_Nums=`iptables-save|grep "*.*.*.*"|wc -l` //此 *.*.*.*为浮动ip。
if [ $IPtables_Nums -ne 2 ];then
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/modprobe iptable_filter
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/iptables -t nat -F
/sbin/iptables -F
IP=`cat /etc/sysconfig/network-scripts/ifcfg-eth0 |grep "IPADDR" |cut -d= -f2`
iptables -t nat -A PREROUTING -d $IP -p tcp -m tcp --dport 25 -j DNAT --to-destination *.*.*.*:25
iptables -t nat -A POSTROUTING -s $IP -p tcp -m tcp --dport 25 -j SNAT --to-source *.*.*.*
fi
=================================================================================================================
备注:
1、为了让双机正常切换的同时,iptables也能够同时生效,建议把此脚本放到双机的resource.d目录里面,并且改为可执行权限。
2、这个是针对这个客户做的iptables,其他的客户部署时稍微注意些,脚本里面有清除所有规则的功能,最终只保留新增加的俩条规则,所以在使用时需要特殊修改。
3.大家有更好的点子都可以跟我交流,希望更大的进步,谢谢!