先說明網路架構如下:
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?還是網路線被老鼠咬的不穩定???
請不吾賜教…感謝不盡…