作者 主題: FTP-Passive模式無法運作於虛擬機器上  (閱讀 10935 次)

0 會員 與 1 訪客 正在閱讀本文。

RonLee

  • 可愛的小學生
  • *
  • 文章數: 25
    • 檢視個人資料
先說明網路架構如下:

代碼: [選擇]
Router
WAN IP: 59.1.1.1
LAN IP: 192.168.1.254

LAN
A主機: 192.168.1.1
X主機: 192.168.1.10(虛擬機器,建立在A主機裡面。Passive port: 30001~30010)
B主機: 192.168.1.2

遠端C主機: 61.61.61.61
我畫了一張簡單的架構圖,可參考一下:
http://www.wretch.cc/album/show.php?i=lamoni&b=1&f=1417643733&p=0

在LAN裡面的實體電腦上,我可以輕鬆架設FTP Server,讓客戶端以Passive模式連線。
但是架在虛擬機器裡的FTP Server則一直無法正常運作。

假設FTP Server架在實體電腦A主機上面,正常的流程是這樣:
1.遠端C主機向Server位址所在的Router要求FTP連線。
2.Router收到封包,轉發給A主機。
3.A主機回覆,可以連到我的192.168.1.1的30001 port。目的地為C主機。
4.封包出了Router後,變成"請連到wan ip 59.1.1.1的59507 port",目的地仍為C主機。
5.遠端C主機發出封包,連到Router的wan ip的59507 port
6.對應到A主機Lan ip的30001 port,連線建立。

現在虛擬機器(X主機)上的問題是,此流程到第5個步驟就沒了。
X主機沒有收到最後那個要求建立連線的封包。
我用WireShark封包擷取軟體,就是沒看到這個步驟的封包。

問題點?
1.FTP Server的軟體
試過zFTP、G6,情況一樣。而且在實體電腦上可正常運作,輕輕鬆鬆我就可以設定起來,唯獨虛擬機器上無法運作。
2.Router?
我也懷礙過為何Router發出的port不是我設定passive的位址範圍(30001~30010)。
因為如果是同一個LAN裡的B主機連到A主機,A主機會說請連到30001,然後B主機就連到30001。
而遠端C主機要連線時,A主機也是說請連到30001,但出了Router後卻變成請連到59507,
然後C主機收到後就連到Router的59507,再對應到Server的30001。
這樣的流程在實體電腦上是正常的,但在虛擬機器上,連線就停在Router那邊:
「虛擬機器X主機沒有收到遠端要求連線到59507 port的封包」
所以我懷礙是否Router的NAT功能出了問題。但因為實體電腦上可正常轉發封包,所以又無法確定。
3.VMware的問題???
X主機的網卡使用Bridge模式,作業系統為Windows 2003 Server R2。
既然是Bridge模式,所以可直接存取實體網卡。而且可正常連通Internet。

註1:虛擬機器上的防火牆沒開。
註2:遠端可用Port模式連到虛擬機器的FTP Server。只有Passive模式不行。

So...what's the problem?? Router? FTP Server的設定?Vmware?還是網路線被老鼠咬的不穩定???
請不吾賜教…感謝不盡…

« 上次編輯: 2009-04-08 21:59 由 RonLee »

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5396
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: FTP-Passive模式無法運作於虛擬機器上
« 回覆 #1 於: 2009-04-09 05:51 »
router 上頭的設定問題吧.
與 VM 有什麼關係呢? 如果認為是 VM 的問題, 是不是找一台機器設成 VM 的那個 IP, 就能正常使用呢?

RonLee

  • 可愛的小學生
  • *
  • 文章數: 25
    • 檢視個人資料
回覆: FTP-Passive模式無法運作於虛擬機器上
« 回覆 #2 於: 2009-04-09 22:00 »
「如果認為是 VM 的問題, 是不是找一台機器設成 VM 的那個 IP, 就能正常使用呢?」
請問一下,如果是VM的問題,跟IP設哪一個有關係嗎?
我還是試了一下,同一個IP,仍然是實體電腦可使用passive,虛擬機器不行。

