站点到站点 IPsec (IKEv1) 隧道

考虑如下图所示的设置。两个远程办公室路由器连接到互联网,办公室工作站位于 NAT 之后。每个办公室都有自己的本地子网,Office1 为 10.1.202.0/24,Office2 为 10.1.101.0/24。两个远程办公室都需要通往路由器后面的本地网络的安全隧道。

站点 1 配置

首先使用适合您需求的更强或更弱的加密参数创建新的第 1 阶段配置文件和第 2 阶段提案条目。建议为每个节点创建单独的条目,以便它们对于每个对等点都是唯一的, 以防将来需要调整任何设置。这些参数必须在站点之间匹配,否则将无法建立连接。

/ip ipsec profile
add dh-group=modp2048 enc-algorithm=aes-128 name=ike1-site2/ip ipsec proposaladd enc-algorithms=aes-128-cbc name=ike1-site2 pfs-group=modp2048

继续配置 peer 。指定  远程路由器 的地址。该地址应该可以通过 UDP/500 和 UDP/4500 端口访问,因此请确保对路由器的防火墙采取适当的措施。指定 此对等方 的名称以及新创建的配置文件。

/ip ipsec peer
add address=192.168.80.1/32 name=ike1-site2 profile=ike1-site2

下一步是创建 身份。对于基本的预共享密钥安全隧道,除了  秘钥 和 此身份适用的对等方之外,没有什么可设置的 。

/ip ipsec identity
add peer=ike1-site2 secret=thisisnotasecurepsk

如果安全很重要,请考虑使用 IKEv2 和不同的 auth-method 。

最后,创建一个 策略 来控制网络/主机之间的流量应该被加密。

/ip ipsec policy
add src-address=10.1.202.0/24 src-port=any dst-address=10.1.101.0/24 dst-port=any tunnel=yes action=encrypt proposal=ike1-site2 peer=ike1-site2

站点 2 配置

Office 2 配置几乎与 Office 1 相同,具有正确的 IP 地址配置。首先创建一个新的第 1 阶段 配置文件 和第 2 阶段 提案 条目:

/ip ipsec profile
add dh-group=modp2048 enc-algorithm=aes-128 name=ike1-site1/ip ipsec proposaladd enc-algorithms=aes-128-cbc name=ike1-site1 pfs-group=modp2048

接下来是 peer 和 identity:

/ip ipsec peer
add address=192.168.90.1/32 name=ike1-site1 profile=ike1-site1/ip ipsec identityadd peer=ike1-site1 secret=thisisnotasecurepsk

完成后,创建一个 策略:

/ip ipsec policy
add src-address=10.1.101.0/24 src-port=any dst-address=10.1.202.0/24 dst-port=any tunnel=yes action=encrypt proposal=ike1-site1 peer=ike1-site1

此时,应该建立隧道并在两个路由器上创建两个 IPsec 安全关联:

/ip ipsec
active-peers print
installed-sa print

NAT 和 Fasttrack 绕过

此时,如果您尝试通过 IPsec 隧道发送流量,它将不起作用,数据包将丢失。这是因为两个路由器都有 NAT 规则(伪装),这些规则会在数据包加密之前更改源地址。路由器无法加密数据包,因为源地址与策略配置中指定的地址不匹配。有关详细信息,请参阅所述 的IPsec数据包流的例子。

为了解决这个问题,我们需要设置 IP/firewall /NAT 绕过规则。

办公室 1 路由器:

/ip firewall nat
add chain=srcnat action=accept place-before=0 src-address=10.1.202.0/24 dst-address=10.1.101.0/24

办公室2路由器:

/ip firewall nat
add chain=srcnat action=accept place-before=0 src-address=10.1.101.0/24 dst-address=10.1.202.0/24

如果您之前尝试在添加 NAT 绕过规则之前建立 IP 连接,则必须从现有连接中清除连接表或重新启动两个路由器。

绕过规则放在所有其他 NAT 规则的顶部是非常重要的。

另一个问题是,如果您启用了 IP/Fasttrack  ,数据包会绕过 IPsec 策略。所以我们需要在FastTrack之前添加accept规则。

/ip firewall filter
add chain=forward action=accept place-before=1 src-address=10.1.101.0/24 dst-address=10.1.202.0/24 connection-state=established,related
add chain=forward action=accept place-before=1 src-address=10.1.202.0/24 dst-address=10.1.101.0/24 connection-state=established,related

但是,如果每个隧道上有相当数量的隧道和大量流量,这会给路由器的 CPU 增加大量负载。

解决方案是使用 IP/Firewall/Raw 绕过连接跟踪,这样就不需要上面列出的过滤规则,并将 CPU 的负载降低大约 30%。

/ip firewall raw
add action=notrack chain=prerouting src-address=10.1.101.0/24 dst-address=10.1.202.0/24
add action=notrack chain=prerouting src-address=10.1.202.0/24 dst-address=10.1.101.0/24

使用 DNS 的基于 IPsec (IKEv2) 的站点到站点 GRE 隧道

此示例说明当一个或两个站点没有静态 IP 地址时,如何在两个 RouterOS 设备之间建立安全且加密的 GRE 隧道。在使此配置成为可能之前,有必要将 DNS 名称分配给将充当响应者(服务器)的设备之一。为简单起见,我们将使用 RouterOS 内置的 DDNS 服务 IP/Cloud 。

