2 x linode vps1 x lab (physical) running 4 vps
我的目标是使所有节点的行为就像它们在同一个局域网上一样.这将允许我更改IPtable规则,仅允许本地流量,而不必为每个需要访问目标节点上的端口的服务器添加新的IPtable条目.
我做了一些初步的研究和测试,似乎无法找到我想要完成的最佳解决方案.在开始配置实际生产VPS之前,我一直在练习两个实验室VPS,它们驻留在不同的子网上.
实验室机器有两个物理网络; eth0和eth1. eth1被设置为向VPS提供虚拟网络的桥梁.
设置如下
service-a-1 (physical node): eth0: 192.168.0.1 eth1: br0 br0: 192.168.0.2service-a-2 (vps): eth0: 192.168.0.3 eth0:0 10.0.0.1,255.255.192.0 eth0:1 10.0.1.1,255.255.192.0,gw 10.0.0.1service-a-3 (vps): eth0: 192.168.0.4 eth0:0 10.0.64.1,255.255.192.0 eth0:1 10.0.65.1,gw 10.0.64.1
我使用192.168.0.x ip addIEs连接到VPS,但10.0.x ip addIEs练习连接子网.我的上述设计的目标是通过其网关ips在service-a-2和service-a-3之间建立一个安全的隧道;分别为10.0.0.1和10.0.64.1.然后,对于每个子网中的所有其他节点,使用已建立隧道的网关,因此我不必为任一子网上的每个节点创建新隧道.
为了测试我一直在使用的连接:Ping -I 10.0.1.1 10.0.65.1,它应模拟subnet1上的node1和subnet2上的node1之间的通信.
我试图按照tutorial中的说明进行 *** 作,因为它看起来非常简单,但在阅读其他帖子后,不确定它是否实际加密,因为模式设置为’gre’.但在阅读了有关使用OpenSSH的一些信息后,似乎需要为子网上的每个节点建立新连接,而不是在两个网关之间建立单个连接.
经过更多的搜索后,我遇到了linode提供的article看起来很有希望,但在前几段提到OpenSSH是首选的方法(通过OpenVPN)来完成我想要做的事情.
所以我的问题是两个部分:
>我的逻辑是否适用于尝试将子网彼此连接? (在网关之间建立隧道,然后将网关分配给子网上的每个节点)
>在两个网关之间建立隧道的首选方法是什么?它们各自子网内的X个节点共享?使用linux route,OpenSSH,OpenVPN还是别的什么?
– 更新 –
经过一番活动后,似乎我需要在不同的路由器之间建立一个Open-SSH隧道(用于加密).隧道将连接两个路由器的外部ips,我认为,如果设置正确,将允许我访问另一端路由器后面的节点.
还有其他事情发生在我身上,说我有以下设置:
subnet-1: Office #1,San DIEgo,CAsubnet-2: Colo #1,Dallas,TXsubnet-3: Colo #1,Tokyo,Japansubnet-4: Colo #1,Sydney,Australia
在每个子网之间建立隧道,充当虚拟局域网是否有意义?正如我在原始问题中所提到的,我这样做是因为IPtables可以允许任何流量通过10.0.0.0/18,而不必针对需要从另一台服务器进行访问的每台服务器进行针孔iptables.
进一步退一步,如果在防火墙后面,在每台服务器上运行IPtables甚至是否有意义?也许在防火墙后面的所有服务器上停止IPtable会更容易.我认真对待安全性,即使在防火墙后面,在每个节点上运行IPtable似乎也是常识.但是,如果有人获得对节点的访问权限,那么理论上他们可以访问其他节点,就好像他们没有运行IPtables一样,因为10.0.0.0/18规则在每个服务器上都是针脚的.
– 更新#2 –
所以我按以下方式配置了n2n:
service-a-1 (behind router,but pinholed 55554 udp): IP config: ifcfg-eth0: inet addr:10.0.0.1 Bcast:10.0.63.255 Mask:255.255.192.0 HWaddr 00:1B:78:BB:91:5A n2n (edge) startup: edge -d n2n0 -c comm1 -k eme -u 99 -g 99 -m 00:1B:78:BB:91:5C -a 10.0.0.1 -l supernode1.example.com:55555 -p 55554 -s 255.255.192.0service-a-3 (linode vps): IP config: ifcfg-eth0: inet addr:4.2.2.2 Bcast:4.2.127.255 Mask:255.255.255.0 HWaddr F2:3C:91:DF:D4:08 ifcfg-eth0:0: inet addr:10.0.64.1 Bcast:10.0.127.255 Mask:255.255.192.0 HWaddr F2:3C:91:DF:D4:08 n2n (server) startup: supernode -l 55555 -v n2n (edge) startup: edge -d n2n0 -c comm1 -k eme -u 99 -g 99 -m F2:3C:91:DF:D4:08 -a 10.0.64.1 -l supernode1.example.com:55555 -p 55554 -s 255.255.192.0
通过这种设置,我完全期望从service-a-1(10.0.0.1)Ping service-a-3(10.0.64.1),但我一直得到“目标网络无法访问”.两个服务器上的IPtables都已关闭,但service-a-1位于防火墙后面,但它配置为允许所有出站流量.知道为什么我不能在两个子网之间Ping,好像它是一个扁平的网络?
解决方法 您可以简化解决方案……如果您正在寻找一种方法来链接所有这些服务器(而不是路由器或网关设备),就好像它们位于一个扁平网络上一样,我建议您查看n2n peer-to-peer offering from ntop.
该工具允许您遍历中间设备;如果您无法访问防火墙或具有复杂的路由问题,则会很有帮助.就我而言,我使用n2n从中心位置监控客户端系统.它比站点到站点VPN更清晰,我可以解决重叠的子网/ IP地址.想一想……
编辑:
我建议使用n2n_v2 fork和手工编译.
n2n的示例配置如下所示:
在超级节点上,您需要选择一个允许通过超级节点系统前面的防火墙的UDP端口.让我们说UDP端口7655,名称为edge.mdmarra.net:
# supernode -l 7655 -f -v # edge -d tun0 -m CE:84:4A:A7:A3:40 -c mdmarra -k key -a 10.254.10.1 -l edge.mdmarra.net:7655
在客户端系统上,您有很多选择.您应该选择隧道设备名称,MAC地址(可能),社区名称,密钥/密钥和IP地址以及超级节点的地址:端口.我倾向于使用更完整的命令字符串:
# edge -d tun0 -m CE:84:4A:A7:A3:52 -c mdmarra -k key -a 10.254.10.10 -l edge.mdmarra.net:7655
这些可以在前台运行以进行测试,但所有功能都在edge命令中.我通常会将其包装在Monit框架中,以确保流程保持稳定.
总结以上是内存溢出为你收集整理的linux – 如何在多个子网之间配置安全连接全部内容,希望文章能够帮你解决linux – 如何在多个子网之间配置安全连接所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)