EdgeRouter - 修改 IPsec Site-to-Site VPN 的默认配置


概览


读者将学习如何使用命令行(CLI)修改 IPsec Site-to-Site VPN 的默认配置。

 


目录


  1. 网络拓扑图
  2. 使用图形化界面创建 IPsec Site-to-Site VPN
  3. 使用 CLI 修改 VPN 配置
  4. 相关文章

 


网络拓扑图


返回顶部

网络拓扑如下所示,EdgeRouter 上使用了以下接口:

ER-R

  • eth0 (WAN) - 203.0.113.1
  • eth1 (LAN) - 192.168.1.1/24

ER-L

  • eth0 (WAN) - 192.0.2.1
  • eth1 (LAN) - 172.16.1.1/24

 image__1_.png

 


使用图形化界面创建 IPsec Site-to-Site VPN


返回顶部

鉴于本文的目的,假设路由和接口配置已经到位并且已经测试了连通性。

与 IPsec 相关的端口和协议是:

  • UDP 500 (IKE)
  • Protocol 50 (ESP)
  • UDP 4500 (NAT-T)
GUI: 登录 ER-R 上的 GUI 界面.

1. 定义 IPsec Peer 和散列函数/加密算法

VPN > IPsec Site-to-Site > +Add Peer

  • 勾选上 Show advanced options
  • 去掉 Automatically open firewall and exclude from NAT
Peer: 192.0.2.1
Description: ipsec
Local IP: 203.0.113.1
Encryption: AES-128
Hash: SHA1
DH Group: 14
Pre-shared Secret: <secret>
Local subnet: 192.168.1.0/24
Remote subnet: 172.16.1.0/24

2. 变更应用

GUI: 登录 ER-L 上的 GUI 界面.

1. 定义 IPsec Peer 和散列函数/加密算法

VPN > IPsec Site-to-Site > +Add Peer

  • 勾选上 Show advanced options
  • 去掉 Automatically open firewall and exclude from NAT
Peer: 203.0.113.1
Description: ipsec
Local IP: 192.0.2.1
Encryption: AES-128
Hash: SHA1
DH Group: 14
Pre-shared Secret: <secret>
Local subnet: 172.16.1.0/24
Remote subnet: 192.168.1.0/24

2. 变更应用

ATTENTION: 由于已禁用'Automatically open firewall and exclude from NAT' 选项,因此在手动创建防火墙规则之前,VPN 不会建立。

'Automatically open firewall and exclude from NAT' 选项,会向 iptables 中添加以下条目

  • UBNT_VPN_IPSEC_FW_HOOK 在 local 方向,允许 UDP 端口 500(IKE),UDP 端口 4500(NAT-T)和 ESP 。
  • UBNT_VPN_IPSEC_FW_IN_HOOK 允许 local 和入站方向中从远程子网到本地子网的 IPsec 流量。
  • UBNT_VPN_IPSEC_SNAT_HOOK 排除 NAT 中从本地子网到远程子网的所有流量。

您可以通过在 CLI 中输入以下命令来验证 iptables firewall 是否生效

