【问题标题】:Use C# on a client to redirect TCP requests在客户端上使用 C# 重定向 TCP 请求
【发布时间】:2020-10-01 18:24:47
【问题描述】:

我有一个企业案例,其中工作站可能会将 TCP 请求发送到多个已知目的地。例如:host1.domain.local:1234host2.domain.local:1234。我需要在工作站上安装一个 .NET 客户端,该客户端在运行时会将这些目的地的流量重定向到其他端点。例如:myProxyHost1.domain.local:1234myProxyHost2.domain.local:1234。我们正在考虑编辑 hosts 文件,但这感觉很笨拙,并且如果我们的客户端崩溃,可能会使系统处于肮脏状态。我们宁愿让我们的客户端监听这些端口并适当地重定向任何 TCP 流量。鉴于存在像 Fiddler 这样的产品,我希望这是可能的。如何在 C# 中重定向这样的流量?

【问题讨论】:

  • Fiddler 重定向 TCP 流量...它只是一个 HTTP 代理,需要 10 行代码开始(实际上还剩下数千行Fiddler 中的代码行数是它有用的原因,但普通的 HTTP 代理本身并没有太多代码)。
  • TCP和IP不知道域名,在应用层。
  • 您需要一个双端口应用程序,它侦听一个 TCP 端口并转发到第二个 TCP 连接。应用程序打开侦听器的第一个端口。应用程序的第二个端口是连接到其他主机的客户端。

标签: c# .net networking tcp


【解决方案1】:

如果开发 .NET 客户端不是主要标准,您可以检查是否使用 Web 服务器作为 TCP 负载平衡器。它不是您所要求的 .NET 客户端,但它可能会解决问题。

查看 Nginx 文档,看看它是否符合您的要求:https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

您可以使用代理传递指令,文档中的一个示例:

stream {

   server {
       listen     12346;
       #TCP traffic will be forwarded to the specified server
       proxy_pass backend.example.com:12346;
   }

   # ...

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2012-07-27
    • 2011-09-17
    • 2019-12-21
    相关资源
    最近更新 更多