如何用Python或C++创建通用网络代理?
我有一个应用程序,它可以在局域网内进行通信。不过,我想让它能够通过互联网进行通信。为此,我打算做一个中间程序,这个程序会读取一台电脑上应用程序产生的网络流量,然后把这些流量发送到另一台电脑上的应用程序。
这个过程包括:
- 读取应用程序发出的网络流量
- 把这些流量的副本通过互联网发送到另一台电脑
- 把这个副本交给另一台电脑上的应用程序
我想要的效果是:
电脑A上的应用程序 <-局域网-> 电脑B上的应用程序
我想实现的是:
电脑A上的应用程序 <--> 电脑A上的我的程序 <-互联网-> 电脑B上的我的程序 <--> 电脑B上的应用程序
我能做到第二步,但在第一步和第三步上我遇到了问题,因为我对网络方面的经验很少,不知道从哪里开始。我会用Python编程,但也愿意用C++来完成这个任务。
(Hamachi对这个应用程序不起作用,我也不知道为什么。)
关于评论的回复
我不打算操控任何数据,除非为了让连接正常工作。对于这个应用程序,我没有控制权,也没有提供任何配置连接的方法,除了一个端口号。
TCP和UDP都使用6112这个端口。使用的IP地址首先是255.255.255.255,这是一个用于发现局域网内其他应用程序的广播地址(使用UDP),然后再建立TCP连接。
2 个回答
为什么要重新发明轮子呢?为什么不直接使用像OpenVPN、n2n或者vtun这样的工具呢?
你在最初的问题中缺少的一个术语是 proxy
,也就是“代理”。你具体需要的是 transparent forwarding proxy
,也就是“透明转发代理”。
这里有一个 Python源代码的链接,可以帮助你开始编写代理程序。
不过,如果你多搜索一下,应该能找到一个现成的 transparent forwarding proxy
,这样你就不需要自己写了。
如果你想用最稳妥的方法来实现这个功能,可以考虑使用硬件,设置一个管理路由器/交换机/防火墙,这样就能把数据路由到你需要的地方,而不需要写任何代码。