sudo iptables -L -vn
Chain UBNT_VPN_IPSEC_FW_HOOK (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 500,4500
0 0 ACCEPT esp -- * * 0.0.0.0/0 0.0.0.0/0

Chain UBNT_VPN_IPSEC_FW_IN_HOOK (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 172.16.1.0/24 192.168.1.0/24

sudo iptables -t nat -L -vn
Chain UBNT_VPN_IPSEC_SNAT_HOOK (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 192.168.1.0/24 172.16.1.0/24
NOTE: 如果您之前启用了 ‘automatic firewall and NAT exclusion' 功能并将其关闭, 则需要重新启动设备以删除自动创建的 iptables 规则.

 


使用 CLI 修改 VPN 配置


返回顶部

在上一节中,我们未启用 ‘automatic firewall and NAT exclusion' 功能, 按照下面的步骤天添加您自己的 IPsec firewall/NAT 规则:

CLI: 登录到 CLI 界面. 您可以使用 GUI 界面上的 CLI 按钮 或是使用类似于 PuTTY 之类的工具登录到 CLI 界面

1. 进入到配置模式

configure

2. 在 local 方向添加允许 IKE,NAT-T,ESP 和 IPsec 的防火墙规则。

set firewall name WAN_LOCAL rule 30 action accept
set firewall name WAN_LOCAL rule 30 description ike
set firewall name WAN_LOCAL rule 30 destination port 500
set firewall name WAN_LOCAL rule 30 log disable
set firewall name WAN_LOCAL rule 30 protocol udp

set firewall name WAN_LOCAL rule 40 action accept
set firewall name WAN_LOCAL rule 40 description esp
set firewall name WAN_LOCAL rule 40 log disable
set firewall name WAN_LOCAL rule 40 protocol esp

set firewall name WAN_LOCAL rule 50 action accept
set firewall name WAN_LOCAL rule 50 description nat-t
set firewall name WAN_LOCAL rule 50 destination port 4500
set firewall name WAN_LOCAL rule 50 log disable
set firewall name WAN_LOCAL rule 50 protocol udp

set firewall name WAN_LOCAL rule 60 action accept
set firewall name WAN_LOCAL rule 60 description ipsec
set firewall name WAN_LOCAL rule 60 destination address 192.168.1.0/24
set firewall name WAN_LOCAL rule 60 source address 172.16.1.0/24
set firewall name WAN_LOCAL rule 60 log disable
set firewall name WAN_LOCAL rule 60 ipsec match-ipsec

3. 在 local 方向添加允许 IKE,NAT-T,ESP 和 IPsec 的防火墙规则。

set firewall name WAN_IN rule 30 action accept
set firewall name WAN_IN rule 30 description ipsec
set firewall name WAN_IN rule 30 destination address 192.168.1.0/24
set firewall name WAN_IN rule 30 source address 172.16.1.0/24
set firewall name WAN_IN rule 30 log disable
set firewall name WAN_IN rule 30 ipsec match-ipsec

4.添加防火墙规则,允许在入站方向上远程和本地子网之间的 IPsec 流量。

set service nat rule 5000 description ipsec-exclude
set service nat rule 5000 destination address 172.16.1.0/24
set service nat rule 5000 exclude
set service nat rule 5000 outbound-interface eth0
set service nat rule 5000 protocol all
set service nat rule 5000 source address 192.168.1.0/24
set service nat rule 5000 type masquerade

IPsec VPN 由两个阶段组成,每个阶段都使用自己的一组称为安全关联(SA)的散列/函数加密算法。阶段 1(P1)用于验证 Peer 并建立 VPN,而实际数据(流量)在阶段 2(P2)中传递。 因此,我们可以定义 P2 SA 专注于性能,以及 P1 SA 专注于安全性。任何形式的加密/散列的基本原则是安全性的增加,通常会导致性能下降。

可用的加密选项:

  • AES128
  • AES256
  • AES128GCM128
  • AES256GCM128
  • 3DES

可用的散列选项:

  • MD5
  • SHA1
  • SHA2-256
  • SHA2-384
  • SHA2-512
NOTE: 建议不要在 P2(ESP)使用 GCM 密码或 SHA256 / 384/512,因为它与IPsec offloading 不兼容。有关硬件加速的更多信息,请参阅此文章。

请按照以下步骤修改默认 VPN 设置:

CLI: 访问命令行(CLI)。 您可以使用 GUI 中的 CLI 按钮或使用 PuTTY 等程序执行此操作。

1. 显示当前的 IPsec VPN SA 配置(仅显示相关输出)。

show vpn
ipsec {
auto-firewall-nat-exclude disable
esp-group FOO0 {
proposal 1 {
encryption aes128
hash sha1
}
}
ike-group FOO0 {
proposal 1 {
dh-group 14
encryption aes128
hash sha1
}
}
}
...

如上面的输出所示,P1(ike-group FOO0)和 P2(esp-group FOO0)都使用相同的 SA 集(AES128和SHA1)。

2. 更改 P1 和 P2 安全关联。

set vpn ipsec esp-group FOO0 proposal 1 encryption aes128
set vpn ipsec esp-group FOO0 proposal 1 hash md5

set vpn ipsec ike-group FOO0 proposal 1 encryption aes256
set vpn ipsec ike-group FOO0 proposal 1 hash sha256

3. 更改 ESP / IKE lifetime(以秒为单位),以便降低隧道重新协商的频率。

set vpn ipsec esp-group FOO0 lifetime 43200
set vpn ipsec ike-group FOO0 lifetime 86400

4. 禁用完全向前保密(PFS)。

set vpn ipsec esp-group FOO0 pfs disable

5. 将 IKE 密钥交换版本从 v1 更改为版本 v2。

set vpn ipsec ike-group FOO0 key-exchange ikev2

6. 将 IKE 密钥交换模式更改为野蛮模式(不推荐使用,仅支持 IKEv2)。

set vpn ipsec ike-group FOO0 mode aggressive

7. 更改 IPsec 连接类型。

set vpn ipsec site-to-site peer 192.0.2.1 connection-type respond
NOTE:  这会影响重新协商连接的次数。使用 respond 意味着设置为单次重试,使用 initiate 意味着无限次尝试重新连接

8. 即使没有检测到 NAT,也强制使用 NAT-T(UDP 4500)封装。

set vpn ipsec site-to-site peer 192.0.2.1 force-encapsulation enable

9. 更改本地 IPsec 接口地址。

仅配置以下陈述之一。 使用以下选项确定哪种命令最适合您的情况:

(A) 您的 WAN 口通过 DHCP 获取地址

delete vpn ipsec site-to-site peer 192.0.2.1 local-address
set vpn ipsec site-to-site peer 192.0.2.1 dhcp-interface eth0

(B) 您的 WAN 口通过 PPPoE 获取地址

set vpn ipsec site-to-site peer 192.0.2.1 local-address 0.0.0.0

10.如果远端 Peer 位于 NAT 后面(与L2TP不兼容),则将对等地址更改为0.0.0.0。

delete vpn ipsec site-to-site peer 192.0.2.1
set vpn ipsec site-to-site peer 0.0.0.0 …

11. 启用死对等检测(DPD)。

set vpn ipsec ike-group FOO0 dead-peer-detection action restart
set vpn ipsec ike-group FOO0 dead-peer-detection interval 30
set vpn ipsec ike-group FOO0 dead-peer-detection timeout 120
  • hold  VPN 状态被置于“on-hold”状态,但保留策略直到重新启动流量。
  • clear  VPN 状态和策略被清除,隧道被拆除。
  • restart  VPN 状态和策略重新启动,路由器尝试重新协商遂道。

 DPD interval 是这些消息开始之后的秒数。 timeout  是尝试失败后重新发送消息的秒数。

NOTE:  使用 IKEv2 时不需要 DPD,因为它具有内置的 keep-alive 机制。

12. 启用 P2(ESP)IPsec 流量加速。

set system offload ipsec enable

13. 提交更改并保存配置。

commit ; save
ATTENTION: 以下命令已在 EdgeOS 固件 v1.8.5 和 v1.8.0 中弃用。
  • set vpn ipsec ipsec-interfaces
  • set vpn ipsec nat-traversal
  • set vpn ipsec nat-networks

您可以使用 CLI 界面中的以下命令验证 VPN 设置:

show firewall name WAN_LOCAL statistics
show firewall name WAN_IN statistics
show nat statistics
show vpn ipsec sa
show vpn log

 

 


相关文章


返回顶部

EdgeRouter - 使用 FQDN 配置动态站点到站点的 IPsec VPN

EdgeMAX - IPsec Site-to-Site VPN 配置案例