我正在研究各种隧道技术,并且对一些基础知识有很好的理解。在站点到站点 VPN 中,边缘路由器可能看起来只有一跳。我还读到可以使它看起来像一个平面网络,即所有东西都在同一个 LAN 上。这是我缺少的部分,有人可以帮助我了解这是怎么可能的吗?
隧道查询
我还读到可以使它看起来像一个平面网络,即所有东西都在同一个 LAN 上。这是我缺少的部分,有人可以帮助我了解这是怎么可能的吗?
一些隧道技术提供以太网 IP 服务。例如,研究这些主题:
- L2TPv3
- EoMPLS
- 虚拟局域网
- EtherIP (RFC3378)
- GRE以太网
- Cisco OTV(覆盖传输虚拟化)
是的,这是可能的,埃弗顿为您提供了一些可以帮助您做到这一点的功能,但是......
……请不要这样做!
我知道在两个(或更多)远程站点上的单个 LAN 对机器迁移(它可以保持相同的 IP)或自动发现协议似乎很好,但是通过桥接两个远程 LAN,您会创建一个单一的故障域。
通过桥接远程 LAN,您将转发每个广播、每个多播、每个广播风暴、每个糟糕的多播数据包,这些数据包会在某些主机上的 oh-so-bugged 多播堆栈上触发一些错误......即使对于合法广播也是糟糕的,因为在被 99% 的房东认为无关紧要之前,所有这些都必须由每个人处理。这会花费 CPU。局域网不缩放!!(提示:“L”代表“本地”:))
有关更详细的解释,请参阅Ivan Pepelnjak 的博客文章。
如果您需要移动主机而不必更改其 IP 地址,请考虑使用一种机制,其中主机(或其管理程序,如果适用)向您的路由器通告 /32 路由。例如,Calico使用 BGP 来做到这一点。
使事物“出现在同一 LAN 上”的主要因素是一种或另一种类型的广播消息(取决于 LAN 的类型以及我们所说的“出现在”上的确切含义)。具体来说,在以太网的情况下(例如),所有可以接收和响应数据链路层广播消息(例如,ARP)的节点都将出现在本地 LAN(更恰当地说,相同的广播域)上。
为了营造节点在本地 LAN 上的错觉,设备或服务所要做的就是处理链路层广播消息和响应的双向传输。因此,通过 VPN 连接使用接受、封装和解封装所有广播和响应的设备加入的两个广播域将有效地成为一个广播域。
当然,网络层寻址必须相应地安排。
有几种方法可以做到。
一种简单的方法是建立一个虚拟以太网链接。VPN 软件在两端创建一个虚拟以太网接口并在它们之间转发帧。然后,您可以使用桥接将虚拟以太网接口连接到真实接口。我已经使用 vtun 和 openvpn 成功地做到了这一点。我更喜欢 openvpn,因为它具有内置的桥接功能,允许一个 openvpn 实例为多个客户端提供服务。专业网络世界也有类似的独奏,但我没有个人经验。
这种方法的好处是几乎所有在 LAN 上工作的东西(除非它对延迟非常敏感)都可以正常工作。广播到达他们需要去的地方,主机可以从一个站点无缝移动到另一个站点,而无需更改其地址。
这种方法的缺点是开销可能相对较高。首先,来自额外标头的数据包大小的增长意味着来自您 LAN 的全尺寸数据包将不适合正常的 Internet MTU。因此,要么它们必须以某种方式碎片化,要么您运行隧道的网络需要支持巨型帧。其次,一堆毫无意义的广播喋喋不休最终会进入隧道。第三,将本地流量保持在本地并避免三角形路由可能很困难。
也有一些更高级的系统可以模拟以太网的某些方面,同时试图避免上述一些问题,但我对它们没有个人经验。