linux – 如何在多个子网之间配置安全连接

前端之家收集整理的这篇文章主要介绍了linux – 如何在多个子网之间配置安全连接前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下设置
2 x linode vps
1 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.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

我使用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,CA

subnet-2: Colo #1,Dallas,TX

subnet-3: Colo #1,Tokyo,Japan

subnet-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.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

通过这种设置,我完全期望从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框架中,以确保流程保持稳定.

原文链接:https://www.f2er.com/linux/399467.html

猜你在找的Linux相关文章