Centos

使用 iptables 進行 IP 到 IP 轉發centosC和n噸這scentos

  • October 27, 2012

我有 2 台伺服器。伺服器 1 的 IP 為 1.1.1.1 和伺服器 2 的 IP 為 2.2.2.2

我的域 example.com 目前指向 1.1.1.1,但很快我將切換到 ip 2.2.2.2。我已經為域 example.com 設置了低 TTL,但是在我更改域的 ip 地址後,有些人仍然會點擊舊的 ip a。

現在兩台機器都執行 centos 5.8,使用 iptables 和 nginx 作為網路伺服器。

我想將仍然到達伺服器 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 的內容。我究竟做錯了什麼?

嘗試更改-s 1.1.1.1-d 1.1.1.1

您想匹配目標地址而不是源地址…

您還需要調整您的 MASQUERADE 規則以包括流量在返回途中所採用的介面。(很可能是 eth0 或類似的)。

使用 -o 標誌執行此操作。例如像這樣:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

兩台機器是否在同一個子網,不經過其他路由器就可以互相訪問?如果沒有,即使您正確設置,所描述的方法也不起作用。

在進行此類遷移時,我經常使用rinetd來轉發隨機 TCP 埠。或者 Apache 的 mod_proxy,如果你仍然使用 Apache(你不使用,但我使用)。

引用自:https://serverfault.com/questions/442920