我有很多远程服务器,它们通过 GRE 隧道连接到单个中央服务器。隧道流量仅从远程服务器到中央服务器。
因此,对于 50 个远程服务器,我的中央服务器上通常有 50 个 GRE 隧道,在隧道设置中指定相应的远程服务器 IP 地址:
ip tunnel add greXX mode gre remote <remote-IP-XX> local <local-IP> ttl 255
我想知道是否可以使用单个 GRE 隧道接口来接收来自所有远程服务器的流量,并尝试指定0.0.0.0
为远程 IP 地址:
ip tunnel add greXX mode gre remote 0.0.0.0 local <local-IP> ttl 255
坦率地说,它确实有效,但我还没有找到任何有关此功能的文档。
因此,使用这个黑客是否安全,或者是否有任何我尚未发现的限制?
是的。在各种情况下,这是需要的,例如,这就是 Cisco DMVPN 的工作原理。
这通常称为mGRE(多点 GRE)。
您还需要
ip neigh add
在 Linux 上使用 openNHRP 手动或自动添加对等点(如果我没记错的话,它会创建与 DMVPN 第 2 阶段兼容的 VPN)。否则沟通将无法进行。设置示例
节点1:
节点2:
节点3:
等等。
注意事项:
ip neigh
命令添加邻居,“lladdr”代表链路级地址,因此它将对等网络级地址映射到链路级地址。对于基于以太网的 IPv4,对等地址是 IPv4,而“lladdr”将是 MAC 地址,最终将得到无 ARP 的静态以太网。ARP 使这个过程自动化。对于在 IPv4 上运行 IPv4 的 GRE,对等地址和“链路级”(较低 OSI 层)地址恰好都是 IPv4。NHRP是一种下一跳解析协议,是一种互联网协议,在此设置中充当 ARP 协议的角色。最后的话
不要试图通过消除加密和身份验证来获得“效率”,即使您认为“对于您的应用程序来说这完全没问题”。这迟早会以你现在意想不到的最恶劣的方式反击。如今加密如此便宜,因此收益并不明显(我前几天测量过;不是很快的系统能够加密 12 GB/s,足以使 100 GB 链路饱和)。您应该使用 IPSec 保护它;这也将给您带来允许某些节点存在于 NAT 后面的好处(它将利用 IPSec 的 NAT-T 封装,但为此您需要实现 openNHRP)。
虽然我上面建议的建立多点隧道的方法是可行的,但在 Linux 中设置比使用Tinc或WireGuard更麻烦,后者更容易构建类似的全网状 VPN。仅将 mGRE 用于 openNHRP(Cisco DMVPN 互操作性)是合理的。