至於是否是Router設定上的問題,我只能說,99.9%不會是。
因為Router的設定很簡單,只要設定wan ip的 21 port對應到lan ip的 21 port就好了。
那我會不會把對應的ip設錯?也不會。
因為虛擬機器的port模式是可正常運作的,遠端電腦可以用port模式連到虛擬機器上的FTP Server。
從這點就可以確定我的NAT並沒有設錯。

很傷腦筋,每一個地方看起來都應該沒問題。但虛擬機器上的FTP Server就是無法使用passive模式… =_=

不過雖然我剛說Router設定上應該沒問題,不過我倒是有懷礙,有沒有可能是Router本身軟體程式上的問題?
因為如前所述,最後要求建立資料接口的封包到了Router就停住了。

可是Router底下的實體電腦都正常啊,試了幾台裝FTP Server,都可以讓遠端電腦用passive模式連線。
所以…真的很頭大 =_="


slime

  • 區域板主
  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料
回覆: FTP-Passive模式無法運作於虛擬機器上
« 回覆 #3 於: 2009-04-09 22:52 »
依個人淺見, 會先朝這幾個方面試試看:

1. 重新檢查 X 的網路設定, 必要的話全部移除再重設看看.
(懷疑點: a. 如果 X 有多張網卡, X 不知道封包該往哪個網卡丟; b. 純粹打錯字或 subnet mask 設錯)

2. 檢查 router (2910)的設定, 直接指定 Virtual Server 為 X 看看.
(懷疑點: 看看有沒有設定鎖 Mac , 或者開通的 port 與預期不符)
冷笑話: 我的 IP 是 127.0.0.1

RonLee

  • 可愛的小學生
  • *
  • 文章數: 25
    • 檢視個人資料
回覆: FTP-Passive模式無法運作於虛擬機器上
« 回覆 #4 於: 2009-04-10 15:45 »
小弟今天終於發現問題了!  :o
問題仍然出在電腦主機上的防火牆,此時可以確定跟Router沒關了。

小弟之前說虛擬機器(X主機)上的防火牆沒開,沒提到主系統(A主機)。
因為小弟一直認為,虛擬機器上的網卡類型是Bridge模式,可以直接存取實體網卡,
而且虛擬機器的IP跟主系統是不同IP,理當不受主系統上的防火牆管制。
我一直以為,虛擬機器跟實體電腦可以看成兩個完全分開的獨立個體,只是存取同一張網卡而已。

但經過實驗,正是主系統(A主機,WindowsXP)上的卡巴斯基防火牆擋住了!!
把主系統(A主機,WindowsXP)上的卡巴關掉,
遠端C主機就可以連到虛擬機器(X主機,Windows2003)上的FTP Server,用Passive模式。

我原本在主系統的卡巴斯基防火牆設定裡,已開啟20,21 port跟passive模式會用到的範圍,
不過本機位址跟遠端位址都沒指定。
現在另外新增一條規則,開啟的埠號同上,但是本機位址設成虛擬機器的IP。
居然這樣就給我通了… …=_=
天啊  我都沒想到~~

這樣意思是不是說,如果主系統有裝卡巴,虛擬機器就不用另外裝防火牆了,
反正主系統的卡巴會管到虛擬機器??
是這樣嗎??





davihuan

  • 榮譽博士
  • 憂鬱的高中生
  • ***
  • 文章數: 96
    • 檢視個人資料
回覆: FTP-Passive模式無法運作於虛擬機器上
« 回覆 #5 於: 2009-04-10 21:51 »
有點這樣的感覺,我之前裝ZA,結果VM跟主機互通的Bridge就會被擋掉,我在VM上面裝P2P Client,
所以開P2P Client掛網的時候就要把ZA關掉,因為VM的Bridge也是在網卡上面加一個過濾器的服務做這些事情,
所以可能防火牆比較底層,就把VM的Bridge的行為擋掉了。