在云服务器的日常使用过程中,从老服务器迁移数据到新服务器是不可避免的一项运维操作。在新老服务器交替的迁移过程中,由于域名解析生效需要一段时间,难免出现部分流量仍然请求到老服务器上的情况,造成数据出现衔接问题。iptables是Linux操作系统上广泛使用的一款流量控制软件,我们可以在老服务器上通过iptables把流量转发到新服务器上,这样就可以有效地解决迁移造成的数据差异。
本文就以CentOS 6服务器为例,介绍如何使用iptables做流量转发,以下方法同时支持32位和64位版本的CentOS。在操作之前,请确保iptables已安装成功。如果没有安装iptables,请使用以下命令安装。
yum install iptables -y
第一步:启用路由
要让CentOS系统支持流量转发,必须修改一个Linux内核参数。编辑/etc/sysctl.conf文件,把以下参数设置为1。
net.ipv4.ip_forward = 1
保存后执行以下命令,重新加载内核参数。
sysctl -p
第二步:设置iptables
创建转发规则:
iptables -A FORWARD -d 2.2.2.2 -i venet0 -p tcp -m tcp --dport 80:90 -j ACCEPT
注意:把2.2.2.2替换成新服务器的IP,把venet0替换成网络接口名称,把80:90替换成希望转发的端口范围。如果只需要转发一个端口的流量,那么直接用端口号即可。如果要转发UDP流量,那么把tcp替换成udp即可。
创建路由规则(目的地址):
iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m tcp --dport 80:90 -j DNAT --to-destination 2.2.2.2
注意:需要替换的参数同上一条命令。
创建路由规则(源地址):
iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE
注意:把venet0替换成网络接口名称。
保存并加载iptables:
service iptables save
service iptables reload
至此,我们已成功地在Linux云服务器环境下,使用iptables把老服务器的流量转发到新服务器上。