我有我的个人VPN,连接几个设备,使他们可以在一个永远可达的networking(只要他们连接到互联网)有固定的IP地址。 这对我来说是必要的,因为我的设备可以在移动中,在不同的和不可预知的networking上(4Gnetworking手机,大学的笔记本电脑,家庭服务器),我有一个需要连接到他们的备份服务器(有时,我也必须)。
我也在考虑安装类似syncthing的东西,这也可能从较低的延迟和更近的节点中受益。
另外,我很懒,我喜欢用我的智能手机播放/暂停在家用服务器上播放的音乐,这可能不在同一个networking上(应该,但并非总是如此)。
这意味着我有一个OpenVPN服务器,并在每个设备上运行openvpn客户端。 它们都连接到服务器,任何来自任何两个节点的stream量都必须通过相对较远的服务器,吞吐量非常有限。 这意味着延迟和缓慢。 而当我按下“暂停”button时,最多可能需要10秒才能暂停音乐。 即使两个节点实际在同一个局域网(因为他们通过VPN通话)。 咩。
理想情况下,应该有一些方法可以创build一个能够find节点之间最短path的VPN,并尝试直接连接它们。 像Skype与超节点一起工作的方式?
当服务器离这里很远的时候,其中一个节点有一个公共IP地址,可以被其他节点访问。 它可以充当服务器 – 即使它不是服务器本身,尽pipe它对于某些节点来说是更好的select。
我想我可以做类似的事情来运行一个客户端和一个服务器,并将它们桥接在该节点上,但是这看起来并不优雅。 这是黑客,它使PKI复杂化,它分裂了VPN。 我不喜欢它。
虽然我可以使用像PPTP这样的简单VPN,但确实不能保证通信的安全性,但是我决定不想打扰configurationBacula来encryption节点之间的连接,这意味着stream量在VPN内是平常的。 VPN封装是唯一的安全性,所以它不应该弱。 然而,没有保密性的任何解决“网状”VPN的事情已经是一个好的开始 – 我会确保stream量开始通过SSL / TLS。
这看起来像别人可能有的问题,现在就解决了。 有没有这样的事情?
我也有机会以这种错误的方式看待这个问题,但到目前为止,看起来像确保我总是可以远程连接到任何设备的最佳方法,不pipe我在哪里,或者他们在哪里。
我不确定它是否完全满足您的需求,但您应该看看tinc: http ://www.tinc-vpn.org/。 它与您描述的中央服务器编排的网状networking非常接近,但是我不确定它是否能够成功发现本地networking中的对等点。
我发现和使用的最简单的网格VPN是PeerVPN( http://www.peervpn.net/ )。
PeerVPNfunction
configuration是简单的..一个configuration文件,你编辑和基本的网状vpn只有6个设置,你需要指定看到只有1页的PeerVPN教程: http ://www.peervpn.net/tutorial/
PSKencryption/authentication密钥可以达到512位(64字节)。
我已经在多个远程服务器上设置了peervpn,并且工作得很好。 另外,没有像在其他网状vpn实现中可能遇到的“超节点”的要求。
peervpn中的节点可以自动了解新添加的VPN节点,而无需更改configuration。 节点到节点的stream量也是直接的,而不是通过一些中央vpn集线器。
注意:读取默认的peervpn.conf文件以了解其他“你可以”利用的选项。 但对于我所说的基本网状vpn,你只需要设置6个选项(VPN名称,PSK,本地隧道端点IP地址,接口“名称”你想看到/使用您的Linux系统和端口号用于“那”vpn …注意你可以使用peervpn在服务器上的多个独立的VPN)
几年前我也有同样的问题。 我有大约30个办公室,都需要能够直接沟通,但是他们是以“hub-and-spoke”configurationbuild立的。 我用Python编写了一个工具,在办公室之间自动生成OpenVPN中的nx (n-1)/2个连接数。 后来,我在一个奇怪的Comcast问题之后join了对站点之间的RIP路由的支持,其中一个办公室可以看到所有其他办公室,而不是主办公室。 最后,我添加了为链接IP自动生成反向DNS的function以及将软件包推送到每个路由器的function。
看看OpenMesher 。 就在今天上午,我决定为即将到来的项目把它擦掉。 希望它做你想要的。 如果没有,请随时提交问题,我会帮助。