我有以下设置
>在两个网关之间建立隧道的首选方法是什么?它们各自子网内的X个节点共享?使用linux route,OpenSSH,OpenVPN还是别的什么? @H_502_4@ – 更新 – @H_502_4@经过一番活动后,似乎我需要在不同的路由器之间建立一个Open-SSH隧道(用于加密).隧道将连接两个路由器的外部ips,我认为,如果设置正确,将允许我访问另一端路由器后面的节点. @H_502_4@还有其他事情发生在我身上,说我有以下设置:
2 x linode vps 1 x lab (physical) running 4 vps@H_502_4@我的目标是使所有节点的行为就像它们在同一个局域网上一样.这将允许我更改IPTable规则,仅允许本地流量,而不必为每个需要访问目标节点上的端口的服务器添加新的IPTable条目. @H_502_4@我做了一些初步的研究和测试,似乎无法找到我想要完成的最佳解决方案.在开始配置实际生产VPS之前,我一直在练习两个实验室VPS,它们驻留在不同的子网上. @H_502_4@实验室机器有两个物理网络; eth0和eth1. eth1被设置为向VPS提供虚拟网络的桥梁. @H_502_4@设置如下
service-a-1 (physical node): eth0: 192.168.0.1 eth1: br0 br0: 192.168.0.2 service-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.1 service-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@H_502_4@我使用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.然后,对于每个子网中的所有其他节点,使用已建立隧道的网关,因此我不必为任一子网上的每个节点创建新隧道. @H_502_4@为了测试我一直在使用的连接:ping -I 10.0.1.1 10.0.65.1,它应模拟subnet1上的node1和subnet2上的node1之间的通信. @H_502_4@我试图按照tutorial中的说明进行操作,因为它看起来非常简单,但在阅读其他帖子后,不确定它是否实际加密,因为模式设置为’gre’.但在阅读了有关使用OpenSSH的一些信息后,似乎需要为子网上的每个节点建立新连接,而不是在两个网关之间建立单个连接. @H_502_4@经过更多的搜索后,我遇到了linode提供的article看起来很有希望,但在前几段提到OpenSSH是首选的方法(通过OpenVPN)来完成我想要做的事情. @H_502_4@所以我的问题是两个部分: @H_502_4@>我的逻辑是否适用于尝试将子网彼此连接? (在网关之间建立隧道,然后将网关分配给子网上的每个节点)
>在两个网关之间建立隧道的首选方法是什么?它们各自子网内的X个节点共享?使用linux route,OpenSSH,OpenVPN还是别的什么? @H_502_4@ – 更新 – @H_502_4@经过一番活动后,似乎我需要在不同的路由器之间建立一个Open-SSH隧道(用于加密).隧道将连接两个路由器的外部ips,我认为,如果设置正确,将允许我访问另一端路由器后面的节点. @H_502_4@还有其他事情发生在我身上,说我有以下设置:
subnet-1: Office #1,San Diego,CA subnet-2: Colo #1,Dallas,TX subnet-3: Colo #1,Tokyo,Japan subnet-4: Colo #1,Sydney,Australia@H_502_4@在每个子网之间建立隧道,充当虚拟局域网是否有意义?正如我在原始问题中所提到的,我这样做是因为IPTables可以允许任何流量通过10.0.0.0/18,而不必针对需要从另一台服务器进行访问的每台服务器进行针孔iptables. @H_502_4@进一步退一步,如果在防火墙后面,在每台服务器上运行IPTables甚至是否有意义?也许在防火墙后面的所有服务器上停止IPTable会更容易.我认真对待安全性,即使在防火墙后面,在每个节点上运行IPTable似乎也是常识.但是,如果有人获得对节点的访问权限,那么理论上他们可以访问其他节点,就好像他们没有运行IPTables一样,因为10.0.0.0/18规则在每个服务器上都是针脚的. @H_502_4@ – 更新#2 – @H_502_4@所以我按以下方式配置了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.0 service-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@H_502_4@通过这种设置,我完全期望从service-a-1(10.0.0.1)ping service-a-3(10.0.64.1),但我一直得到“目标网络无法访问”.两个服务器上的IPTables都已关闭,但service-a-1位于防火墙后面,但它配置为允许所有出站流量.知道为什么我不能在两个子网之间ping,好像它是一个扁平的网络?
解决方法
您可以简化解决方案……
@H_502_4@如果您正在寻找一种方法来链接所有这些服务器(而不是路由器或网关设备),就好像它们位于一个扁平网络上一样,我建议您查看n2n peer-to-peer offering from ntop.
@H_502_4@该工具允许您遍历中间设备;如果您无法访问防火墙或具有复杂的路由问题,则会很有帮助.就我而言,我使用n2n从中心位置监控客户端系统.它比站点到站点VPN更清晰,我可以解决重叠的子网/ IP地址.想一想……
@H_502_4@编辑:
@H_502_4@我建议使用n2n_v2 fork和手工编译.
@H_502_4@n2n的示例配置如下所示:
@H_502_4@在超级节点上,您需要选择一个允许通过超级节点系统前面的防火墙的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@H_502_4@在客户端系统上,您有很多选择.您应该选择隧道设备名称,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@H_502_4@这些可以在前台运行以进行测试,但所有功能都在edge命令中.我通常会将其包装在Monit框架中,以确保流程保持稳定.