【閒聊】兩台在 firewall 後面的 server 不能用 real ip 對連



贊助商連結


genjen
2004-03-11, 09:11 AM
大家好, 有件事我一直很想了解原理, 想請懂的網友教教我, 事情是這樣的, 我有兩台 server 在同一台防火牆後面, 兩台都各自有作真實IP對應, 因此外面的 Client 可以透過防火牆對裡面的 server 進行如 web、ftp等存取, 但是若要從 A server 連線到 B server, 卻一定要用虛擬IP 才能連得進, 例如:
A server IP: 10.0.0.1 / 139.175.0.1
B server IP: 10.0.0.2 / 139.175.0.2
從 A server 想 telnet 到 B server, 若打 telnet 139.175.0.2 會連不到, 打 telnet 10.0.0.2 就可以, 我是有大略聽說, 是因為 firewall 看到你的來源跟目的是同一個虛擬網段, 所以直接從虛擬IP的網卡丟回去, 於是便連不到, 可是這樣感覺還是很模糊, 不知道是否有哪位網友願意賜教, 說得更詳細一點, 封包是怎麼被處理以至於當兩台 server 都用同一個 firewall 當閘道時會有無法用真實IP對連的情形?

贊助商連結


Schnaufer
2004-03-11, 09:29 AM
  建議你內外設獨立的 DNS,而所有的連線都是透過 FQDN,這樣內部連線時會透過內部 DNS Server 解析到內部的 IP,而外部連線則是透過外部 DNS Server 解析到外部的 IP。當然如果內部的 User 把 TCP/IP 中的 DNS Server 設到外部,那也許會因為不同的防火牆產品而有不同的問題,不過我自己使用 ISA Server 在部分情況是 OK 的。

genjen
2004-03-11, 10:19 AM
最初由 Schnaufer 發表
  建議你內外設獨立的 DNS,而所有的連線都是透過 FQDN,這樣內部連線時會透過內部 DNS Server 解析到內部的 IP,而外部連線則是透過外部 DNS Server 解析到外部的 IP。當然如果內部的 User 把 TCP/IP 中的 DNS Server 設到外部,那也許會因為不同的防火牆產品而有不同的問題,不過我自己使用 ISA Server 在部分情況是 OK 的。

哇... S兄, 能否順便請教這些專有名詞?
FQDN、ISA Server是什麼啊?:confused:
另外, 您說的內外都設一台 DNS 我有作, 然後在防火牆內部的 PC 設定中(一般windows都可以打兩個 DNS Server IP), DNS 我第一個IP設定內部的 DNS server, 第二個IP則是設定外面的 seednet dns server, 不知道您指的是這樣嗎?
不過我最想知道的是純粹就 IP 來說, 為什麼封包這樣會無法傳遞到目的地...:confused:

SuperLight
2004-03-11, 10:54 AM
最初由 genjen 發表
不過我最想知道的是純粹就 IP 來說, 為什麼封包這樣會無法傳遞到目的地...:confused:

因為你用 mapping 來對應實體與虛擬IP,這類型的 rule 只會在區網內跑,

是出不了 firewall 外的,因此你在區網內用那兩台 Server 的對應實體IP

會沒有反應

為什麼不用虛擬IP?在區網內的反應快速的多,不需要為了用實體IP而增加

firewall 的負擔吧?(如果流通量很大)

畢竟出去再進來,比只在裡面跑複雜了點

FQDN:Fully-Qualified Domain Name (已註冊的網域名稱)
ISA Server: Internet Security and Acceleration Server (顧名思義;))

genjen
2004-03-11, 01:34 PM
最初由 SuperLight 發表
因為你用 mapping 來對應實體與虛擬IP,這類型的 rule 只會在區網內跑,是出不了 firewall 外的,因此你在區網內用那兩台 Server 的對應實體IP 會沒有反應 為什麼不用虛擬IP?在區網內的反應快速的多,不需要為了用實體IP而增加 firewall 的負擔吧?(如果流通量很大)
畢竟出去再進來,比只在裡面跑複雜了點
FQDN:Fully-Qualified Domain Name (已註冊的網域名稱)
ISA Server: Internet Security and Acceleration Server (顧名思義;))

:D 感謝 SuperLight 的回覆, 我比較了解了, 其實我也是用虛擬 ip 進去, 只是很好奇, 為什麼用 real ip 會不行..
我的 firewall 是用 ipchains 做的, mapping 的部分則是用 ipmasqadm 作, 我還有另一台 IP分享器, 用它當閘道的時候, 卻可以使用 real ip 存取被 mapping 的 server, 是不是有什麼方法可以做到?

SuperLight
2004-03-11, 02:09 PM
相關技術很多,你是用 Linux 作為 Gateway + Firewall,

對外有數個實體IP,使用一張網卡連接到數據機;對內使用另一張網卡

連接 Switch 組成區域網路,是嗎?

假設對外的網卡為 fxp0,對內的為 rl0

IP 的 mapping 是把 fxp0 上面設定的真實 IP 對應到 rl0 上面設定

的虛擬 IP,這段過程只限於這兩張網卡之間,由外而內才有效;而你在內部

要用實體 IP 去連線時,走的路徑只有 Switch --> rl0 對內網卡,根本沒有

跑到 mapping,所以無效......這樣應該比較好瞭解:)

至於為什麼用 IP Share 會可以用實體 IP,這就跟他的設計有關係了,

或許他在你設定 IP 對應之後,會自動修改 Routing Table,重新規劃

路徑.....其實這你也可以用 Linux 做到,只是要額外設定罷了

在 IP Share 上面你是設定 DMZ 嗎?還是普通的 mapping 而已?

genjen
2004-03-18, 04:24 PM
最初由 SuperLight 發表
相關技術很多,你是用 Linux 作為 Gateway + Firewall是嗎?
用實體 IP 去連線時,走的路徑只有 Switch --> rl0 對內網卡,根本沒有
跑到 mapping,所以無效......這樣應該比較好瞭解:)
在 IP Share 上面你是設定 DMZ 嗎?還是普通的 mapping 而已?

是的, 我的架構是如您所說的一樣, 謝謝您, 我終於了解了, 不過雖然 port mapping 沒辦法從裡到外, 但是 ping 的時候卻 ping 得到, 是否是因為在 Linux 裡設定了 ip_forward=1 這個東西的緣故?
我的 IP 分享器上面有兩種 mapping, 一個叫 Port Forwarding , 另一個叫 Vertual Server, 兩個差不多, 唯一不一樣的是 Port Forwarding 可以把對外的 port 導到內部你高興的任何一 port, 而 Vertual Server 則是 對外是 80 port, 導進來時也固定導到 80, 不能隨你高興把對外 8080 導到對內 80 port , 不過我不太喜歡他這個功能, 因為當有人從外面連進來的時候, 使用 netstat 看連線時, 只有顯示 IP 分享器的 IP, 不會顯示真正對方的 IP, 同樣的情形, 用 Linux 的 ipmasqadm 作則沒有這個問題.