platinum 回復于:2005-08-19 15:20:51 |
對,是這個道理
另外在權值路由負載均衡時,也建議用 MASQUERADE,這樣可以實現路由的自動選擇 |
jackylau 回復于:2005-08-19 16:26:46 |
我看過很多文檔在做負載均衡時,都用的是MASQUERADE,但是不知道為什么.SNAT不可以么? |
platinum 回復于:2005-08-19 18:33:43 |
[quote:32285730eb="jackylau"]我看過很多文檔在做負載均衡時,都用的是MASQUERADE,但是不知道為什么.SNAT不可以么?[/quote:32285730eb]
這就是 SNAT 與 MASQUERADE 的區別啊,你不是在頂樓已經闡述過了嗎? |
jackylau 回復于:2005-08-20 19:01:31 |
我的意思是說:在做負載均衡的時候為什么不能用SNAT?我沒有實驗環境,所以不能驗證. |
platinum 回復于:2005-08-20 19:27:53 |
哦,是這樣的
route 和 nat 二者是不同的 route 決定數據包以某條路由出去 nat 決定數據出去的時候,源地址欺騙為什么 |
hayg 回復于:2005-08-20 22:59:40 |
負載均衡和nat有何關聯?負載均衡是由路由決定的,nat是路由后的事了。 |
platinum 回復于:2005-08-20 23:30:33 |
何謂 NAT ?
NAT 也叫地址轉換,把你的 LAN 地址變為 WAN 再出去 如果你有雙鏈路,除了數據包被隨機路由外,你的 NAT 之后的地址也要跟著變化才可以 舉個例子: 你有兩條線路 eth0 1.1.1.1 gw 1.1.1.254,線路1 eth1 2.2.2.1 gw 2.2.2.254,線路2 eth2 192.168.0.254,內網地址 如果你使用了 iproute2 的 equalize 做了權值路由負載均衡,那么數據包是根據你設置的權值走不同路由出去的 如果你使用 -j MASQUERADE 做 NAT,那么你的數據包會根據不同的 nexthop 來動態修改 WAN 地址 但如果你使用 -j SNAT --to 1.1.1.1,類似這樣做,那么你的數據包只能欺騙成 1.1.1.1 出去 試想,一個從 2.2.2.254 出去的數據包,源地址卻為 1.1.1.1,回來的時候是怎樣走的?繞了一圈,這樣的話,根本沒起到鏈路負載均衡的目的,我們需要的是數據流單獨走單獨回來,因此這里使用 -j MASQUERADE 就對了 MASQUERADE 是動態的,他可以動態根據不同的 nexthop 選擇不同的 SNAT 地址,雖然我沒找到文字的東西說明這個問題,但我做過很多試驗,上面的內容是我自己總結的,如果說的不對還請大家指正 :em06: |
senmao 回復于:2005-08-21 02:36:07 |
學習了。 |
jackylau 回復于:2005-08-22 10:05:18 |
噢,明白了.謝謝! |
braverman 回復于:2005-08-29 10:33:13 |
謝謝platinum 的經驗總結! |