如何使用MikroTik路由器设置encryption的L2隧道?

我想实现什么

我想安全地将现有的内部子网分布在多个build筑物上。 这意味着我有两个虚拟机位置需要在同一个子网内。 这个想法是,虚拟机(具有静态IP)可以从一个位置迁移到另一个位置。

(物理)主机连接到每个位置的交换机。 所以,如果没有任何安全或成本问题,我只需要用网线连接两台交换机:

[机器] — [开关A] <—-长电缆—> [开关B] — [机器]

我想要的是用一个encryption隧道replace这个长的电缆,使用两个不需要关心IP地址或路由的网关,只需要将任何传入的数据包encryption,并通过encryption的隧道发送到另一个网关。 另一个网关然后解密这些数据包并将它们发送到远程交换机。 这实际上是这样的:

[机器] — [开关A] — [网关A] < – 互联网 – > [网关B] – [开关B] — [机器]

我想避免网关在子网内需要任何IP地址。 规则应完全基于端口:

  • 端口1的入站数据:通过隧道接口路由
  • 隧道接口input数据:通过端口1路由

两个网关将有一个静态的,可路由的IP地址来build立隧道。 encryption应该是强的(至lessAES128,SHA256,DH2048;共享密钥是好的),简单的PPP型隧道不支持。 所以可能需要一个额外的/单独的encryption层。

我只有MikroTik路由器可用。 所以我宁愿使用它们。 不过,我主要是在寻找“魔术字”(协议名称等)以及正确的技术组合,使我能够做到这一点。 因此,如果您知道如何使用Cisco路由器或HP路由器来完成此任务,那么如果您解释了如何使用该路由器,也可能有所帮助。

问题/尝试

我可以用什么样的防火墙filter和协议来达到这个目的?

我的第一个想法是使用IPsec跨越encryption隧道。 但是,那么我需要定义基于物理端口的IPsec策略。 但只有一个选项可以将数据定义到特定的IP地址/ IP端口组合。

所以IPsec只能作为另一种隧道types(PPTP,SSTP,L2TP和OVPN目前由MikroTik RouterOS支持)的encryption层工作。 由于PPP-Tunnels通常不支持强encryption,因此我会让IPsec完成这项工作,并通过encryption的IPsec隧道跨越未encryption的PPP-Tunnel。

好的,现在我们至less有一些隧道接口,我们可以像传出端口一样使用。 不过,我有点迷失在这里。 我没有发现这样的可能性:“一个帧必须通过接口发送”和“一个帧必须通过接口发送”。

我不是经常在Layer2工作…所以我实际上是在寻找正确的“术语”或“类别”。 我可以想象在IP防火墙(mangle-> prerouting)或类似的东西上find它,但我认为这已经是第三层的东西了…

我只需要设置一个桥梁? 如果是这样的话,我怎样才能将隧道接口添加到桥(最好使用winbox接口)? 桥是否需要MAC地址?

以防万一这个尝试是死路一条:我也在“接口”设置中find了“EoIP”,“IP Tunnel”和“GRE Tunnel”。 但是我不知道他们能做什么……所以为了以防万一,让我知道他们中哪些是值得研究的…

另外,如果有一个更简单的解决scheme,不要介意告诉我你的解决scheme…如果只是一个更简单的方法,你不必继续我的上述尝试!

您可以使用网桥,EoIP隧道和IPsec的组合来实现您的要求。

首先在两侧创buildEoIP隧道,以便两台路由器可以互相通话。
EoIP是一个MikroTik专有隧道,其工作原理与GRE原型47非常相似。
它可以转发整个以太网帧,而不仅仅是IP(例如IPIP或TAP接口),使其成为通过L3链路“扩展”L2广播域的理想select。

然后你设置IPsec来encryption隧道上的通信。
在Mikrotik的最新版本中,这可以通过EoIP接口设置自动完成,但我更愿意手动设置,以便更好地控制。
您在EoIP隧道端点IP上应用IPsec策略(因此encryption整个EoIP隧道stream量),而不是通过隧道的networking。

最后在两台路由器上创build一个网桥,并在两端连接以太网端口和EoIP隧道。

通过这种方式,您可以将L2广播域扩展到远端,桥接器将负责将哪些数据包通过隧道,哪些数据包应保留在本地。
网桥就像软件交换机,所以它们保留哪个MAC位于哪个端口的表格,并自动转发指定到哪个端口的数据包。 所有的广播stream量当然会被转发到隧道。 更多关于桥梁的信息

