概述


本文介绍了如何在 UniFi 网关 (USGUSG-PRO-4 和 UniFi Dream Machine (UDM)上,分别在 Manual IPsec 和 OpenVPN (非 Auto IPsec)上配置 Site-to-Site VPN .


目录


  1. 介绍
  2. Auto IPsec VTI
  3. Manual IPsec
  4. 启用自动和动态路由的 IPsec VPN 的防火墙规则
  5. 基于策略的 Manual VPN 防火墙规则(禁用动态路由)
  6. OpenVPN
  7. 相关文章

介绍


回到顶部

使用 Site-to-Site VPN 可以在两个防火墙之间建立了安全的连接,将它们后面的内部网络互连。在 UniFi network 控制器 设置>网络>创建新网络>Site-to-Site VPN 下配置 Site-to-Site VPN 。

用户提示:
  • Auto IPsec VTI: 用于与另一个在同一 UniFi network 控制器下其他站点上管理的 USG 建立 Site-to-Site VPN。
  • Manual IPsec: 会创建到外部管理的 USG,EdgeRouter 或其他支持 IPsec 的供应商产品的 Site-to-Site VPN 隧道。
  • OpenVPN: 与 Manual IPsec 相似,因为它仅使用 OpenVPN 而不是 IPsec 创建到外部管理设备的隧道。

出于性能考虑,建议使用 IPsec。OpenVPN 无法卸载,只能在单个 CPU 线程上运行。


Auto IPsec VTI


回到顶部

注意: 如果一个或两个 USG 位于 NAT 路由器后面,则此 VPN 类型(自动)将不起作用。这意味着两个 USG 必须具有公网地址(非 RFC1918)。

在 UniFi 中,Auto IPsec VTI 配置允许管理员在同一控制器中的两个 UniFi 安全网关之间创建 VPN。在 UniFi 中创建此 VPN 会自动配置以下内容:

  • 在隧道的两侧设置对等 IP,以匹配 WAN 接口地址。
  • 为每个站点添加远程网络。
  • 在每个 USG 上预配一个 VTI 接口以用于 VPN。Auto VPN VTI 接口以 vti0 开头,并以 vti1,vti2 等递增,以此类推。
  • 动态跟踪 WAN 上的 IP 更改。
  • 在两个 USG 之间配置一个随机生成的预共享密钥。
注意:从 UniFi network 控制器 5.8 版本开始,仅支持中心辐射型拓扑。网状拓扑尚未支持。

Manual IPsec


回到顶部

已启用: 允许管理员在不删除参数的情况下启用或禁用 VPN 隧道。

远程子网: 此部分应填写 VPN 对端的网络。/32 不是有效的子网掩码。

对等 IP: 对端设备的公网 IP。如果上行网关正在转发 UDP 端口 500 和 4500,则这也可以是下行路由器前面的网关的公共 IP。

本地 WAN IP: 配置此 VPN 的站点上采用的 USG 的公网 IP。如果此 USG 经过 NAT,则配置在 WAN 接口上找到的地址。要找到 WAN 接口 IP,请在“ 设备”>“ USG 属性面板”>“详细信息”>“ WAN 1”

预共享密钥: 创建一个共享密钥以在每个 VPN 端上输入。

IPsec 配置文件:

  • 自定义: 使用管理员定义的参数。
  • Azure 动态路由: 使用参数给使用 VTI 连接到 Microsoft Azure 的实例。
  • Azure 静态路由: 使用参数给使用不带 VTI 的基于策略的 IPsec 连接到 Microsoft Azure 的实例。

Manual IPsec: 高级选项


回到顶部

注意: 这些设置建议由具有网络知识的高级用户进行配置。它们适用于 IPsec 流程的阶段 1 和阶段 2。

密钥交换版本: 选择 IKEv1 或 IKEv2。

加密: 选择 AES-128,AES-256 或 3DES 加密。

哈希: 选择 SHA1 或 MD5

DH(Diffie-Hellman)组: DH 组 2、5、14、15、16、19、20、21、25、26 可用。

PFS(完美前向保密): 启用或禁用。启用 PFS 后,阶段 2 DH 组将被硬编码到 DH Group 中选择的同一组 。

动态路由: 启用或禁用虚拟隧道接口(VTI)。这将指定 VPN 配置是基于策略(关闭)还是基于路由(打开)。(注意:手动 VPN VTI 接口以 vti64 开头,并以 vti65,vti66 等递增)

注意:使用较大的算法更安全,但是会带来 CPU 更大的性能需求。例如,与 AES-128 相比,AES-256 将使用更多的 CPU 资源。对于大多数情况,建议使用 AES-128 加密。

启用自动和动态路由的 IPsec VPN 的防火墙规则


回到顶部

创建 VPN 后,防火墙规则将自动配置为允许所有通过 VPN 的流量。

可以在 “设置”>“路由和防火墙”>“防火墙”>“ LAN_IN”中 创建防火墙规则,以阻止通过指定类型的 VPN 流量 。“source”应填写正在配置的 USG 的对端 IP,而“destination”应填写要阻止流量的本地网络或地址。


基于策略的 Manual VPN 防火墙规则(禁用动态路由)


回到顶部

基于策略的 VPN 网络的防火墙规则会自动配置为允许 UDP 端口 500 、 4500 和 WAN_LOCAL 上的 ESP 协议。此外,还将创建规则,以允许与 VPN 网络创建中“远程子网”下定义的网络之间的通信。

解决方案是禁用手动防火墙,然后通过在 WAN_LOCAL 上手动添加适当的规则,并从 NAT 中排除 IPsec 流量,来适应实际情况。

在非 VTI VPN 上控制“传入” IPsec 流量的要求如下:

  1. 导航到 设置>路由和防火墙
  2. 添加 WAN_LOCAL 规则以接收 ESP。
  3. 添加 WAN_LOCAL 规则以接收目标端口 UDP 500 / 4500 。
  4. 添加与您要允许的流量相匹配的 WAN_IN 规则(选中匹配的传入 IPsec 数据包)-默认情况下,规则集底部的默认拒绝(隐藏的)来阻止所有传入流量。

例如,如果您的本地 LAN 是 192.168.150.0/24,而您要允许访问您的 LAN 的对端子网是 192.168.250.0/24,那么您将添加 192.168.250.0/24 作为“source”和 192.168.150.0 / 24 作为此规则的“destination”。

  1. 禁用自动防火墙并重新加载 IPtables(重新启动)
  2. 为要通过 VPN 的流量添加源 NAT 排除规则。您的本地 LAN 将成为您的源地址。

示例 -192.168.150.0/24 和远程 VPN 子网将是您的目标,而不是 192.168.250.0/24。

{
    "service": {
        "nat": {
            "rule": {
                "5500": {
                    "description": "IPsec",
                    "destination": {
                        "address": "192.168.250.0/24"
                    },
                    "exclude": "''",
                    "outbound-interface": "eth0",
                    "protocol": "all",
                    "source": {
                        "address": "192.168.150.0/24"
                    },
                    "type": "masquerade"
                }
            }
        }
    },
    "vpn": {
        "ipsec": {
            "auto-firewall-nat-exclude": "disable"
        }
    }
}
注意:
  • 本示例仅供参考。确保在应用时调整对网络的地址。
  • 此配置需要在控制器上使用 config.gateway.json 文件。在此处 查看我们的文章。

OpenVPN


回到顶部

已启用: 允许管理员在不删除参数的情况下启用或禁用 VPN 隧道。

远程子网: 此部分应填写 VPN 对端的网络。/ 32 不是有效的子网掩码。

远程主机: 远程网关的公网 IP 或 USG 前面的上游路由器的公网 IP。

远程地址/端口: 输入不与任何先前定义的网络重复的 IP。该地址仅与远程网关上的 OpenVPN 隧道相关。端口输入远程网关使用哪个 UDP 端口连接到 USG。

本地地址/端口: 输入不与任何先前定义的网络重复的 IP。此地址仅与本地网关(USG)上的 OpenVPN 隧道相关。端口输入 USG 将使用哪个 UDP 端口连接到远程网关。

共享密钥: 此密钥不是用户密码。它必须是生成的 2048 位密钥。USG 可以按照以下说明从 CLI 生成此文件。

CLI: 访问命令行界面(CLI)。您可以使用 GUI 中的 CLI 按钮或使用诸如 PuTTY 之类的程序来执行此操作。
  1. 在 USG 上生成 2048 位共享密钥。
generate vpn openvpn-key /config/auth/secret
  1. 显示共享密码,然后将输出复制到文本文件。
sudo cat /config/auth/secret
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
48fc8ac5b96655a08e041de6263a4e7b
<output shortened>
-----END OpenVPN Static key V1-----
  1. 仅在 BEGIN 行之后和 END 行之前的 Pre-Shared Secret 字段中包含字符。您可能需要将输出粘贴到文本编辑器中,以删除换行符和空格。

相关文章


回到顶部

UniFi - USG VPN:如何实现失效对等体检测