我有两个服务器。服务器1,ip 1.1.1.1,服务器2,ip 2.2.2.2
我的域example.com目前为1.1.1.1,但很快我将切换到IP2.2.2.2。我已经为域example.com设置了一个较低的TTL,但是在我更改域的ip地址后,有些人仍然会访问旧的ip a。
现在,这两台机器都运行centos5.8,使用iptables和nginx作为run服务器。
我希望转发所有仍然访问服务器1.1.1.1到2.2.2.2的通信量,这样就不会有任何停机时间。
现在我找到了这个教程:http://www.debuntu.org/how-to-redirecting-network-traffic-a-new-ip-using-iptables,但我似乎无法让它工作。
我启用了ip转发:echo "1" > /proc/sys/net/ipv4/ip_forward
之后,我运行了以下两个命令:
/sbin/iptables -t nat -A PREROUTING -s 1.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 2.2.2.2:80
/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE但是,当我在浏览器中加载http://1.1.1.1时,我仍然可以得到1.1.1.1上承载的页面,而不是2.2.2.2中的内容。我做错了什么?
发布于 2012-10-27 10:19:26
尝试将-s 1.1.1.1更改为-d 1.1.1.1
你想要匹配目标地址而不是源地址.
您还需要调整您的伪装规则,以包括流量在返回的道路上采取的接口。(很可能是eth0或类似的)。
使用-o标志执行此操作。例如: iptables -t nat -A POSTROUTING -o eth0 -j伪装
发布于 2012-10-27 17:08:07
这两台机器是否在同一个子网中,可以在不经过其他路由器的情况下到达对方?如果没有,所描述的方法即使设置正确也不能工作。
在进行这种迁移时,我经常使用牛皮转发随机的TCP端口。或者Apache的mod_proxy,如果您以任何方式使用Apache(您不使用,但我使用)。
https://serverfault.com/questions/442920
复制相似问题