pfSense book之IPsec 站点到站点连接示例

本文摘要通过站点到站点IPsec隧道将两个网络互连,就好像它们是通过路由器直接连接一样。站点A的系统可以到达站点B的服务器或其他系统,反之亦然。这个流量也可以通过防火墙规则来调节,就像任何其他网络接口一样。如果不止一个客户端将从同一个受控位置连接到另一个站点,则站点到站点隧道的效率可能会更高,更不用说更方便和更容易支持。 通过站点到站点隧道,任何一个网络上的系统都不需要知道存在VPN。不需要客户端软件,所...

通过站点到站点IPsec隧道将两个网络互连,就好像它们是通过路由器直接连接一样。站点A的系统可以到达站点B的服务器或其他系统,反之亦然。这个流量也可以通过防火墙规则来调节,就像任何其他网络接口一样。如果不止一个客户端将从同一个受控位置连接到另一个站点,则站点到站点隧道的效率可能会更高,更不用说更方便和更容易支持。
通过站点到站点隧道,任何一个网络上的系统都不需要知道存在VPN。不需要客户端软件,所有的隧道工作都由隧道站点处理。对于有网络支持但不处理VPN连接的设备(例如打印机,相机,HVAC系统和其他嵌入式硬件),这也是一个很好的解决方案。

站点到站点配置示例

建立IPsec隧道的关键是确保双方都有匹配的认证、加密等设置。在开始之前,请记录本地和远程WAN IP地址,以及将通过隧道传输的本地和远程内部子网。ping远程子网的IP地址是可选的,但建议保持隧道一直处于活动连接状态。防火墙不检查回复,因为发起到远程网络上IP地址的任何流量都将触发IPsec协商,因此,只要主机是另一个站点的任意一个IP地址,主机是否实际响应并不重要。除了隧道说明和这些信息外,其他连接设置可以是相同的。

在本例中,将假设以下设置:

站点A站点B
名称Austin Office(奥斯汀办公室)名称London Office(伦敦办公室)
WAN IP198.51.100.3WAN IP203.0.113.5
LAN 子网10.3.0.0/24LAN 子网10.5.0.0/24
LAN IP10.3.0.1LAN IP10.5.0.1

从站点A开始。导航到 VPN > IPsec 菜单,通过单击 添加 P1 按钮(添加P1按钮)来添加阶段1条目。

首先,填写阶段1一般信息设置项,如下图所示。粗体项目是必需填写的,按照说明填写设置:

  • 禁用:不选中此框,以便让隧道运行。
  • 密钥交换版本:提示是使用IKEv1还是IKEv2。对于这个示例,使用IKEv2,但是如果一方不支持IKEv2,请改为IKEv1。
  • Internet协议:大多数情况下都是IPv4,除非两个WAN都有IPv6,在这种情况下,可以使用任何一种类型的IPv6。
  • 接口:选 WAN。
  • 远程网关:站点B的WAN地址,在本例中为:203.0.113.5。
  • 描述:输入文字来说明隧道的目的或身份。在本例子中输入“ExampleCo London Office”。

站点A VPN隧道设置 - 一般信息

下一步继续设置IPsec阶段1。对于大多数设置,使用默认值就可以了。

  • 认证方法:选择默认,本例中为 Mutual PSK。
  • 我的标识符:选择默认,My IP Address。
  • 对端标识符:选择默认,Peer IP Address。
  • 预共享密钥:这是正确的最重要的设置。如果使用弱密钥,则可能会破坏使用预共享密钥的IPsec。使用强密码,长度至少为10个字符,包含大小写字母,数字和符号的组合。以后需要在站点B的隧道配置中输入相同的确认密钥,所以记下或复制并粘贴到其他地方。复制和粘贴可能派上用场,特别是像 aBc123%XyZ9$7qwErty99 这样一个复杂的密码。
  • 加密算法:使用密钥长度为256位的AES。
  • 哈希算法:如果双方都支持,使用SHA256,否则使用默认的SHA1。
  • DH 组:使用默认的2 (1024 bit),更高的值更安全,但会占用更多的CPU。
  • 有效期:也可以指定,否则将使用28800的默认值。
  • 禁用预授密钥:不选中
  • 仅响应者:不选中
  • NAT穿越:使用Auto,在这个例子中防火墙都不在NAT后面。
  • 失效对等体检测:不选中,默认延迟为10秒,最大故障次数5次是足够的。根据站点的需求,更高的值可能会更好。

单击保存完成阶段1设置。

站点A阶段1设置

在添加阶段1之后,将新的阶段2定义添加到VPN:

  1. 单击 显示阶段2条目显示阶段2按钮)展开这个VPN阶段2的列表。
  2. 单击 添加 P2添加P2按钮)添加新的阶段2条目,见下图。

站点A阶段2列表

添加阶段2条目到站点A

现在在这个VPN上添加阶段2的设置,阶段2设置会多于阶段1,见下图:

  • 模式:选择Tunnel IPv4。
  • 本地子网:最好选为LAN Subnet,但是也可以把它改成Network,填入正确的子网值,在这个例子中是10.3.0.0/24。将其保留为LAN Subnet将确保如果网络重新编号,隧道的这一端将随之更改。如果发生这种情况,则必须手动更改另一端。
  • NAT/BINAT:设置为None。
  • 远程子网:输入站点B的网络,在这里为10.5.0.0/24。

站点A阶段2常规设置

