2012-11-07 62 views
1

我想要所有的網絡流量(HTTP,HTTPS和DNS - 有沒有其他人?)通過本地應用程序並轉到服務器應用程序,並從那裏進入互聯網。我怎樣才能做到這一點?我已經寫了一個異步TCP服務器,我知道使用SocketAsyncEventArgs在C#中的套接字異步編程(我不只是一個項目的主人,但我認爲我可以理解一些基本知識)。C#中的隧道HTTP,HTTPS和DNS#

回答

1

要做到這一點的唯一方法是編寫一個Windows網絡驅動程序 - 你不能從userland做到這一點。這就是VPN的工作原理。

有些用戶級隧道可以開發隧道連接,但它們需要用戶配置其應用程序以便首先使用它,因此您不能單方面重定向所有網絡活動。

從你的問題來看,我猜你對Winsock內部組件或編寫內核網絡驅動程序不太熟悉,所以現在我要說,我認爲這是一種高於你現在的能力水平。

但是,如果您將採取一些不純的方法,您可以很容易地實現SOCKS代理,但這需要配置瀏覽器來使用您的代理服務器 - 至少通過這種方式您可以隧道HTTP和HTTPS,但是我不確定瀏覽器是否使用SOCKS服務器進行DNS,或者他們使用操作系統提供的DNS功能。

+0

+1。嘗試使用Fiddler來查看它提供的是否足夠,如果它比在C#中相對容易實現它,否則 - 正如Dai指出的那樣 - 您需要在堆棧的更深層上使用代碼,並且C#不太可能被接受那裏。 –

+0

@Alexei Levenkov謝謝,但Fiddler不是開源的,所以我可以從中學習。 –

+0

@戴謝謝,但我沒有在C#中找到一個開源的SOCKS代理。 Firefox可以配置爲使用DNS的SOCKS。 –

0

像@戴建議,使用SOCKS代理。它在以上運行傳輸層,因此SOCKS服務器可以配置爲服務在典型的TCP/UDP上運行的任何應用協議。

這正是TOR所做的掩蓋所有流量,而不僅僅是HTTP。