在MikroTik官方文档中,已经logging了这种情况(IPsecencryption除外)。

让我们假设我们要连接两个networking:“办公室局域网”和“远程局域网”。 通过使用EoIP设置可以使Office和远程LAN位于相同的Layer2广播域中。

考虑以下设置: 在这里输入图像说明

正如你所知,无线电台不能被桥接,为了克服这个限制(不涉及WDS),我们将通过无线链路创buildEoIP隧道,并通过连接到本地networking的接口进行桥接。

在这个例子中我们不会覆盖无线configuration,假设无线链路已经build立

首先,我们在我们的网关上创buildEoIP隧道…

[admin@Our_GW] interface eoip> add name="eoip-remote" tunnel-id=0 \ \... remote-address=10.0.0.2 [admin@Our_GW] interface eoip> enable eoip-remote [admin@Our_GW] interface eoip> print Flags: X - disabled, R - running 0 name=eoip-remote mtu=1500 arp=enabled remote-address=10.0.0.2 tunnel-id=0 [admin@Our_GW] interface eoip> 

…和远程路由器上

 [admin@Remote] interface eoip> add name="eoip" tunnel-id=0 \ \... remote-address=10.0.0.1 [admin@Remote] interface eoip> enable eoip-main [admin@Remote] interface eoip> print Flags: X - disabled, R - running 0 name=eoip mtu=1500 arp=enabled remote-address=10.0.0.1 tunnel-id=0 [admin@Remote] interface eoip> 

下一步是桥接本地接口与EoIP隧道在我们的GW …

 [admin@Our_GW] interface bridge> add [admin@Our_GW] interface bridge> print Flags: X - disabled, R - running 0 R name="bridge1" mtu=1500 arp=enabled mac-address=00:00:00:00:00:00 protocol-mode=none priority=0x8000 auto-mac=yes admin-mac=00:00:00:00:00:00 max-message-age=20s forward-delay=15s transmit-hold-count=6 ageing-time=5m [admin@Our_GW] interface bridge> port add bridge=bridge1 interface=eoip-remote [admin@Our_GW] interface bridge> port add bridge=bridge1 interface=office-eth [admin@Our_GW] interface bridge> port print Flags: X - disabled, I - inactive, D - dynamic # INTERFACE BRIDGE PRIORITY PATH-COST 0 eoip-remote bridge1 128 10 1 office-eth bridge1 128 10 [admin@Our_GW] interface bridge> 

…和远程路由器:

 [admin@Remote] interface bridge> add [admin@Remote] interface bridge> print Flags: X - disabled, R - running 0 R name="bridge1" mtu=1500 arp=enabled mac-address=00:00:00:00:00:00 protocol-mode=none priority=0x8000 auto-mac=yes admin-mac=00:00:00:00:00:00 max-message-age=20s forward-delay=15s transmit-hold-count=6 ageing-time=5m [admin@Remote] interface bridge> port add bridge=bridge1 interface=ether [admin@Remote] interface bridge> port add bridge=bridge1 interface=eoip-main [admin@Remote] interface bridge> port print Flags: X - disabled, I - inactive, D - dynamic # INTERFACE BRIDGE PRIORITY PATH-COST 0 ether bridge1 128 10 1 eoip-main bridge1 128 10 [admin@Remote] interface bridge> 

现在这两个站点都在同一个Layer2广播域中。 您可以在两个站点上从同一networking设置IP地址。

而且你还需要设置IPSec。 更多信息在这里

请记住,IPsec,而在此刻Mikrotik沟通最安全的方式是相当CPU饥饿,除非你的路由器有硬件加速。 所以,如果您使用简单的路由器板,不要期望任何超过10-15mbits的吞吐量。

如果您的路由器具有dynamic互联网IP,那么您将需要使用MikroTik的IP> Cloudfunction来获得dynamicDNS,然后使用这些DynDNS以及一些脚本来自动更新EoIP隧道和IPsec对等体和策略上的IP公共IP变化。

最后我假定你的互联网连接最多只有1500字节的MTU。 使用隧道和EoIP,您需要将EoIP隧道接口的MTU降低到1400bytes(您最好做一些testing,以确定设置/stream量的最佳值)。
对于我的设置/stream量,我使用1400字节。 不幸的是,由于IPsec的性质取决于你的数据包的大小,开销是可变的,所以你不能总是从中得到最好的结果。