UniFi - USG/UDM: 如何配置 Site-to-Site VPN


概述


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


目录


  1. 介绍
  2. Auto IPsec VTI
  3. Manual IPsec
    1. 高级选项
  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”。

5.禁用自动防火墙并重新加载 IPtables(重新启动)

6.为要通过 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

2. 显示共享密码,然后将输出复制到文本文件。

sudo cat /config/auth/secret
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
48fc8ac5b96655a08e041de6263a4e7b
<output shortened>
-----END OpenVPN Static key V1-----

3. 仅在 BEGIN 行之后和 END 行之前的 Pre-Shared Secret 字段中包含字符。您可能需要将输出粘贴到文本编辑器中,以删除换行符和空格。 


相关文章


回到顶部

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