需求描述:


当前有一台服务器B IP假设为10.10.10.10 此台服务器有smtp、pop服务,用户可以正常使用

当前为了区别个性服务,需要部分用户从服务器A(192.168.100.100)去使用smtp、pop;

业务逻辑:部分用户的smtp、pop从10.10.10.10改为192.168.100.100,我们这里使用iptables的策略实现:


此案例较其他iptables策略不同的地方,在于,iptables既做了 POSTROUTING 也做了 PREROUTING ;因为如果不这么做的话,就会导致服务器 B  无法回报。


iptables做路由转发服务器经典案例_prerouting

1、首先测试服务器B的业务正常:(为了私密性,所有真实IP都已经打码,大家可以对照上图,自行对号入座,望理解)

iptables做路由转发服务器经典案例_postrouting_02

测试正常,

服务器  A  添加 iptables 策略如下:

iptables -t nat -I POSTROUTING -s 0.0.0.0/0.0.0.0 -o bond0 -j SNAT --to-source 192.168.100.100
iptables -t nat -I PREROUTING -i bond0 -d 192.168.100.100 -p tcp --dport 110 -j DNAT --to-destination 10.10.10.10
iptables -t nat -I PREROUTING -i bond0 -d 192.168.100.100 -p tcp --dport 25 -j DNAT --to-destination 10.10.10.10

记得在转发服务器开启路由转发:

net.ipv4.ip_forward = 1

将从此主机转发出去的出口IP转换为本机IP,然后将访问本机的25 110端口转发到 服务器B 

开始以 服务器A 上IP进行业务测试:

iptables做路由转发服务器经典案例_prerouting_03

测试业务通过~