【发布时间】:2012-10-28 02:02:10
【问题描述】:
我希望所有网络流量(HTTP、HTTPS 和 DNS - 还有其他流量吗?)通过本地应用程序进入服务器应用程序,然后从那里进入互联网。我该怎么做?
我编写了一个异步 TCP 服务器,并且我知道使用 SocketAsyncEventArgs 在 C# 中进行套接字异步编程(我不是只有一个项目的大师,但我想我可以理解一些基础知识)。
【问题讨论】:
标签: c# sockets https dns tunnel
我希望所有网络流量(HTTP、HTTPS 和 DNS - 还有其他流量吗?)通过本地应用程序进入服务器应用程序,然后从那里进入互联网。我该怎么做?
我编写了一个异步 TCP 服务器,并且我知道使用 SocketAsyncEventArgs 在 C# 中进行套接字异步编程(我不是只有一个项目的大师,但我想我可以理解一些基础知识)。
【问题讨论】:
标签: c# sockets https dns tunnel
这样做的唯一方法是编写一个 Windows 网络驱动程序 - 你不能从用户空间这样做。这就是 VPN 的工作原理。
您可以使用用户级隧道开发单个连接的隧道,但它们要求用户先配置其应用程序才能使用它,因此您不能单方面重定向所有网络活动。
根据您的问题,我猜您对 Winsock 内部结构或编写内核网络驱动程序不太熟悉,所以现在我要说的是,我认为这超出了您目前的能力水平。
但是,如果您愿意采用一些不纯的方法,则可以轻松实现 SOCKS 代理,但这需要配置浏览器以使用您的代理服务器 - 至少这样您将通过隧道传输 HTTP 和 HTTPS,但是我不确定浏览器是否将 SOCKS 服务器用于 DNS,或者它们是否使用操作系统提供的 DNS 功能。
【讨论】:
就像@Dai 建议的那样,使用SOCKS 代理。它在传输层之上运行,因此 SOCKS 服务器可以配置为服务于在典型 TCP/UDP 上运行的任何应用程序协议。
这正是 TOR 屏蔽所有流量的作用,而不仅仅是 HTTP。
【讨论】: