2009-10-26 94 views
2

我對至少試圖爲我的高級項目實施NAT突破非常感興趣。 (我正在做一個網絡API)。 這甚至不是我的項目的要求,只是我的興趣。 我知道它是如何工作的基礎知識,如果我錯了,請糾正我: 兩個客戶端連接到一個不在NAT後面的服務器,並且知道這兩個客戶端的IP,告訴客戶端連接到彼此在同一時間。因此「突破」。測試NAT突破代碼

這似乎不是非常容易或非常難以編碼。 但是,我堅持的部分是對此的測試。我能用一臺路由器/一臺NAT和三臺可用電腦進行合理設置嗎?

感謝您的任何建議!

+0

我很想聽聽你瞭解這個anyhting。 – Nate 2009-10-28 18:45:59

+0

如果/當我這樣做時,我會盡力記得回到這裏。 :) – bobber205 2009-10-28 23:43:14

回答

1

在NAT破解的代碼/理論方面,我無法提供建議,但我可以對建立測試環境提出一些建議。

您可以下載m0n0wall的副本,並在虛擬PC映像(都是免費的)中運行它。這會給你第二臺路由器無法購買任何額外的硬件。有了這個額外的路由器,您可以爲您的兩個客戶端創建一個單獨的子網。

另一個更容易掌握的選項是簡單地拾取第二個路由器,你可以得到一個很好的一個很便宜。

然後像現在這樣設置現有的路由器和服務器,即192.168.1.x/24子網;然後將第二臺路由器(m0n0wall /硬件路由器)設置爲192.168.2.x/24子網,並將第二臺路由器的「互聯網」端口插入第一臺路由器的「PC」端口之一。然後將兩個客戶端插入第二個路由器。

(我知道那是有點混亂,評論,如果你不能按照我的意思)

1

讓我看看我是否有這樣的筆直。你有兩個都在NAT後面的客戶端和一個不是的服務器。兩個客戶端都連接到服務器,並通知其他公共IP地址。由於每個目標都有一個目的地,因此它們與服務器斷開連接並直接通過各自的NAT盒互相連接。這是你的想法嗎?如果是這樣,我可能會給你一些壞消息。

爲了完全起作用,您必須在每個NAT配置中設置專用端口,以將至少一個外部端口轉發到預定義的內部IP地址/端口號。在通用的NAT設置中,傳出連接請求將被NAT捕獲,這將打開一個臨時的外部端口。該外部端口號僅用於與該一個始發地址和端口的通信。當連接關閉時,該外部端口將消失,稍後將重新分配給其他連接。因此,如果兩個客戶端都與服務器通話並斷開連接,則服務器發送的信息現在無效。

假設你已經以某種方式解決了這個問題,將兩個客戶端連接到NAT的「內部」一側並將服務器PC連接到「外部」一側應該相當容易。然後你必須希望你的NAT盒子足夠聰明,可以將數據包從一個本地外部端口循環回另一個。我確信netfiler可以這種方式進行配置,但我懷疑家庭互聯網「路由器」(例如,Linksys,NetGear等)會這樣做。

+0

感謝您的信息。我知道在同一個局域網上可能會遇到很多障礙。我可能會嘗試繼續這樣做,但是用我的資源,我可能不會向我的教授做出任何承諾吧? – bobber205 2009-10-26 23:26:41