2012-02-01 50 views
0

我有一個解決NAT穿越的新問題。 我正在部署一個C#應用程序,用於在發生事件時啓動FTP服務器。 問題是運行FTP服務器的機器在NAT /防火牆路由器後面,所以我無法通過任何連接到Internet的外部PC訪問它。 所以我想能夠從我的PC連接到FTP服務器,但端口形式不是一個選項。在沒有端口轉發的情況下連接到NAT和防火牆後面的FTP服務器

我讀過幾篇關於Hole punching,UPnP等的文章,但是我不能依靠UPnP,因爲我不知道路由器是否支持它。

我已經研究了NAT穿越的問題,在這一點上,解決此問題的唯一方法是從運行FTP服務器的計算機啓動連接(以其他方式它應該充當客戶端) NAT具有IP/PORT轉換的規則)。但是,我不認爲任何Windows FTP服務器都具有此功能。

由於我的遠程VPS服務器沒有佈置,我可以在任何端口轉發任何我想要的東西,我想通過VPS在客戶端和服務器之間創建隧道。

FTP服務器(啓動連接到) - > VPS --->客戶端(連接)

FTP服務器< --- VPS < ---客戶端(回覆)

但是我不知道是否有辦法解決我所解釋的問題,或者是否有一些簡單的方法來解決問題。任何幫助表示讚賞。

+0

爲什麼你在發生事件時啓動FTP服務器?您是否可以重新設計您的解決方案,讓您在事件發生時讓客戶端連接到另一個服務?我問這個問題的目的是希望更多地瞭解您正在嘗試解決的問題,並考慮解決問題的其他方法。 – 2012-02-01 16:09:36

+0

我需要訪問計算機上的文件和文件夾,並且通常使用FTP服務器來執行此操作。 我可以重新編碼事件處理,並在需要時啓動其他內容。你的解決方案是什麼? – CrAsHeR 2012-02-01 16:45:48

+0

而不是在NAT後面的機器上啓動FTP服務器,難道你不能構建一個解決方案,該機器與外部建立連接並且代碼將數據發送出去?或者你是否真的想完全訪問這臺機器,以便做更多的事情而不僅僅是獲取一些文件? – 2012-02-01 16:52:24

回答

0

簡單的解決方案是確保您的ftp服務器擁有一個公共IP地址並監聽傳入的FTP請求。

However i don't know if there's a way to do what i explained or if there's some easyer way to do that. Any help is appreciated. 

你用這個其他解決方案試圖做的事情是使用代理來調用的。它也類似於類似TURN的解決方案。如果配置正確並且具有公共IP地址,則一旦服務器與代理建立連接,代理就可以確保將流量轉發到您的服務器。

0

一個可能會被刪除的解決方案是向包含以下內容的服務器添加規則:您的應用程序名稱(或您使用的端口,我不建議這樣做)並允許執行操作。 僅供參考這不是編程解決方案,但它是一個網絡解決方案。

相關問題