在不知道本地程序的情况下,通过不同的路线隧道化端口

我需要build立以下scheme:

  • server1:通用程序在本地连接到代理,然后代理连接到server2。
  • 一切都好,直到服务器之间的连接。
  • 当连接closures或发生其他一些事件(例如丢包,多次重传等等)时,事情将不起作用,我们需要做以下工作:

    1. server1使用相同的代理程序将当前连接“重新路由”到第三个服务器(server3)
    2. server3连接到server2是好的,
    3. 因此本地通用程序不会重新连接,甚至不关心连接问题。
    4. 分别在另一端(在服务器2上)的本地通用程序也不知道有另一个路由。

大概可以用haproxy和openvpn来模拟,但openvpn connect对于快速交换机来说太慢了,而且对于一个服务(比如说tcp端口)来说设置太复杂了。

[ – 就像一个端口的隧道 – ],并且server1上的本地客户端程序不需要重新连接(或build立一个新的连接)到server2上的服务器程序,当server1和server2

任何人都可以告诉我在Linux下这样的tcp-proxy-reroute程序?

编辑:我不是说我需要保存tcp会话左右。

我需要像haproxy(工作在第7层),

  • 当client_prog_1_srv_1连接本地主机haproxy_1_srv_1时,

  • haproxy_1_srv_1将(Internet)连接到haproxy_2_srv_2,

  • haproxy_2_srv_2连接到server_prog_2_srv_2(也在本地绑定和连接),
  • 但是当haproxy_1_srv_1和haproxy_2_srv_2之间没有连接时,

    • haproxy_1_srv_1连接到haproxy_3_srv_3,
    • 它连接到haproxy_2_srv_2并重新使用haproxy_2_srv_2和server_prog_2_srv_2之间打开的连接。
    • haproxes之间的连接是通过互联网,到最终程序(客户端,服务器)的连接始终是本地的。

如果外出IP在服务器2和3上不同,则不可能使用TCP构build这样的代理。

如果您控制了路由,并且可以使用路由度量标准,OSPF或类似的方法在不涉及NAT的情况下自动路由错误连接的数据包,则可能是可能的。 如果涉及到NAT,则可能不太复杂的解决scheme,例如,教您的客户重新连接错误。

如果真的必须这样devise,你可以使用任意播或故障转移来允许服务器2和3具有相同的外出IP,但是没有更多的细节,你的用例并不像你想要的那样有这个能力。

这是关于任意或通用的Linux程序的事情…他们没有字符[istics] …

您希望应用程序级别[第7层]networking,而是通用程序/协议。 http://tools.ietf.org/html/rfc3768(RFC 3768 –

加上LVS,突然你回来了,基本上坐在HAProxy上。 为了在第七层做到这一点,你将不得不编写自己的包装服务器来:

  1. 接受前端的所有连接
  2. 监视后端可用服务器/路由的列表
  3. 直接通过活动的服务器/路由的stream量

你的问题是复杂的…但是我相信那是因为你做了很多的假设。 一个VPN可能是一个很好的方法使这个复杂化,你永远不会得到它的工作。 如果你正确地告诉我们你需要做什么,我们可能会帮助你正确的方向。

它可以通过以下设置完成:

  1. 在两台边缘服务器上使用openvpn + haproxy(在TCP模式下)使用专用networking,而在中间服务器上只使用haproxies。
  2. 每个openvpn在本地连接到haproxy,configuration为:“一个普通服务器和一个备份服务器”,haproxy检查是否应该使用哪个服务器。
  3. 检查显示haproxy必须使用备份,所以haproxy将连接切换到中间服务器。 连接被拆除。
  4. 一个立即openvpn重新连接发生 – 但是这次tcp连接将被“路由”从边haproxy->备份链接到中间haproxy,而这又代理到第二个边haproxy,与第二个边openvpn到达了。 注意openvpn不知道沿途有三个haproxies。
  5. 另一方面的私人地址暂时不可用,所以在build立的双方应用程序的连接之间出现超时。
  6. openvpn重新build立连接,私有networking重新启动,所有的私有地址都可用,双方的应用程序都可以从超时恢复。
  7. 双方的第7层应用程序都没有重新连接。 丢失了一些数据包,这会触发隧道networking上的一些重传,但最终一切正常。

你有没有使用过VPN? 你连接你的计算机到VPN服务器,然后你在你的企业专用networking,然后你使用SSH到你的工作电脑,如果互联网连接下降一分钟,VPN尝试重新连接,但SSH是在超时重新发送期。 互联网连接是在一分钟后,vpn再次build立隧道,ssh继续,不需要重新连接(最终重发成功,超时发生之前)。 这是我需要的效果,但隧道必须通过中间服务器,因为它有一个更好的连接。 如果所有的tcpstream量都是由haproxies互相通话的话就可以完成。 但我认为这个设置非常复杂,openvpn(或隧道)重新连接速度慢。 注意haproxy是这个应用程序 – http://haproxy.1wt.eu/ ,它有一个tcp模式 – 和http代理的function非常相似。