站点 1(服务器)配置

这是将侦听传入连接并充当响应者的一方。我们将使用 mode config 为第二个站点提供 IP 地址,但首先,创建一个环回(空白)网桥并为其分配一个 IP 地址,稍后将用于 GRE 隧道建立。

/interface bridge
add name=loopback/ip addressadd address=192.168.99.1 interface=loopback

继续进行 IPsec 配置,首先 使用适合您需要的更强或更弱的加密参数创建新的第 1 阶段配置文件 和第 2 阶段 提议 条目。请注意,此配置示例将侦听所有传入的 IKEv2 请求,这意味着配置文件配置将在所有其他配置(例如 RoadWarrior)之间共享。

/ip ipsec profile
add dh-group=ecp256,modp2048,modp1024 enc-algorithm=aes-256,aes-192,aes-128 name=ike2/ip ipsec proposaladd auth-algorithms=null enc-algorithms=aes-128-gcm name=ike2-gre pfs-group=none

接下来,  使用 responder=yes创建一个新的模式配置条目。这将为其他站点以及用于策略生成的主机(环回地址)提供 IP 配置。

/ip ipsec mode-config
add address=192.168.99.2 address-prefix-length=32 name=ike2-gre split-include=192.168.99.1/32 system-dns=no

建议创建一个新的 策略组 以将此配置与任何现有或未来的 IPsec 配置分开。

/ip ipsec policy group
add name=ike2-gre

现在是时候设置一个新的 策略 模板来匹配远程对等方的新动态地址和回送地址。

/ip ipsec policy
add dst-address=192.168.99.2/32 group=ike2-gre proposal=ike2-gre src-address=192.168.99.1/32 template=yes

下一步是创建将侦听所有 IKEv2 请求的 对等 配置。如果您已经有这样的条目,则可以跳过此步骤。

/ip ipsec peer
add exchange-mode=ike2 name=ike2 passive=yes profile=ike2

最后,建立了一个 身份 ,将通过预共享密钥认证通过一个特定的符合我们的远程对等 的秘密。

/ip ipsec identity
add generate-policy=port-strict mode-config=ike2-gre peer=ike2 policy-template-group=ike2-gre secret=test

服务器端现在已配置并侦听所有 IKEv2 请求。请确保防火墙没有阻止 UDP/4500 端口。

最后一步是创建 GRE 接口本身。这也可以稍后在从客户端建立 IPsec 连接时完成。

/interface gre
add local-address=192.168.99.1 name=gre-tunnel1 remote-address=192.168.99.2

站点 2(客户端)配置

与服务器配置类似,首先创建新的第 1  阶段 配置文件和第 2 阶段提案 配置。由于该站点将作为发起方,我们可以使用更具体的配置文件配置来控制使用哪些确切的加密参数,只需确保它们与服务器端配置的内容重叠即可。

/ip ipsec profile
add dh-group=ecp256 enc-algorithm=aes-256 name=ike2-gre/ip ipsec proposaladd auth-algorithms=null enc-algorithms=aes-128-gcm name=ike2-gre pfs-group=none

接下来,  使用 responder=no创建一个新的模式配置条目。这将确保对等方从服务器请求 IP 和拆分网络配置。

/ip ipsec mode-config
add name=ike2-gre responder=no

还建议创建一个新的 策略组, 以将此配置与任何现有或未来的 IPsec 配置分开。

/ip ipsec policy group
add name=ike2-gre

 也在客户端创建一个新的策略 模板。

/ip ipsec policy
add dst-address=192.168.99.1/32 group=ike2-gre proposal=ike2-gre src-address=192.168.99.2/32 template=yes

继续进行对 等 配置。现在我们可以在 address参数下指定服务器的 DNS 名称 。显然,您也可以使用 IP 地址。

/ip ipsec peer
add address=n.mynetname.net exchange-mode=ike2 name=p1.ez profile=ike2-gre

最后, 为我们新创建的同级创建一个身份 。

/ip ipsec identity
add generate-policy=port-strict mode-config=ike2-gre peer=p1.ez policy-template-group=ike2-gre secret=test

如果一切正常,应该有一个新的动态策略存在。

/ip ipsec policy print
Flags: T - template, X - disabled, D - dynamic, I - invalid, A - active, * - default0 T * group=default src-address=::/0 dst-address=::/0 protocol=all proposal=default template=yes 1 T group=ike2-gre src-address=192.168.99.2/32 dst-address=192.168.99.1/32 protocol=all proposal=ike2-gre template=yes 2 DA src-address=192.168.99.2/32 src-port=any dst-address=192.168.99.1/32 dst-port=any protocol=all action=encrypt level=unique ipsec-protocols=esptunnel=yes sa-src-address=172.17.2.1 sa-dst-address=172.17.2.2 proposal=ike2-gre ph2-count=1

现在在两个站点之间建立了一个安全隧道,它将加密 192.168.99.2 <=> 192.168.99.1 地址之间的所有流量。我们可以使用这些地址来创建 GRE 隧道。

/interface gre
add local-address=192.168.99.2 name=gre-tunnel1 remote-address=192.168.99.1

作者 Qi, Asura

发表回复

您的电子邮箱地址不会被公开。