我正在开发一个VB.NET服务器应用程序,它允许客户端连接,与服务器交换一些数据,处理它们,最后给它们一个结果。为了达到这个目的,我使用了经典的TcpListener,如:
Dim server As TcpListener = New TcpListener(PORT)
server.Start()
等待挂起的TcpClient传入连接:
Do
If server.Pending() Then
'accept TcpClient connections
'get its Stream
'read from it
'do stuff
'write response
End If
Loop
这仅适用于服务器的公共IP。但是,如果我想将这项服务隐藏在另一项服务之后呢?我正在考虑使用Tor网络,但根据我迄今为止所学到的知识,我可以仅使用一些Web请求使其工作,但这不是我想要的。我不想使用HTTP协议,而是我自己开发的协议。
那么,有没有办法使用Tor来路由与Web请求不同的流量?
修改 我没有写过我不希望客户使用Tor连接到我的服务器。我的错。
答案 0 :(得分:1)
是的,这两件事都是可能的。
首先,您可以将Tor用于除HTTP之外的其他协议 - Tor用于HTTPS,聊天,IRC甚至种子(虽然不推荐使用后者)。它可以隧道传输任何TCP协议,因为它不会查看有效负载。
其次,您可以收听和接收Tor IP地址的请求,这称为“隐藏服务”。它的工作方式,您在Tor配置文件中设置隐藏的服务配置。它可能看起来像:
HiddenServiceDir /var/lib/tor/other_hidden_service/
HiddenServicePort 80 127.0.0.1:4567
HiddenServicePort指令在此处指定Tor隐藏服务将在端口80上“侦听”,并将任何成功连接重定向到127.0.0.1:4567 - 因此您可以在localhost,端口4567或任何其他端口上运行TcpListener,并且接收Tor通信。
编辑: Tor隐藏服务只能为Tor客户端提供服务。因此,您可以执行以下操作之一:
为您的服务设置“Tor转发器”,它将在公共IP上接收连接,并将其重定向到Tor隐藏服务。当然,这必须运行Tor,但您的用户不必这样做。
不使用Tor并设置一些透明的TCP端口重定向器;谷歌“TCP端口转发应用程序”。