最近,我在玩 pfSense,试图从外部访问我的内部资源(主要是我的丛书服务器),所以我制作了这个教程,教大家如何访问我的家庭网络。 我使用了官方的none但它有点过时,而且不包括 Linux/FreeBSD 非图形用户界面,所以我做了一些改动。 我将使用IPsec IKEv2 AES256/SHA256/MSChapV2/DH14在 pfSense 端(strongSwan IPsec 实现),客户端将使用各种 VPN 客户端。
VPN IPsec 的实现有很多不同的版本,因此即使是最轻微的更新也可能导致 VPN 失败。 我会写出每个配置的服务器/客户端版本,这样你就能知道它是否能正常工作。 如果你使用的操作系统或客户端版本不同,则可能无法正常工作。 我将对所有移动客户端只使用一种 pfSense 配置。 遗憾的是,自 2.4.2 起,pfSense 不支持多个移动客户端配置。
如何操作? 每个客户都会收到一份证书、一个用户名和一个密码。 证书对所有客户都是一样的,但用户名/密码则不同。
目录
佛跳墙 破解版
为了让 VPN 配置正常工作,我们需要一个证书颁发机构(CA)和一个服务器证书。 如果你已经有了它们,就可以跳过下面三部分,如果没有,我将教你如何创建它们。
佛跳墙 破解版
首先在系统 | 常规设置. 这就是我的 FQDN,稍后我将在证书和客户配置中使用这个 FQDN。
佛跳墙 破解版
从 pfSense 菜单转到系统认证 管理员. 点击添加然后您可以选择导入现有证书颁发机构或创建内部证书颁发机构. 在我的家庭实验室中,我已经有了一个现有的 CA(见此链接如何创建自己的 CA),但在本篇文章中,我将创建一个新的 CA。 输入一个描述性名称并选择创建内部证书颁发机构.
根据内部证书颁发机构部分,填写适合您的家庭/实验室/公司的值。 在我的案例中,我使用了2048 为密钥长度(比特)和sha256为摘要算法. 输入使用寿命我用的是 3650 天,即 10 年,然后填写表格的其余部分。 确保使用您的 FQDN 作为通用名称. 例如,我的 pfSense 盒子有一个分配给广域网接口的外部 IP,即 1.2.3.4。 此外,在 DNS 的某个地方,我将此 IP 解析为 mysweethome.mysweetdomain.com。 您必须将 mysweethome.mysweetdomain.com 设置为通用名称.
点击拯救完成后。
佛跳墙 破解版
从 pfSense 菜单转到系统认证 管理员. 点击进入证书选项卡,并选择创建内部证书.
对于内部证书部分,选择您刚刚创建的 CA,保持相同的钥匙长度和摘要算法并填写表格的其余部分,使其看起来像这样。
同样,对于通用名称选择 pfSense 的 DNS 名称。
对于证书属性部分,选择服务器证书不是用户证书并输入 pfSense 盒子的 FQDN 域名以及 IP。 IP 不是必须的,但这意味着在创建客户端配置时,可以指定 pfSense 的 IP,而不是使用 FQDN。
佛跳墙 破解版
证书就位后,请转到VPN | IPsec然后点击移动客户. 启用IKE 扩展,选择本地数据库为用户认证和没有为组身份验证.
对于客户端配置部分,请使用以下设置。 选中虚拟地址便笺l 并分配一个子网。 当客户连接时,该子网将被分配给客户。 在我的例子中,我有一个192.168.2.0/24子网。 我在 pfSense 后面的家庭子网是192.168.1.0/24因此,请确保 pfSense 后面的子网与 VPN 客户端的子网不重叠。 如果需要,可以提供一个DNS 默认域给 VPN 客户端。 例如,我的 iPhone 没有加入本地域,所以当我连接到 VPN 并想访问本地网络上的服务器时,我不必指定 FQDN。 它会自动添加。 此外,请确保提供以下列表DNS 服务器. 就我而言,前两个是本地域控制器,第三个是 Google DNS,以防前两个出现故障。 您还可以提供登录横幅,不过我从未在任何客户端上看到过。
佛跳墙 破解版
回到隧道掘进选项卡,并点击none. 填写第一部分,如下所示。
第二部分第 1 阶段提案(验证)请确保输入了 pfSense 的 FQDN。 该值必须与创建证书时使用的值相同。 对于我的证书选择刚刚创建的证书。
第三部分第 1 阶段提案(算法),选择AES256、SHA256和DH 第 14 组.
而对于高级选项请按照下面的截图进行设置。
佛跳墙 破解版
对于隧道的第二阶段,请使用这些设置。 在我的案例中,我选择网络和0.0.0.0/0.这意味着来自客户端的所有流量都将使用隧道。 例如,连接后,如果打开浏览器并在谷歌中输入 "我的 IP 是什么",就会得到 pfSense 盒子的外部 IP。 如果你选择局域网子网这样,只有连接到本地家庭网络的流量才会使用 VPN。 其他互联网流量将使用你所连接的网关。 例如,如果我使用连接到 VPN 的 iPhone 并使用 Verizon 网络,VPN 将正常工作,但如果我在浏览器中输入我的 IP,我将得到 Verizon 提供给我的外部 IP。
SA/Key Exchange 使用以下设置。
您不必根据高级配置.
佛跳墙 破解版
每个客户端都需要一个证书和一个用户名/密码组合。 您不能同时从两个不同的客户端使用相同的用户名和密码进行连接。 后面连接的客户端会踢掉前面的客户端。 因此,请转到VPN | IPsec并点击预共享密钥选项卡。 单击添加来添加一个唯一的用户。 确保选择EAP为秘密类型.这确定是您的用户名,预共享密钥就是你的密码。
佛跳墙 破解版
您还需要一条允许 IPsec 流量的规则。 在我的例子中,我将允许来自 VPN 客户端的所有流量。 转到防火墙规则并点击IPsec标签。
差不多,你必须创建一个类似这样的规则。
......还有这个。 不要更改显示高级.
完成后,就会出现如下截图。
佛跳墙 破解版
最后一步是导出证书。 您必须将此证书连同用户名和密码一起交给每个客户。 所有客户的证书都是一样的。 转到系统认证 管理员并点击喜欢标签。 在行动点击像太阳的图标,下载 PEM 格式的证书。 将该文件发送给你的用户,无论你觉得怎样发送合适。 不要在同一封电子邮件中发送证书、用户名和密码。 不要将它们存储在一起。 这就是最佳做法。)
好了,pfSense 介绍完了,我们来看看客户端。
佛跳墙 破解版
这些操作系统开箱即用。 不需要安装任何客户端,也不需要更新或服务包。 但是,必须进行一些更改。
佛跳墙 破解版
首先,您必须安装 pfSense 的证书,也就是您刚刚下载的证书。 将其传输到 Windows 客户端并双击。 证书显示后,点击安装证书.
选择本地机器.
选择将所有证书放入以下存储区,然后点击浏览并选择受信任的根证书颁发机构.
点击完成. 这时会弹出导入成功的提示。
佛跳墙 破解版
默认情况下,Windows 使用 DH Group-2。 这有点过时了,你稍后会看到 Android 版 佛跳墙 破解版 客户端已经放弃了对它的支持。 因此,我们必须告诉 Windows 使用带有 AES256 和 SHA256 以及 DH14 的 IKEv2。 请查看链接以获取更多信息(参见表 2)。 实际上,我们需要创建一个新的注册表项并重新启动。 因此,启动重新编辑并创建一个新的DWORD关键HKLM\SYSTEM\CurrentControlSet\Services\RasMan\Parameters.
键的名称是NegotiateDH2048_AES256其值为2.
重新启动。
佛跳墙 破解版
我们现在来创建 VPN。 启动powerhell并执行这些命令。 替换服务器地址参数,并加上 pfSense 的 FQDN。 有关这些命令的详细说明,请访问以下链接这里和这里.
Add-VpnConnection -Name "VPN2HOME" -ServerAddress "mysweethome.mysweetdomain.com" ` -TunnelType IKEv2 -AuthenticationMethod EAP -EncryptionLevel "Required" Set-VpnConnectionIPsecConfiguration -ConnectionName "VPN2HOME"; ` -AuthenticationTransformConstants SHA256128 -CipherTransformConstants AES256 ` -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -DHGroup Group14 -PfsGroup None -PassThru
按提示说 "Y",然后你就会看到这个。
如果您去您的网络连接然后,您将看到刚刚创建的 VPN 连接。
右击并选择连接/断开. 输入用户名和密码。
你很棒
如果您在命令提示符下执行ipconfig, 您将看到您的 IP 地址为 192.168.2.1。 这是我们为远程客户端分配的子网。 如你所见,我可以 ping 一个内部资源。
佛跳墙 破解版
如果出于某种原因想要删除证书,可以启动证书管理员作为开始 | 运行类型certmgr.msc然后在受信任的根证书颁发机构你会看到你的证书。 右键点击删除.
佛跳墙 破解版
iPhone 在未安装任何客户端的情况下也能正常工作。 我不确定早期版本的 iOS 是否可以工作,但根据以下信息苹果支持文档从 iOS 9.3 开始,您应该可以使用 AES256/SHA256/DH14。
佛跳墙 破解版
最简单的方法是将证书作为附件发送。 收到电子邮件后,只需点击即可。
在右上角,点击安装.
您会收到警告,点击安装再次点击右上角。
佛跳墙 破解版
点选设置然后一般. 向下滚动一点,直到看到虛擬專用網絡选择。
点选添加VPN配置.
选择 IKEv2类型输入描述并同时使用 pfSense 盒子的 FQDN服务器和远程ID.
根据认证部分,选择帐号用户认证然后输入用户名和密码。 完成后点击右上角的完成。
现在,您可以连接了。 将 "状态 "下的按钮向右滑动,一两秒后就可以连接了。
你会在屏幕上方看到一个 VPN 图标,就在手机信号强度图标旁边。
佛跳墙 破解版
如果要删除证书,请点击设置 | 常规然后滚动,直到看到虛擬專用網絡条目。 在右下方,你会看到一个条目,上面写着形象. 点击形象. 点击配置文件.
点选删除简介.
或者,您可以前往设置 | 常规 | 关于然后点击证书信任设置查看您的证书。
佛跳墙 破解版
Ubuntu 17.10 并非开箱即用,因此需要做一些改动。 其他客户端也一样,我们需要证书并启用一些库和插件。
佛跳墙 破解版
将 pfSense CA 证书传输到 Ubuntu 盒子中。 在我的例子中,我通过电子邮件发送了证书,然后在下载文件夹。 我们需要在证书存储区信任该证书。 在终端窗口中执行以下操作。 你只需键入高亮显示的内容,其余的都是输出结果。 差不多,我正在复制一个名为pfSense+CA.crt到名为/usr/local/share/ca-certificates第二条命令是更新 CA 证书。
sudo cp Downloads/pfSense+CA.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates 更新 /etc/ssl/certs 中的证书... 1 个已添加,0 个已删除;已完成。 运行 /etc/ca-certificates/update.d 中的钩子... 已完成。
佛跳墙 破解版
默认情况下,GNOME 网络管理器不支持 IKEv2,因此我们必须安装必要的库。 在命令提示符下安装网络管理员-Strongswan插件和额外插件库 (eap-mschapv2和电子身份)附带的libcharon-extra-plugins.
sudo apt-get install network-manager-strongswan libcharon-extra-plugins
如果我检查版本,看起来就是这样。
dpkg-query -l | grep swan ii libstrongswan 5.5.1-4ubuntu2.2 amd64 strongSwan 工具和加密库 ii libstrongswan-extra-plugins 5.5.1-4ubuntu2.2 amd64 strongSwan 工具和加密库(额外插件) ii libstrongswan-standard-plugins 5.5.5.1-4ubuntu2.2 amd64 strongSwan 与 NetworkManager 交互的插件 ii strongswan-tnc-base 5.5.1-4ubuntu2.2 amd64 strongSwan Trusted Network Connect's (TNC) - 基本文件 dpkg-query -l | grep charon ii libcharon-extra-plugins 5.5.1-4ubuntu2.2 amd645.1-4ubuntu2.2 amd64 strongSwan charon 库(额外插件) ii libcharon-standard-plugins 5.5.1-4ubuntu2.2 amd64 strongSwan charon 库(标准插件) ii strongswan-libcharon 5.5.1-4ubuntu2.2 amd64 strongSwan charon 库
佛跳墙 破解版
在右上角点击网络图标,然后选择VPN设置.
点击加号(+)符号来创建新的 VPN 连接。
选择IPsec/IKEv2 (strongswan).
然后填写下表。 如果无法输入密码,请单击标有红色箭头的图标,然后从提供的选项中选择一个来存储密码。
最后,点击滑块启用 VPN。 如果有任何问题,可以在以下网址查看日志/var/log/syslog.
佛跳墙 破解版
这是本地 CA 证书文件,因此只需删除ct下载的文件/etc/ssl/certs下载文件夹和/usr/local/share/ca-certificates/.
佛跳墙 破解版
我已经在 High Sierra 上测试过这种配置,但它应该适用于所有 OS X 10.x 版本。 像往常一样,我将从证书开始。
佛跳墙 破解版
将证书传输到 Mac,然后双击证书。 它会提示你输入管理员密码。 完成后钥匙扣将打开。 证书就存放在这里。 在系统并双击它。
你会看到证书不被信任,因此展开信任和变化使用此证书时自始终信任.
佛跳墙 破解版
去你的系统首选项并点击网络图标。
点击进入加号图标。
改变介面自虛擬專用網絡, VPN类型自IKEv2并为服务名称.
对于服务器地址和远程ID输入 pfSense 框的 FQDN 名称。 点击认证设置.
对于认证设置选择帐号并输入用户名和密码。 点击认可您将返回到上一个对话框,在该对话框中您可以单击连接.
佛跳墙 破解版
如果要删除证书,只需启动钥匙扣 (转到 | 实用工具 | 钥匙串访问.app),找到您的证书,右键单击并删除. 系统会提示您输入管理员密码。
佛跳墙 破解版
我在 Android 6.x 平板电脑和 strongSwan 客户端 v1.9.6 上测试了配置。 在我看来,只要使用该客户端,即使是 Android 5 系统也能使用 VPN。
佛跳墙 破解版
在设备上获取证书。 在我的例子中,我通过电子邮件发送证书,并使用 Firefox 浏览器访问基于网络的电子邮件。 我在下载文件夹。 你现在不必对证书做任何处理,只需记住它的位置即可。
佛跳墙 破解版
进入应用商店(Google Play),下载并安装 strongSwan 客户端。
佛跳墙 破解版
打开 strongSwan 客户端,点击右上角的三个竖点。
然后点击CA 证书.
点选none.
选择刚刚下载的 CA 证书。
点选进口证书.
导入后,返回并点击添加 VPN 配置文件. 填写表格,使其看起来像这样。 对于服务器输入 pfSense 框的 FQDN,选择 IKEv2 EAP forVPN类型输入用户名和密码,然后取消选中自动选择为CA 证书.
敲击选择 CA 证书,点击进口并选择已导入的证书。
点击拯救右上角,就可以连接了。
佛跳墙 破解版
我使用的 CentOS 7 客户端已启用防火墙并禁用了 SElinux。 你无需对防火墙做任何更改。
佛跳墙 破解版
标准软件仓库中没有 strongSwan,所以你必须先安装 EPEL。
yum install epel-release
然后安装 strongSwan 并启用它,使其在开机时启动。
yum install strongswan systemctl enable strongswan
佛跳墙 破解版
获取证书并将其置于/etc/strongswan/ipsec.d/cacerts. 我们需要证书中的 DN(区分名称)。 替换certfilename.crt证书文件的名称。
openssl x509 -noout -in /etc/strongswan/ipsec.d/cacerts/certfilename.crt -issuer
你会看到这样的内容
issuer= /C=US/ST=XY/L=Town/O=something/[电子邮件保护]/CN=whatever/OU=YX.
复制= /.
佛跳墙 破解版
转到/etc/strongswan和编辑ipsec.conf。确保配置文件如下所示。 替换对并输入 pfSense 盒子的 FQDN,在用户身份并将 DN 的值粘贴到右卡.
conn rw-base dpdaction=restart dpddelay=30 dpdtimeout=90 fragmentation=yes conn vip-base also=rw-base leftsourceip=%config conn ikev2-eap-mschapv2 also=vip-base keyexchange=ikev2 ike=aes256-sha256-modp2048! leftauth=eap-mschapv2 rightauth=pubkey right=mysweethome.mysweetdomain.com eap_identity=darth.vader rightca="C=US/ST=XY/L=Town/O=something/[电子邮件保护]/CN=whatever/OU=YX" rightsubnet=0.0.0.0/0 auto=add
编辑ipsec.secrets并输入您的用户名和密码。
# ipsec.secrets - strongSwan IPsec secrets file darth.vader : EAP "DeathStar01";
最后,启动连接。
systemctl restart strongswan strongswan up ikev2-eap-mschapv2
顺便说一下,您可以将ikev2-eap-mschapv2与虚拟专用网络在ipsec.conf文件(第 11 行),因此您可以按以下方式启动连接strongswan 佛跳墙 破解版.
你可以用......向下连接。
strongswan down ikev2-eap-mschapv2
现在应该可以 ping 内部资源了。 我无法使用 FQDN ping 内部资源,只能通过 IP。 CentOS/Fedora 是如何编译软件包的。 请参见链接.
我懒得进一步调查。
佛跳墙 破解版
FreeBSD 的通用内核已经配置了 IPsec。 我没有测试 FreeBSD 客户端是否在 NAT 后面,但我认为您应该重新编译通用内核并添加对 NAT_T 的支持。 虽然不是百分百确定,但这是我的待办事项之一。 因此,只有在 FreeBSD 盒子有公共 IP 的情况下,此配置才可能有效。
佛跳墙 破解版
从软件包中安装 strongSwan。
pkg install strongswan
让它在开机时启动。 在/etc/rc.conf.
strongswan_enable="是";
佛跳墙 破解版
获取证书并将其置于/usr/local/etc/ipsec.d/cacerts. 我们需要证书中的 DN(区分名称)。 替换certfilename.crt证书文件的名称。
openssl x509 -noout -in /usr/local/etc/ipsec.d/cacerts/certfilename.crt -issuer
你会看到这样的内容
issuer= /C=US/ST=XY/L=Town/O=something/[电子邮件保护]/CN=whatever/OU=YX.
复制= /.
佛跳墙 破解版
转到/usr/local/etc和编辑ipsec.conf。确保配置文件如下所示。 替换对并输入 pfSense 盒子的 FQDN,在用户身份并将 DN 的值粘贴到右卡.
conn rw-base dpdaction=restart dpddelay=30 dpdtimeout=90 fragmentation=yes conn vip-base also=rw-base leftsourceip=%config conn ikev2-eap-mschapv2 also=vip-base keyexchange=ikev2 ike=aes256-sha256-modp2048! leftauth=eap-mschapv2 rightauth=pubkey right=mysweethome.mysweetdomain.com eap_identity=darth.vader rightca="C=US/ST=XY/L=Town/O=something/[电子邮件保护]/CN=whatever/OU=YX" rightsubnet=0.0.0.0/0 auto=add
编辑ipsec.secrets并输入您的用户名和密码。
# ipsec.secrets - strongSwan IPsec secrets file darth.vader : EAP "DeathStar01";
最后,启动连接。
service strongswan restart ipsec up ikev2-eap-mschapv2
顺便说一下,您可以将ikev2-eap-mschapv2与虚拟专用网络在ipsec.conf文件(第 11 行),因此您可以按以下方式启动连接IPsec 佛跳墙 破解版.
你可以用......向下连接。
ipsec down ikev2-eap-mschapv2
现在应该可以 ping 内部资源了。
佛跳墙 破解版
谢谢你非常详细的分析。 这正是我在寻找的东西。 谢谢!
文章很好,非常感谢。
感谢您花时间撰写此文。 这是我发现的第一份最新、全面且开箱即用的指南。 我已经用 iPhone、Windows 和 Android 进行了测试。
我已经从我的博客链接到了这篇文章,希望可以。
我很高兴这篇文章对你有所帮助,而且你还链接了这篇文章。
在做了一切可能做的事情后,我得到了一个错误,一个映射组策略 Windows 10 的错误。
无法在 Win 10 上运行
你好,克里门特
文章写得非常好,非常详细,非常实际。
我同意大家的看法,这是我迄今为止在网上读到的最好的文章。
Windows 10 & 和 Mac OS Big Sur 的安装一切顺利,但我遇到的唯一问题是,在 Mac OS Sur 上,它可以连接,并从 VPN 收到 IP,但我在网络上没有流量,这意味着我无法 ping 远程网络上的任何东西,有什么办法吗?
谢谢