下图的设置涵盖了通信加密。加密算法和哈希算法可以允许有多个选项,只要每一方至少有一个共同点,双方就会进行协商并达成一致。在某些情况下,这可能是一件好事,但通常将其限制在双方所期望的单一特定选项上通常会更好。

  • 协议:设置为 ESP。
  • 加密算法:理想情况下,如果双方都支持,则选择128位密钥长度的AES256-GCM。否则,使用AES 256,或者两端都支持的密码。
  • 哈希算法:使用AES-GCM时,不需要哈希。否则,请使用SHA 256或SHA 1,尽可能避免使用MD5。
  • PFS:完全正向保密可以帮助防止某些关键攻击,但是可选的。在这个例子中,它被禁用。
  • 有效期:设为3600。

站点A阶段2 加密设置

最后,可以在远程局域网上为系统输入一个IP地址,该地址将定期发送一个ICMP ping,如下图所示。ping的返回值不会被检查,这只会发送流量的隧道,以便它将保持建立。在此设置中,将使用站点B(10.5.0.1)中的pfSense防火墙的LAN IP地址。

站点A保持活动连接

要完成设置并使其生效,请执行以下操作:单击 Save 保存,单击 应用更改,如下图所示。

应用IPsec设置

站点A的隧道已经完成,现在需要设置防火墙规则来允许来自站点B的网络流量通过IPsec隧道进入。这些规则必须添加到防火墙规则下的IPsec选项卡中。可以根据需要放宽(允许从任何地方到任何地方的任何协议)或限制性的(允许站点B上的特定主机到特定端口上的站点A的特定主机的TCP)。在这种情况下,确保源地址是站点B地址,例如10.5.0.0/24。目标地址将是站点A网络,10.3.0.0/24。

站点A IPsec防火墙规则

站点A已经配置完成,现在来配置站点B。该设置的少部分与站点A不同:

  • 阶段1的WAN地址和说明设置
  • 阶段2隧道网络
  • 保持活动连接

使用站点A上的相同设置将“阶段1”条目添加到“站点B”防火墙,但有以下区别:

  • 远程网关:输入站点A的WAN地址:198.51.100.3
  • 说明:例如:ExampleCo Austin Office

单击 保存

使用站点A上的相同设置,将“阶段2”条目添加到“站点B”防火墙,但有以下区别:

  • 远程子网:输入站点A的网络,在本例中为:10.3.0.0/24
  • 自动PING主机:输入站点A上的pfSense防火墙的LAN IP地址,10.3.0.1

站点B 阶段1设置

站点B阶段2设置

站点B保持活动连接

  1. 单击 保存
  2. 单击 应用更改

与站点A一样,还必须添加防火墙规则以允许隧道上的流量从站点A穿越到站点B。将这些规则添加到防火墙规则下的IPsec选项卡。注意来源是站点A,目的地是站点B。

现在两个隧道都已配置,现在处于活动状态。可以通过访问 系统状态 > IPsec 来查看IPsec连接状况。如果隧道不显示为“已建立”,最有可能的原因是没有流量通过隧道。由于本地网络包含防火墙所具有的地址,因此在此页面上提供了一个连接按钮,该按钮将启动对远程阶段2的ping。单击 连接VPN连接VPN按钮)。

站点A IPsec 状态

IPsec日志也会提供说明。它们位于 系统状态 > 系统日志 的“IPsec”选项卡上。一定要检查两个站点的状态和日志。

路由和网关注意事项

当VPN端点(在这种情况下为pfSense防火墙)是网络的默认网关时,路由通常不会出现问题。当客户端PC发送流量时,它将通过隧道进入pfSense防火墙,然后到达另一端。但是,如果pfSense防火墙不是给定网络的默认网关,则将需要采取其他路由措施。

例如,假设pfSense防火墙是站点B的网关,而不是站点A的网关,如下图所示。Site B上的PC1将ping发送到Site A上的PC2。数据包离开PC1,然后通过Site B上的pfSense防火墙,穿过隧道,流出Site A上的pfSense防火墙,然后到达PC2。但是返回途中发生了什么?PC2上的网关完全是另一个路由器。对ping的回复将发送到网关路由器,最有可能被丢弃,甚至更糟的是,它可能会从Internet链接发送出去,并因此丢失。

解决此问题的方法有多种,根据给定情况的不同,选择合适的方法。

  • 可以在网关路由器中输入一条静态路由,该路由会将发往隧道远端的流量重定向到pfSense防火墙。即使使用此路由,也会引入额外的复杂性,因为这种情况会导致不对称路由。见在同一接口上绕过流量的防火墙规则
  • 可以将静态路由单独添加到客户端系统,以便它们知道将流量直接发送到pfSense防火墙,而无需通过其默认网关。除非只有很少数量的主机需要访问VPN,否则这会给管理带来麻烦。
  • 在某些情况下,将pfSense防火墙作为网关并让它处理Internet连接而不是现有网关可能更容易。

pfSense不是站点到站点IPsec的网关

pfSense不是站点到站点IPsec的网关

pfSense启动的流量和IPsec

要从pfSense防火墙本身访问IPsec连接的远程端,请通过添加将远程网络指向pfSense防火墙的LAN IP地址的静态路由来“伪造”系统。请注意,此示例假定VPN两端都连接了LAN接口。如果IPsec连接在其他OPT接口,请相应地替换接口和接口的IP地址。由于IPsec绑定到FreeBSD内核的方式,如果没有静态路由,流量将遵循系统路由表,系统路由表可能会将流量发送到WAN接口,而不是通过IPsec隧道发送。如下图所示:

站点到站点IPsec静态路由示意图

每个防火墙都需要一条静态路由,方法是先添加一个指向防火墙的LAN IP地址的网关,然后再使用该网关添加一条静态路由,如下图所示:

站点A到远程子网的静态路由

站点A到远程子网的静态路由

站点B到远程子网的静态路由

站点B到远程子网的静态路由

觉得内容不错?我要

评论 暂无评论
暂无评论,快来抢沙发吧~