我已成功在本地 FritzBox 7590 和办公室之间创建了 IPSEC 隧道,该办公室运行带有 pfsense 2.4.5-RELEASE-p1 和 coreboot 固件 v4.11.0.6 的 pfsense 硬件防火墙(APU2)。
但是,隧道仅在启用积极模式的情况下才有效,这会生成以下 pfSense 日志条目:
/rc.newipsecdns:警告:设置 i_dont_care_about_security_and_use_aggressive_mode_psk 选项,因为阶段 1 是使用预共享密钥的激进模式配置的。这不是一个安全的配置。
我如何在这些位置之间创建安全隧道?
答案1
这个问题困扰了我两年,直到最近我才发现如何在没有激进模式的情况下进行连接。我在这里发布我的答案,以防其他人有同样的问题。我发现的几乎所有指南都使用激进模式,如果配置正确,则不需要激进模式。
适用以下参数:
- FritzBox 有一个动态 IP 地址,并已注册到 myFritz.net。您将获得一个使用最新 IP 地址更新的 DynDNS 名称。
- pfsense 具有静态公共 IP 地址。如果不是这种情况,您需要使用另一个 DynDNS 服务来广播 pfsense IP
- 我建议将 pfsense 和 FritzBox 更新到最新固件,以支持现代加密哈希算法
- 为了方便测试具有两个远程位置的 IPSEC 隧道,首先使用 OpenVPN 配置 pfSense,以便能够从其他位置配置 pfSense
- FritzBox LAN 配置为 ,
192.168.178.0
而 pfsense LAN 配置为192.168.10.0
。这可以更改,但两个 LAN 不能相同。
禁用攻击模式的关键是通过导入加载 VPN 配置。FritzBox 界面隐藏了大部分重要内容,这就是为什么只有在使用导入功能时才能禁用攻击模式。
FritzBox 配置
这是我的ipsec-fritzbox.cfg
,我将在下面解释参数和 pfSense 配置:
vpncfg {
connections {
enabled = yes;
conn_type = conntype_lan;
name = "FritzBox-pfsense IPSEC"; // Name of Connection
always_renew = yes; // Always connect
reject_not_encrypted = no;
dont_filter_netbios = yes;
localip = 0.0.0.0;
local_virtualip = 0.0.0.0;
remoteip = xxx.xxx.xxx.xxx; // Static IP of pfsense
remote_virtualip = 0.0.0.0;
localid {
fqdn = "xxx.myfritz.net"; // dyndns name of FritzBox
}
remoteid {
ipaddr = xxx.xxx.xxx.xxx; // Static IP of pfsense
}
mode = phase1_mode_idp;
phase1ss = "dh14/aes/sha"; //phase one hashing algorithms to use
keytype = connkeytype_pre_shared;
key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //strong pre-shared key
cert_do_server_auth = no;
use_nat_t = no;
use_xauth = no;
use_cfgmode = no;
phase2localid {
ipnet {
ipaddr = 192.168.178.0; //Local network of FritzBox
mask = 255.255.255.0; //Local subnet FritzBox
}
}
phase2remoteid {
ipnet {
ipaddr = 192.168.10.0; //Remote network of Pfsense
mask = 255.255.255.0; //Remote subnet Pfsense
}
}
phase2ss = "esp-aes256-3des-sha/ah-no/comp-lzs-no/pfs"; //phase two hashing algorithms to use
accesslist = "permit ip any 192.168.10.0 255.255.255.0"; //firewall settings for pfsense lan
}
ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500",
"udp 0.0.0.0:4500 0.0.0.0:4500";
}
pfSense 配置
在 pfSense Web 界面中,转到 VPN > IPsec,然后单击添加
阶段1
一般信息
远程网关:输入 FritzBox 的 DynDNS 名称
第一阶段提案(认证)
对等标识符:输入 FritzBox 预共享密钥的 DynDNS 名称:输入强静态密钥。协商模式:主要(非激进)我的标识符:如果是 DynDNS,则使用专有名称;否则使用 pfsense 的静态公共 IP
第一阶段提案(加密算法)
您需要使用现代加密算法。下面我使用了 256 位 AES 和 SHA1(哈希)以及 DH Group 14(2048 位)。DH14 仅适用于 3600(不是 28800)的生命周期。
这导致以下 phase2ss 条目ipsec-fritzbox.cfg
:
mode = phase1_mode_idp;
phase1ss = "dh14/aes/sha";
高级选项
我这里没有改变任何东西。
阶段2
保存设置并添加具有以下配置的第 2 阶段条目。
一般信息
第 2 阶段提案(SA/密钥交换)
我使用了 ESP 和 AES(256 位)以及 3DES(加密)和 SHA1(哈希),生命周期为 3600 秒。这导致以下 phase2ss 条目ipsec-fritzbox.cfg
:
phase2ss = "esp-aes256-3des-sha/ah-no/comp-lzs-no/pfs";
高级配置
在此处添加 FritzBox 的本地 IP。
检查连接
配置完成后,您将在 pfSense 的状态 > IPsec 下看到状态:
在 FritzBox 中,查看系统下的日志条目。初始连接可能会失败,因为 FritzBox 重新连接到新 IP,需要将其广播到 DynDNS 服务。几分钟后,主仪表板中的连接状态应变为绿色。
这对我来说已经管用了一段时间了。欢迎提出任何意见或改进!
问题:
如有任何问题,请检查状态 > 系统日志 > IPsec,它为您提供来自 pfSense ipsec 的实时日志记录。
例如,我无法让 dh14 正常工作(而不是 dh1 或 dh2)。我可以通过使用 Sha1 作为哈希算法(而不是 sha512)、检查 3des(除了 aes)并将生命周期缩短至 3600(而不是 28800)来解决这个问题。
还请注意,如果两个站点都使用 DynDNS,则此设置会变得越来越复杂。事实上,mode = phase1_mode_idp;
只有使用静态远程站点才有可能进入。
注意事项:
如果有人让 dh14 与 Sha512 哈希(而不是 sha1)一起工作,并且不使用 3des,请添加评论。根据 FritzBox 文档,Sha512 或 Sha256 应该是可行的,但在第 1 阶段或第 2 阶段使用除 sha1 之外的 sha 的任何组合对我来说都不起作用。此外,我必须保持 3des 加密启用(建议 2),否则我将无法使用 dh14(没有 3des 只有在使用 dh1 或 dh2 时才有效)。
据我所知,FritzBox 仍然只支持 IKEv1。
阅读文档:
以下两个文档条目应该提供一些额外的知识: