iT邦幫忙

0

(超緊急) 跪求各大大指教一下 NAT LOOPBACK + LVS 問題..

Linux : CentOS 6.2 x86_64
Device : DL320 G5
雙網卡,
eth0 連接ISP公司
eth1 連接LAN side (192.168.128.254) 並作為GATEWAY (已設置NAT, DNS forwarder)

LAN內所有 192.168.128.xxx CLIENT'S(包括接下來的WEB SERVER) GATEWAY 已設為 eth1 IP..

已建立LVS + keepalived ..
並以 LVS/NAT 建立, 以 RealIP eth0 IP 作 Director 的 IP..

[root@Web00 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 0x9xxx1x4x9x.ctinets.com:htt rr
-> 192.168.128.109:http Masq 100 0 0
-> 192.168.128.110:http Masq 100 0 0
-> 192.168.128.111:http Masq 100 0 0

街外現在已可正常連接..

但內部無法作 NAT LOOPBACK..
也無法使用以下的這個方法進行LOOPBACK..

iptables -t nat -A PREROUTING -d x9.xxx.1x4.9x -m tcp -p tcp --dport 21 -j DNAT --to-destination 192.168.128.21
iptables -t nat -A POSTROUTING -d 192.168.128.21 -s 192.168.128.0/24 -j SNAT --to-source 192.168.128.254

這方法可以使內部CLIENT輸入 External IP 進入FTP時轉發到 192.168.128.21 ( FTP SERVER )
但LVS的DIRECTOR不是 192.168.128 內的 IP..

救求..
我研究了整整1星期了..

原本是架設 LVS / Direct Route .. 並建立 Virtual IP 的..
但沒辦法 ROUTE 這個 VIP 至 External IP ..

(當時的 VIP : 192.168.128.100)

已經試過了在每一部Real Server的 iptables 設置 :
iptables -t nat -A PREROUTING -p tcp -d 192.168.128.100 --dport 80 -j REDIRECT

再在NAT的這台SERVER設 :
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 59.148.184.98 --dport 80 -j DNAT --to 192.168.128.100:80

但也沒法連接..

結果暫時轉為架設 LVS/NAT ..
現在外面可以連進了. 但內部卻連不到..

如果有大大可以幫我解決使用 direct route 也可以令 external IP 連接的話,
小弟感激不盡..

另外現在最重要還是要令 LAN 中的 CLIENT 可以連到 external IP 的 director

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
wiseguy
iT邦超人 1 級 ‧ 2012-06-28 18:30:36

為什麼 FTP 可以,Web 卻不可以?那是因為 FTP 的 .21 是內部 IP,而 Web 的 .254 卻是 Gateway 本身,iptables 規則因而沒作用。

你可以隨便拿一台真實 Web server (比如 .111) 當成內部連線的目的 server,依照 FTP 的iptables 規則設定,應該就會通了。

看更多先前的回應...收起先前的回應...

=_=! 現在就是一定要連接 director IP ... 一定要經過 blancer 再進入 apache 經過 virtual 的處理再顯示..

一定要令 LAN 中的 CLIENT 也可使用 external IP 連接上去..

wiseguy iT邦超人 1 級 ‧ 2012-06-28 18:46:10 檢舉

這麼堅持啊?
內部網路使用,應該是小量吧?一定要通過 LVS 讓封包轉到最忙的 Gateway 再繞進來,老實說根本浪費頻寬跟 LVS 資源。
老闆會檢查內網來的 request 一定要通過 LVS 嗎?

不是.. 是PHP當中有通訊.. 而這個通訊一定要用到DOMAIN...
所以非常頭痛..

http://phorum.study-area.org/index.php/topic,67329.0.html
有一位大大說用DNS可以解決..
但我完全不清楚可解決的原理..= =!

wiseguy iT邦超人 1 級 ‧ 2012-06-29 22:38:29 檢舉

這更另我奇怪,有 php 應該更好解決才對,為什麼一定得是連外網 IP 才能 work?我不瞭解。

說用 DNS 可以解的方式,是比如外網用 http://somewhere.com 來連你的網站,外網 DNS 查到的是外網 IP。而內網就架一個 DNS 專門給內網用,當內網電腦連 http://somewhere.com 時,內網 DNS 回應的 IP 是內網 .254,這樣內網就可以連,而不用從外網 IP loopback 回來。

不過這得試過才知道是否可解。有可能還是會如我所說的,因為 .254 本身是 gateway 而不通。

不是, 是我採用了 ucenter 作會員中心, 所以一定需要從內網連到外網..

我要發表回答

立即登入回答