概述
本文介绍了如何在 UniFi 网关 (USG , USG-PRO-4 和 UniFi Dream Machine 梦想机 (UDM)上,分别在 Manual IPsec 和 OpenVPN (非 Auto IPsec)上配置 Site-to-Site VPN .
目录
- 介绍
- Auto IPsec VTI
- Manual IPsec
- 启用自动和动态路由的 IPsec VPN 的防火墙规则
- 基于策略的 Manual VPN 防火墙规则(禁用动态路由)
- OpenVPN
- 相关文章
介绍
使用 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
在 UniFi 中,Auto IPsec VTI 配置允许管理员在同一控制器中的两个 UniFi 安全网关之间创建 VPN。在 UniFi 中创建此 VPN 会自动配置以下内容:
- 在隧道的两侧设置对等 IP,以匹配 WAN 接口地址。
- 为每个站点添加远程网络。
- 在每个 USG 上预配一个 VTI 接口以用于 VPN。Auto VPN VTI 接口以 vti0 开头,并以 vti1,vti2 等递增,以此类推。
- 动态跟踪 WAN 上的 IP 更改。
- 在两个 USG 之间配置一个随机生成的预共享密钥。
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: 高级选项
密钥交换版本: 选择 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 等递增)
启用自动和动态路由的 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 流量的要求如下:
- 导航到 设置>路由和防火墙。
- 添加 WAN_LOCAL 规则以接收 ESP。
- 添加 WAN_LOCAL 规则以接收目标端口 UDP 500 / 4500 。
- 添加与您要允许的流量相匹配的 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”。
- 禁用自动防火墙并重新加载 IPtables(重新启动)
- 为要通过 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 生成此文件。
- 在 USG 上生成 2048 位共享密钥。
generate vpn openvpn-key /config/auth/secret
- 显示共享密码,然后将输出复制到文本文件。
sudo cat /config/auth/secret
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
48fc8ac5b96655a08e041de6263a4e7b
<output shortened>
-----END OpenVPN Static key V1-----
- 仅在 BEGIN 行之后和 END 行之前的 Pre-Shared Secret 字段中包含字符。您可能需要将输出粘贴到文本编辑器中,以删除换行符和空格。