我正在运行遗留的应用程序,我无法访问源代码。 这些组件在特定端口上使用明文进行对话。 我希望能够使用诸如stunnel之类的东西来保证两个或更多节点之间的通信,以促进对等通信,而不是使用像OpenVPN这样更传统的(和集中式的)VPN包等。
理想情况下,交通stream量将如下所示:
实质上,我试图将其设置到任何出站stream量(在本地机器上生成)到N端口通过通道转发到端口N + 1,并且接收端在端口N + 1上接收,解密并转发到港口N的本地应用程序
当stunnel @ hostB转发到app @ hostB时,我并不特别担心丢失hostA的源IP地址/机器标识,因为通信负载包含标识信息。
另一个窍门就是通常情况下,你有一个客户/服务器体系结构。 但是这个应用程序比P2P要多得多,因为节点可以dynamic地来回移动,在stunnelconfiguration中硬编码某种“connection = hostN:port”将不起作用。
编辑:另一种可能性可能是configuration某种types的默认路由,使得到端口N的出站stream量通过configuration为网关的stunnel转发。
我认为iptables在这里似乎有些多余。
appA是hostA上的应用程序实例(外部IP AAAA)appB是hostB上的应用程序实例(外部IP BBBB)
hostA上的stunnelconfiguration为将encryption的连接从AAAA:1234转发到127.0.0.1:1234
[的appA]
accept = AAAA:1234
连接= 127.0.0.1:1234
client = no
hostB上的stunnelconfiguration为创buildencryption隧道,并将127.0.0.1:4321转发到AAAA:1234
/ usr / bin / stunnel -d 127.0.0.1:4321 -r AAAA:1234
appB与127.0.0.1:4321build立连接
反之则hostB