【问题标题】:Tunnel HTTP, HTTPS and DNS in C#C# 中的隧道 HTTP、HTTPS 和 DNS
【发布时间】:2012-10-28 02:02:10
【问题描述】:

我希望所有网络流量(HTTP、HTTPS 和 DNS - 还有其他流量吗?)通过本地应用程序进入服务器应用程序,然后从那里进入互联网。我该怎么做?

我编写了一个异步 TCP 服务器,并且我知道使用 SocketAsyncEventArgs 在 C# 中进行套接字异步编程(我不是只有一个项目的大师,但我想我可以理解一些基础知识)。

【问题讨论】:

    标签: c# sockets https dns tunnel


    【解决方案1】:

    这样做的唯一方法是编写一个 Windows 网络驱动程序 - 你不能从用户空间这样做。这就是 VPN 的工作原理。

    您可以使用用户级隧道开发单个连接的隧道,但它们要求用户先配置其应用程序才能使用它,因此您不能单方面重定向所有网络活动。

    根据您的问题,我猜您对 Winsock 内部结构或编写内核网络驱动程序不太熟悉,所以现在我要说的是,我认为这超出了您目前的能力水平。

    但是,如果您愿意采用一些不纯的方法,则可以轻松实现 SOCKS 代理,但这需要配置浏览器以使用您的代理服务器 - 至少这样您将通过隧道传输 HTTP 和 HTTPS,但是我不确定浏览器是否将 SOCKS 服务器用于 DNS,或者它们是否使用操作系统提供的 DNS 功能。

    【讨论】:

    • +1。尝试使用 Fiddler 来查看它提供的内容是否足够,如果它比您在 C# 中实现它相对容易,否则 - 正如 Dai 指出的那样 - 您需要在堆栈的更深层次上编写代码,而 C# 不太可能被接受在那里。
    • @Alexei Levenkov 谢谢,但 Fiddler 不是开源的,所以我可以从中学习。
    • @Dai 谢谢,但我没有在 C# 中找到开源 SOCKS 代理。 Firefox 可以配置为使用 SOCKS 作为 DNS。
    【解决方案2】:

    就像@Dai 建议的那样,使用SOCKS 代理。它在传输层之上运行,因此 SOCKS 服务器可以配置为服务于在典型 TCP/UDP 上运行的任何应用程序协议。

    这正是 TOR 屏蔽所有流量的作用,而不仅仅是 HTTP。

    【讨论】:

      猜你喜欢
      • 2018-04-03
      • 2022-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 2011-01-17
      相关资源
      最近更新 更多