如何使用pfSense和OpenVPN设置远程VPN访问
Sam有超过10年的pfSense防火墙工作经验,并写了30多篇关于这个主题的文章。
使用OpenVPN实现安全的远程网络访问
在本文中,您将学习如何使用pfSense上的OpenVPN设置对网络的远程访问。
使用VPN或虚拟专用网络是远程访问家庭或企业网络的最安全的方式。VPN通过加密网络和远程客户端之间发送的所有通信量提供了强大的安全性。
由于pfSense是开源的,并且是免费的,所以这个项目不会花费你任何东西来完成。
本指南假设您已经运行了一个功能正常的pfSense防火墙。如果你还没有,你可以很容易地造一个使用旧电脑,甚至使用VirtualBox运行虚拟电脑。
OpenVPN配置向导
在pfSense上配置OpenVPN的最简单方法是使用内置VPN配置向导。该向导将指导您完成创建证书颁发机构、颁发服务器证书和配置OpenVPN服务器设置的过程。
要启动配置,请在web界面中打开VPN菜单并选择OpenVPN,然后单击向导选项卡。
对于配置向导的第一步,您需要选择身份验证后端类型。OpenVPN提供了三种不同的身份验证方法。
本地用户访问是最简单的方法,因为它不需要外部身份验证服务器。
OpenVPN身份验证后端
身份验证后端 | 描述 |
---|---|
本地用户访问 |
使用pfSense本地用户管理器管理VPN用户。 |
LDAP |
使用Windows活动目录服务管理用户访问。 |
半径 |
管理外部RADIUS认证服务器的用户。 |
创建证书颁发机构
下一个配置步骤是创建用于颁发证书的证书颁发机构。如果已经在pfSense中配置了现有CA,您可以选择将其用于OpenVPN,而不是创建新的CA。
如果您正在创建一个新的CA,那么您将需要填写向导中的所有字段才能继续。
默认的2048位密钥长度已经足够了,但是如果需要更多的安全性,您可以使用更长的长度密钥。较大的密钥大小更安全,但需要更多的CPU资源。
创建服务器证书
创建证书颁发机构后,必须为OpenVPN颁发服务器证书。同样,您需要选择一个满足安全需求和CPU资源的密钥大小。
默认证书生存期为3650天(10年)。对于更高的安全环境,您应该考虑减少证书生存期。对于家庭用户,默认的生存期是正常的。
OpenVPN常规设置
在常规设置中,您需要选择OpenVPN将侦听上的连接的接口。在大多数情况下,这将是连接到internet的外部接口(WAN)。
大多数用户推荐的协议是IPV4上的UDP。UDP的速度比TCP快,但由于无法保证数据包的传递,因此可靠性较低。TCP将提供更高的可靠性,但由于存在更多的协议开销,因此速度可能较慢。
除非您特别需要使用其他端口,否则请使用默认侦听端口1194。
加密设置
加密设置可以全部保留为默认设置,高级用户可能需要根据其特定的安全需要调整这些设置。
如果您正在使用硬件加密加速器,请确保在本节中选择它。
OpenVPN隧道设置
隧道设置部分中最重要的两个设置是隧道网络和本地网络。
隧道网络
隧道网络应为网络或pfSense防火墙路由表上当前不存在的新网络。当客户端连接到VPN时,他们将在此网络中收到一个地址。例如,您可以输入10.0.0.0/24,只要您的网络上还不存在。
本地网络
在本地网络框中输入客户端将连接到的网络地址。默认情况下,pfSense使用192.168.1.0/24作为本地网络,因此大多数用户将输入该地址作为网络地址,除非他们指定了其他网络。
隧道段中的其他设置可以保留默认设置。
开放vpn客户端设置
当OpenVPN客户端连接到网络时,客户端设置部分中的设置将被分配给他们。
大多数用户只需在“客户端设置”部分输入DNS服务器即可。如果您也将pfSense用作本地DNS服务器,则需要输入pfSense防火墙的本地地址(通常为192.168.1.254)。如果您使用的是单独的DNS服务器,您也可以在此处输入它们。
也可以为客户端提供默认的DNS域和NTP服务器。
防火墙规则
OpenVPN向导的一个很好的特性是它能够自动生成必要的防火墙规则,以允许连接到VPN服务器。在大多数基本设置中,应同时启用这两个选项。如果不使用自动规则,则必须手动创建规则以允许客户端连接到VPN。
从客户端到服务器的流量
启用此选项将自动生成防火墙规则,以允许从internet上任何位置的客户端到OpenVPN服务器的传入连接。
通过VPN来自客户端的流量
该选项将创建一个自动防火墙规则,允许连接到VPN的客户端到本地网络的任何地方。
向导完成
输入所有必需的设置后,安装向导完成。单击“完成”将所有设置应用于pfSense。
创建带证书的VPN用户
完成OpenVPN配置后,您就可以开始添加VPN用户了。如果在配置向导期间选择了本地用户访问选项,则可以使用pfSense用户管理器(系统菜单\用户管理器)添加用户。
输入用户名、密码,然后单击证书复选框以生成用户证书。确保在描述性名称字段中设置名称,然后单击保存按钮以完成添加用户的过程。
安装OpenVPN Client导出包
我建议安装pfSense中可用的OpenVPN客户端导出包,以使设置客户端过程更容易。
使用在系统菜单下找到的pfSense包管理器安装包。在包管理器的搜索词框中输入openvpn-client-export,然后单击install。
安装包后,OpenVPN菜单中将出现一个名为client export的新选项卡。
客户端连接行为
在“客户端导出设置”中,可以调整将影响客户端连接行为的多个设置。您可能需要在此处修改的主要设置是主机名解析字段。默认情况下,此字段设置为运行OpenVPN的接口的IP地址。如果要输入DNS名称,如动态DNS主机名.
在进行任何更改之后,单击“保存为默认”按钮来存储设置。
下载OpenVPN Client包
配置客户端导出设置后,可以使用该实用程序导出客户端配置文件和绑定的客户端。
客户端导出工具支持多种不同的操作系统和客户端,包括Windows、Mac、Android和iOS。
测试VPN连接
导出客户端包后,就可以开始测试连接性了。要从Windows测试连接,只需安装客户端软件包并运行安装向导。
使用OpenVPN客户端导出实用程序的最佳部分是,客户端将自动配置为连接到您的VPN。你只需要输入你的用户名和密码就可以连接了。
OpenVPN连接移动客户端
Android或iOS用户可以通过app store安装OpenVPN connect软件包轻松连接。安装应用程序后,生成客户端导出设置文件并将其传输到移动设备。打开设置文件将自动打开OpenVPN应用程序并导入配置文件。
双因素身份验证
为了增加安全性,我强烈建议实现双因素身份验证。双因素身份验证(2fa)要求使用密码和第二个密码登录,该密码通常在短时间后过期,或者是一次性密码。
设置2fa是一个复杂的主题,不在本文讨论范围之内,但我将在下面提供一些建议。
- Duo移动Radius代理
- RCDEV(最多40个用户免费)
据作者所知,这篇文章准确、真实。内容仅用于信息或娱乐目的,不能替代商业、金融、法律或技术事务中的个人顾问或专业建议。
©2018 Sam Kear
评论
德文德拉Kr公司2020年5月19日:
你好,我有一个问题,OPENVPN工作正常,但是VPN用户无法连接本地网络,如果你有解决方案请帮助我。
克里斯2019年11月28日:
优秀的导游-谢谢!
迈赫迪2019年6月30日
我有个问题,
安装pfsense和config之前是否需要安装openvpn服务器?
或者pfsense集成了openvpn服务器,我们只需要配置它?
谢谢
塞2019年5月12日:
伟大的向导。
提供的资源是樱桃的奖励。
Duo真的很有趣,我想为我的慈善事业做志愿者!
谢谢你的灵感!
干杯
塞
ArkMighty2019年4月17日:
解决了我的dns问题,我的pfsense dns服务器不接受dns请求从TLS。在dns解析器部分勾选复选框,它工作。非常感谢你,山姆,你是伟大的向导。
ArkMighty2019年4月15日:
非常感谢,伟大的导游。但是,当我连接到OpenVPN时,我无法访问internet。我可以从局域网ping到openvpn客户端,也可以从openvpn客户端访问pfsense。请帮忙。
尼钦2019年4月12日:
谢谢工作得很有魅力!!
亚历克斯2019年4月2日:
这篇文章很贴切。
阿里2019年1月29日:
你好
我可以在pfsense上设置openvpn的时间段吗?
例如,连接在1小时后超时,需要重新连接
帕科2018年12月4日:
谢谢,很好
菲利普2018年12月1日:
@ Bos
我也有同样的问题。
我可以连接到我的局域网的GW地址,但仅此而已。
博斯2018年10月30日:
它可以工作,但我不能访问局域网上的任何东西,客户端没有网关
苏尼尔旁遮普省2018年10月3日:
伟大的写。当我的家人使用公共WiFi时,我想用这个创建一个私人VPN。但是,我和@Lgrier有同样的问题。我如何允许客户端从pfSense VPN到互联网?
Lgrier2018年9月07日:
你好,山姆-伟大的导游!效果很好。我可以毫无问题地连接。唯一的问题是,连接到VPN服务器时,我无法访问网站。我没有在fw日志中看到任何明显的东西。。。知道从哪里开始诊断问题吗?
扬尼克2018年8月21日:
它可以在PC上运行,但不能在2.4.3版本的手机上运行。
OpenVPN连接移动客户端在“连接”时卡住,在“连接超时”时结束。
在旧服务器上(仅限于x86),我以前的版本(2.3.2)一切正常。
有什么想法吗?
米奇2018年7月26日:
这个很好用!!非常感谢。
我们遇到了一个后续问题。
第一个通过身份验证并连接到vpn的用户工作得很好,可以ping本地网络。
当多个用户连接到该VPN时,验证通过,但无法ping通。
有什么想法吗?
山姆Kear(作家)2018年7月16日从堪萨斯城发来:
@卡兰
然后在笔记本电脑或移动设备上安装VPN客户端。一旦VPN客户端连接上,你就可以像平常一样从网络内部访问web GUI了。
kalane2018年7月16日:
所以在完成所有这些步骤之后,如果我在其他国家,例如,如何访问我的web gui?
钼2018年7月11日:
非常感谢这是非常有用的,我不能从我的局域网外连接我只能在家时连接,不能在屋外任何帮助
山姆Kear(作家)2018年7月11日从堪萨斯城发来:
@fotidim
谢谢你指出这一点!我在文章中添加了一个注释,关于为证书输入描述性名称。
福蒂丁2018年7月10日:
神奇的向导。一个小的改进是,当单击“证书复选框以生成用户证书”时,需要输入“描述性名称”,否则不会创建证书而不给出任何错误。
西斯交易员2018年7月7日:
写得真棒!我将设置一个测试环境。