pfSense book之OpenVPN(一)

文章目录

OpenVPN

  • OpenVPN和IPv6
  • OpenVPN配置选项
  • 使用OpenVPN服务器向导进行远程访问
  • 配置用户
  • OpenVPN客户端安装
  • 站点到站点示例(共享密钥)
  • 站点到站点示例配置(SSL / TLS)
  • 检查OpenVPN客户端和服务器的状态
  • 允许流量到OpenVPN服务器
  • 允许流量通过OpenVPN隧道
  • OpenVPN客户端和Internet访问
  • 分配OpenVPN接口
  • NAT与OpenVPN连接
  • OpenVPN和多WAN
  • OpenVPN和CARP
  • 桥接OpenVPN连接
  • 自定义配置选项
  • OpenVPN和Web服务器共享端口
  • 通过RADIUS控制客户端参数
  • OpenVPN故障排查

OpenVPN是一种开源的SSL VPN解决方案,可用于远程访问客户端和站点到站点的连接。 OpenVPN的客户端支持众多操作系统,包括所有的BSD,Linux,Android,Mac OS X,iOS,Solaris,Windows 2000及更新版本,甚至一些VoIP手机。

每个OpenVPN连接,无论是远程访问还是站点到站点,都由服务器和客户端组成。在站点到站点VPN中,一个防火墙充当服务器,另一个充当客户端。哪个防火墙拥有这些角色并不重要。通常,主防火墙的位置将为其防火墙配置为客户端的所有远程位置提供服务器连接。这在功能上等同于配置为连接到远程位置防火墙上运行的服务器的客户端的主要位置的相反配置。实际上,服务器几乎总是在中央位置运行。

有几种可与OpenVPN一起使用的身份验证方法:共享密钥,X.509(也称为SSL / TLS或PKI),通过本地,LDAP和RADIUS的用户身份验证,或者X.509与用户的组合认证。对于共享密钥,将生成将在双方都使用的单个密钥。 SSL / TLS涉及使用一组可信的证书和密钥。用户认证可以使用或不使用SSL / TLS进行配置,但由于提供的安全性提高,因此在可能的情况下请优先使用它。

本章将介绍OpenVPN实例的设置,以及OpenVPN远程访问服务器向导的运行过程,客户端配置以及多个站点到站点连接方案的示例。

注意:尽管OpenVPN是SSL VPN,但商用防火墙厂商普遍认为它不是“无客户端”的SSL VPN。 OpenVPN客户端必须安装在所有客户端设备上。 事实上,没有VPN解决方案是真正的“无客户端”,这个术语只不过是一个营销策略。

有关pfSense中可用的各种类型VPN的一般性讨论及其优缺点,请参阅虚拟专用网络。

OpenVPN和证书

使用证书是运行远程访问VPN的首选方式,因为它允许为单个机器撤销访问权限。 使用共享密钥,必须为每个客户端创建唯一的服务器和端口,或者必须将相同的密钥分发给所有客户端。 前者成为管理的噩梦,而后者在妥协的关键时刻会产生问题。 如果客户机被盗用,被盗或丢失,或者需要吊销,共享密钥必须重新发放给所有客户。 使用PKI部署时,如果客户端遭到VPN,或因任何其他原因需要撤销访问权限,只需撤销该客户端的证书即可。 其他客户不受影响。

pfSense GUI包含一个与OpenVPN完全集成的证书管理界面。 证书颁发机构(CA)和服务器证书在系统> 证书管理、证书管理器中进行管理。 用户证书也在Web界面中进行管理,作为系统>用户管理的内置用户管理器的一部分。 除默认管理员帐户以外,可以为防火墙本地创建的任何用户帐户生成证书。 有关创建证书颁发机构,证书和证书撤销列表的更多信息,请参阅证书管理。

OpenVPN和IPv6

OpenVPN可以将站点到站点的隧道连接到IPv4地址或IPv6地址,并且IPv4和IPv6流量可以同时在OpenVPN隧道内传递。 IPv6在站点到站点和移动客户端均受支持,并且可用于将IPv6发送到仅具有IPv4连接的站点。 为了确保移动客户端支持IPv6,请从OpenVPN客户端导出插件中获取客户端软件,或者下载基于OpenVPN 2.3或更高版本的客户端。

OpenVPN 配置选项

本节介绍OpenVPN的所有可用选项以及典型使用方式。 后续部分介绍了使用OpenVPN配置站点到站点和远程访问VPN的示例,使用最常见的选项和最少的配置。

服务器配置选项

这些选项可用于OpenVPN服务器实例的一种或多种模式,可通过VPN> OpenVPN,服务器选项卡进行管理。

禁用此服务器

选中此框并单击保存以保留配置,但不启用服务器。此实例的进程将被停止,并且所有对等端/客户端都将与此服务器断开连接。任何其他活动服务器都不受影响。

服务器模式

这是服务器的角色,它指定路由器或用户如何连接到此服务器。 更改此选项还会影响页面其余部分显示的选项,因此只显示相关选项。

点对点 (SSL/TLS):
由SSL / TLS保护的本地和远程网络之间的连接。 这种选择提供了更高的安全性以及服务器在使用1:多样式设置时将配置命令推送到远程对等路由器的功能。 远程对等路由器也可以撤消证书,以便在受到威胁时删除访问。
点对点 (共享密钥):
本地和远程网络之间的连接由两个节点上配置的单个共享密钥保护。 这种选择更容易设置,但不那么安全。 如果共享密钥受到破坏,则必须生成新密钥,然后使用旧共享密钥将其复制到任何路由器或客户端。 在这种模式下,每个客户端都需要一个单独的服务器实例。
远程访问 (SSL/TLS):
此选项是一个带有每用户X.509证书的移动客户端设置。 与对等SSL / TLS连接类型一样,使用此方法可提供更高的安全性以及服务器将配置命令推送到客户端的能力。 移动客户端也可以在密钥泄露的情况下撤销密钥。
远程访问 (用户认证):
客户端访问服务器不使用证书,但要求最终用户在建立连接时提供用户名和密码。 除非通过LDAP或RADIUS在外部处理认证,否则不推荐这种方式。
远程访问 (SSL/TLS + 用户认证):
提供最安全的选择。 它不仅可以获得其他SSL / TLS选择的好处,而且在连接时还需要客户端的用户名和密码。 客户端访问权限不仅可以通过撤销证书,也可以通过更改密码来删除。 另外,如果没有立即发现泄密的密钥,危险就会减少,因为***者不太可能拥有密钥和密码。 当使用Open***向导时,这是在该过程中配置的模式。

协议

可以选择TCP或UDP或其IPv6启用对应项TCP6或UDP6。 OpenVPN服务器实例当前只能绑定到IPv4或IPv6,但不能同时绑定。 UDP是运行OpenVPN的最可靠和最快的选择,并且应尽可能使用它。 在极少数情况下,可以使用TCP来解决限制问题,例如通过在TCP端口443上运行Open***服务器来绕过某些防火墙。

隧道传输时,无连接协议(如UDP)始终可取。 TCP是面向连接的,保证传输,因此丢失的数据包将被重新传输。 这听起来似乎是一个好主意,但TCP重传会导致在重负载的Internet连接或具有一致的数据包丢失的情况下性能明显降低。

TCP流量频繁地存在于隧道内,并且不希望重新传输封装的VPN流量的丢失分组。 在TCP环绕TCP的情况下,例如使用TCP作为传输协议的VPN隧道,当数据包丢失时,外部和内部丢失的TCP数据包都将被重新传输。 偶尔发生这种情况将不明显,但经常性丢失将导致性能明显低于UDP。 如果隧道内的流量需要可靠的传输,它将使用TCP等协议来确保并处理其自身的重传。

设备模式

OpenVPN可以以两种设备模式之一运行:tun或tap:

tun: 适用于OSI第3层,并在点对点接口上执行路由。
tap: 可以在OSI第2层工作,并且可以根据需要执行路由和桥接。

注意:并非所有的客户端都支持tap模式,使用tun更稳定,支持更广泛。 具体而言,Android和iOS上的客户端应用程序大多支持tun模式。 一些Android和iOS版本的OpenVPN应用需要root设备或越狱才能支持Tap,但对于大多数用户而言,这样做的后果可能有点过高。

接口

选择OpenVPN服务器实例将监听传入连接的接口,VIP或故障转移组。这也控制来自服务器的流量将从哪个接口退出。

接口的下拉列表中列出了几种类型的选项,其中一些具有特殊行为或用例:

Interfaces: OpenVPN将绑定到接口地址。如果接口是动态的,比如DHCP,OpenVPN会自动绑定到新地址,如果它改变的话。
VIPs: OpenVPN将只绑定到指定的VIP(IP别名或CARP类型)
Gateway Groups: 为了与故障转移组一起使用,Open***将绑定到组中当前处于活动状态的接口的地址。如果该接口网关变得无法访问,则将使用下一个接口。
Localhost: 对于多WAN部署非常有用,绑定到本地主机,利用端口转发来接受来自多个接口和/或端口的连接,是提供冗余OpenVPN连接的一种通用方式。
Any: 绑定到每个接口上的每个地址。虽然诱人,但不推荐使用此选项。与UDP一起使用时,对Internet客户端的回复将始终退出默认网关WAN,这可能不合需要。

本地端口

本地端口是OpenVPN将用来侦听的端口号。防火墙规则需要允许通信到此端口,并且它必须在客户端配置中指定。每个服务器的端口对于每个接口都必须是唯一的。

描述

输入此服务器配置的说明,以供参考。

加密设置

本部分控制VPN流量如何加密和验证

共享密钥

使用共享密钥时,请选中自动生成共享密钥框来创建新密钥,或者取消选中该复选框,粘贴来自现有OpenVPN隧道的共享密钥。 当自动生成密钥时,稍后返回到此通道的编辑页面,来获取可以复制到远程路由器的密钥。

TLS认证

TLS或传输层安全性提供会话身份验证以确保客户端和服务器的有效性。 如果需要,请勾选此框以启用TLS数据包的验证。 如果没有现有的TLS密钥,则保留自动生成共享TLS身份验证密钥。 如果密钥已存在,请取消选中该选项,然后将其粘贴到提供的输入框中。 当自动生成密钥时,稍后返回到此通道的编辑屏幕来获取可以被复制到远程路由器或客户端的密钥。

注意:在使用SSL / TLS模式时,我们强烈建议您也使用TLS身份验证。除了带来的额外安全优势外,TLS密钥还有助于防止某些基于SSL的VPN,如Heartbleed。

对等证书颁发机构

选择此处用于为此OpenVPN服务器实例签署服务器证书的证书颁发机构。 如果没有出现在此列表中,请首先在系统>证书管理,CAs选项卡上导入或生成证书颁发机构。

对等证书吊销列表

此可选字段用于此隧道使用的证书吊销列表(CRL)。 CRL是从给定CA制作的证书列表,这些证书不再被视为有效。 这可能是由于证书被盗用或丢失造成的。可以从系统>证书管理,证书吊销选项卡创建或管理CRL。

服务器证书

必须为每个OpenVPN服务器实例选择服务器证书。如果没有出现在此列表中,请先在系统>证书管理,证书选项卡上导入或生成证书颁发机构。

DH参数长度

Diffie-Hellman(DH)密钥交换参数用于建立安全通信信道。 它们可以随时被重新生成,而不是特定于OpenVPN实例。 也就是说,当导入现有的OpenVPN配置时,这些参数不需要从以前的服务器复制。 所需DH参数的长度可以从下拉框中选择,1024,2048或4096。

注意:由于生成DH密钥涉及大量计算,因此使用每个密钥类型的预先生成的集合。可以使用以下shell命令手动生成新的DH参数:

# /usr/bin/openssl dhparam 1024 > /etc/dh-parameters.1024
# /usr/bin/openssl dhparam 2048 > /etc/dh-parameters.2048
# /usr/bin/openssl dhparam 4096 > /etc/dh-parameters.4096

加密算法

用于此连接的加密算法。默认值是AES-128-CBC,这对于大多数情况来说都是很好的选择。

认证摘要算法

选择信息摘要算法,用于入站数据包的HMAC验证。

注意:未指定此选项时OpenVPN默认为SHA1,因此除非双方都设置为已知值,否则请在此处使用SHA1。

硬件加密

如果可用,该选项控制OpenVPN将使用哪个硬件加密加速器。如果未指定,OpenVPN将根据操作系统中的可用内容自动选择。

如果此防火墙设备具有硬件加密加速器,请选择BSD Cryptodev Engine,或者如果它显示在列表中,请选择特定设备。 大多数加速板使用BSD cryptodev引擎,所以如有疑问,请选择该引擎。 该设置将允许OpenVPN利用硬件加速。 还必须选择加速器支持的加密算法。

证书深度

此选项在验证失败之前限制证书链的长度。 这默认为One(客户端+服务器),因此如果以某种方式生成了未经授权的中间CA,由流氓中间件签名的证书将无法验证。 如果需要链接中间体,则可以提高此限制。

严格匹配User-CN

对于SSL / TLS +User认证服务器,启用时,此选项强制用户提供的用户名和其用户证书的通用名称之间匹配。 如果两者不匹配,则连接被拒绝。 这可以防止用户将他们自己的凭证用于其他人的证书,反之亦然。

隧道设置

隧道设置部分管理服务器和客户端之间的通信流量,包括路由和压缩。

IPv4/IPv6 隧道网络

这些是连接时分配给客户端的地址池。 服务器的OpenVPN配置结束时将使用该池中的第一个地址作为连接的结尾,并根据需要为连接的客户端分配额外的地址。 即使连接两个现有的远程网络,这些地址也可用于隧道端点之间的直接通信。 可以选择任何子网,只要它不在本地或任何远程站点使用。 可以输入IPv4隧道网络和IPv6隧道网络中的一个或两个。

注意:目前,OpenVPN因为自身的限制会阻止只配置IPv6隧道网络的运行。定义IPv6隧道网络时,即使未使用,也必须指定IPv4隧道网络。

对于使用IPv4的点到点SSL / TLS服务器,IPv4隧道网络大小可以改变服务器的行为方式。 如果为IPv4隧道网络输入xxxx / 30,则服务器将使用对等模式,就像共享密钥一样:它只能有一个客户端,不需要特定于客户端的覆盖或iroutes.,但也不能推送路由或设置给客户。 如果使用大于该值的IPv4隧道网络(例如x.x.x.x / 24),服务器将接受多个客户端并可以推送设置,但确实需要iroutes。

桥接选项

在使用分流模式时,会显示其他选项,用于控制OpenVPN中的桥接行为和客户端地址分配。这些都在桥接OpenVPN连接中介绍。

重定向网关

当选择重定向网关选项时,服务器会向客户端推送消息,指示他们通过VPN隧道转发包括互联网流量在内的所有流量。 这只适用于隧道网络大于/ 30子网的SSL / TLS模式。

IPv4/IPv6本地网络

这些字段指定VPN客户端可以访问哪些本地网络(如果有)。 这些网络的路由被推送到连接到该服务器的客户端。 如果需要多个特定系列子网的路由,请输入以逗号分隔的子网,例如, 192.168.2.0/24,192.168.56.0/24。

此功能依赖于将路由推送到客户端的能力,因此对于IPv4,只有在大于/ 30的隧道网络正在使用时才在SSL / TLS中有效。 如果未设置类似的太小掩码,它将始终适用于IPv6。

IPv4/IPv6远程网络

此选项仅在使用点对点类型连接时出现,并且不适用于移动客户端。 路由表条目被添加到指定子网的防火墙中,这些子网将流量转交给这个OpenVPN实例进行处理。 如果需要多个远程网络子网,请输入用逗号分隔的子网,例如, 192.168.2.0/24,192.168.56.0/24。

并发连接

指定在任何给定时间可能同时连接到此OpenVPN服务器的客户端数量。这是所有连接客户端的总量限制,而不是每个用户的设置。

压缩

启用压缩时,通过Open***连接的流量将在加密前被压缩。 这可以节省带宽使用,但会增加服务器和客户端的CPU利用率。 通常这种影响是较小,在Internet上,压缩功能几乎可以用在任何OpenVPN上。

对于高速连接,例如在LAN上使用OpenVPN,高速低延迟WAN或本地无线网络,这可能是不需要,因为压缩所增加的延迟可能比传输流量所节省的延迟更多。 如果几乎所有通过OpenVPN连接的流量都已被加密(例如SSH,SCP,HTTPS等许多其他协议),则不要启用LZO压缩,因为加密数据不可压缩,相比不压缩,LZO压缩会导致稍微更多的数据转移。 如果VPN流量几乎完全是已压缩的数据,情况也是如此。

这个选择器控制这个OpenVPN实例的LZO压缩处理。 有四种不同的设置。

No Preference: 完全忽略OpenVPN配置中的压缩指令。不会执行压缩,但这可能会被其他方法覆盖,如特定于客户端的覆盖或高级选项。
Disabled – No Compression:
禁用配置中的压缩
Enabled with Adaptive Compression:
通过定期测试启用压缩,以确保流量能够被压缩。 如果压缩不是最佳的,它将被禁用,直到再次测试。 这个选项可以达到最佳平衡,因为它会在数据压缩时对数据进行压缩,但在数据阻碍性能时不压缩数据。
Enabled without Adaptive Compression:
启用压缩功能,无需测试流量。

服务类型

启用此选项时,OpenVPN将设置隧道数据包的服务类型(TOS)IP标头值以匹配封装的数据包值。 这可能会导致一些重要的流量通过中间跳跃在隧道上得到更快的处理,这是以一些小的信息披露为代价的。

最常见的例子是VoIP或视频流量。 如果TOS bit设置为反映流量的优先级,它可以帮助沿路径的QoS,但是有人拦截流量可以看到TOS位,并获得有关隧道内流量内容的一些知识。 对于那些依赖TOS bits进行QoS的人来说,其好处可能会超过信息泄漏。

客户端间通信

该选项控制连接的客户端是否能够相互通信。 要允许这种行为,请设置选项。 未选中时,客户端只能将流量发送到服务器或服务器以外的目标,例如路由网络或Internet。

通常在远程访问的部署中,客户端不需要互相访问,但有些情况下可以提供帮助。 一个例子是远程Web开发人员在他们的本地系统上一起工作并运行测试服务器。 激活此选项后,他们可以到达另一个测试服务器进行协作开发。

重复连接

默认情况下,OpenVPN会将来自其隧道网络的IP地址与给定会话的特定证书或用户名相关联。 如果再次连接相同的证书,则会为其分配相同的IP地址,并断开第一个客户端的连接,或者导致两个客户端都不会收到正确数据的IP冲突。 这主要是出于安全原因,所以同一证书不能被多人同时使用。 我们建议为每个连接用户使用一个唯一的证书。 否则,如果客户受到威胁,无法单独撤销该客户端,需要重新向所有共享相同证书的客户端颁发证书。

如果在多个位置使用相同证书的设置是绝对要求且无法避免,请选中“重复连接”以允许使用相同证书或用户名的多个客户端的非标准行为。

禁用 IPv6

勾选后,OpenVPN服务器将禁用IPv6流量转发。

客户端设置

这些设置与连接到此服务器的客户端行为方式有关。

动态 IP

选中此框会将浮动配置选项添加到OpenVPN配置中。 这允许客户端在他们的IP地址改变时保留他们的连接。 类似于IPsec中IKEv2的MOBIKE。 对于经常更改IP的Internet连接的客户端或通常在不同Internet连接之间移动的移动用户,请选中此选项以实现稳定的连接。 如果客户端IP是静态的或很少发生更改,则不使用此选项以提高安全性。

地址池

当启用此选项时,服务器将为隧道网络选项指定的子网中的客户端分配虚拟适配器IP地址。 未经检查的IP地址不会自动分配,客户端必须在其客户端配置文件中手动设置自己的静态IP地址。 除少数情况外,这个选项一般都会启用。

拓扑

默认情况下,pfSense 2.3和更高版本的OpenVPN在使用tun模式时优先考虑子网的拓扑风格。 此样式仅为每个客户端分配一个IP地址,而不是每个客户端的隔离子网。 这是使用tap设备模式时唯一可用的样式。

当选择较旧的net30拓扑时,OpenVPN会为每个连接的客户端分配一个/ 30 CIDR网络(四个IP地址,两个可用)。 这种风格有更长的历史,但可能会让管理员和用户感到困惑。

“拓扑”选项仅仅在向IPv4上使用tun模式的客户端提供虚拟适配器IP地址时相关。 一些客户甚至可能需要IPv6,例如OpenVPN Connect,但实际上IPv6始终以子网拓扑运行,即使IPv4使用net30也是如此。 OpenVPN版本2.1.3或更新版本需要使用子网拓扑,并且OpenVPN 2.3也对其进行了重大修复,因此使用当前的OpenVPN客户端版本非常重要。

注意

由于OpenVPN项目已宣布net30风格已过时,pfSense中的默认设置已更改为子网,表明它将在未来版本中删除。

但是,请注意,如果使用此选项,某些非常老的客户端可能会中断,例如较早版本的OpenVPN(在10年前发布2.0.9之前),带有较旧tun / tap驱动程序的Windows版本或客户端,如 Yealink电话。 使用子网拓扑时,务必确保客户端和关联的驱动程序是最新的。

DNS 默认域

选中后,会出现一个字段,指定要分配给客户端的DNS域名。 要确保名称解析适用于使用DNS名称解析的本地网络上的主机,请在此处指定内部DNS域名。 对于Microsoft Active Directory环境,这通常是Active Directory域名。

DNS 服务器

选中后,最多可以输入四个DNS服务器供客户端连接到VPN时使用。 对于Microsoft Active Directory环境,这通常是Active Directory域控制器或DNS服务器,用于通过OpenVPN连接时进行正确的名称解析和身份验证。

强制DNS缓存更新

选中时,此选项将向Windows客户端推送一组命令,以便刷新其DNS并重新启动缓存,以改进客户端从VPN处理更新后的DNS服务器。

NTP服务器

选中时,可以设置一个或两个NTP服务器来同步客户端上的时钟。它可以是IP地址或FQDN。

NetBIOS 选项

当选中“启用TCP / IP上的NetBIOS”时,将出现其他几个NetBIOS和WINS相关选项。如果该框未选中,这些设置将被禁用。

节点类型

NetBIOS节点类型控制Windows系统在解析NetBIOS名称时的功能。通常没有办法接受Windows的默认设置。

可用的选项包括:

b-node: 使用广播进行NetBIOS名称解析。
p-node: 点对点名称查询到WINS服务器。 WINS一直被弃用,所以这个选项在现代Windows网络中没有用。
m-node: 广播然后查询名称服务器。类似于B节点,但会回退到DNS。
h-node: 先查询名称服务器,然后使用广播。 此选项最有可能在具有适当功能DNS的当前网络中取得成功。
范围ID

NetBIOS范围ID为TCP / IP上的NetBIOS提供扩展的命名服务。 NetBIOS作用域ID将单个网络上的NetBIOS通信隔离为仅具有相同NetBIOS作用域ID的节点。

WINS服务器

选中此框可以定义两台WINS服务器,为访问和浏览VPN上的NetBIOS资源的客户端提供名称解析。 WINS在很大程度上已被弃用并且不再使用,所以在大多数现代环境中已经不太可能需要。

启用自定义端口

勾选后,可以指定一个非默认管理端口用于OpenVPN客户端导出插件的OpenVPNManage功能。 如果在使用该接口的单个客户端上使用多个连接配置文件,则每个配置文件必须使用唯一的管理端口

自定义选项

虽然pfSense网页界面支持最常用的选项,但OpenVPN功能非常强大且灵活,偶尔可能需要Web界面中不可用的选项。 这样的自定义选项可以在该输入框中添加。 这些选项在自定义配置选项中进一步描述。

信息级别

配置此实例的OpenVPN日志中显示的详细信息量,这对解决问题很有用。数字越大,日志中的细节数据越大。如果没有特别要求,默认选择是最佳的。

注意:当设置为更高级别时,OpenVPN状态页面和仪表板小部件将在与管理进程交互时引发额外的日志记录,以轮询来自OpenVPN守护进程的信息。

客户端配置选项

这些选项可用于OpenVPN客户端实例的一种或多种模式,通过VPN> OpenVPN,客户端选项卡进行管理。

其中许多选项与上述服务器选项相同,因此只会注意到不同之处。

服务模式

对于客户端实例,服务器模式选项仅限点对点(SSL/TLS) 和点对点(共享密钥),与具有相同名称和类型的服务器选项配对。

接口

该选项选择OpenVPN客户端实例将用于传出连接的接口,VIP或故障转移组。

当在OpenVPN客户端实例上为接口选择CARP类型的VIP时,当CARP VIP处于备份状态时,OpenVPN实例将停止。 这样做是为了防止辅助HA节点维护无效路由或尝试进行可能干扰主HA节点上活动连接的出站连接。

本地端口

对于客户来说,本地端口在几乎所有情况下都是空白的,以便使用随机的本地端口。 这更安全,但有些要求可能需要特定的源端口。 如果需要特定的源端口,根据需要填写。

服务器主机或地址

服务器的IP地址或完全限定的域名。

服务器端口

服务器正在侦听的端口,通常为 1194

代理设置

代理主机或地址:
此客户端必须连接的代理服务器的IP地址或完全限定的域名。
代理认证额外选项:
额外的验证选项。设置为basic或ntlm时,将显示用户名和密码字段,以便可以配置代理身份验证。

服务器主机名解析

当选中无限解析服务器时,服务器主机名将在每次连接尝试时解析。 如果未选中,OpenVPN只会尝试解决一次。 当使用主机名作为远程服务器地址时,应该选中该选项。

用户认证设置

在使用点对点SSL / TLS模式时,根据服务器上配置的要求,可以指定用户名和密码作为用户证书的补充或替代,而不是用户证书。

加密设置

除了新客户端证书选项外,本节中的设置与服务器端的相应选项相同,其中证书被选择供此客户端使用。 此证书(以及相关的密钥和CA证书)必须先导入到此防火墙,然后才能选择。

共享密钥 / TLS认证

这些选项的作用与服务器端相似,但请注意,服务器的密钥必须在此复制,而不是在客户端上生成新的密钥。

限制输出带宽

此框中的值(以每秒字节数指定)用于限制传出VPN传输的带宽。留空时,没有限制。该值必须介于100和100000000之间。

不推送路由

选中时,客户端将忽略从服务器推送的路由。当服务器在客户端不需要时推送默认网关重定向的情况下非常有用。

不添加/删除路由

选中后,OpenVPN将不管理该VPN的路由表条目。在这种情况下,他们必须手动管理。通常添加的路由将使用环境变量传递给 –route-up脚本。

使用OpenVPN服务器向导设置远程访问

OpenVPN向导是为移动客户端设置远程访问VPN的一种便捷方式。以下是OpenVPN远程访问服务器配置所有必需的先决条件:

  • 一个认证来源(本地,RADIUS服务器或LDAP服务器)
  • 一个证书颁发机构
  • 一个服务器证书
  • 一个OpenVPN服务器。

在该向导的最后,一个功能完备的服务器将被配置并准备好供用户使用。下面的示例设置将用于帮助解释向导中可用的选项。

启动向导之前

在启动向导来配置远程访问服务器之前,有一些细节必须首先考虑。

确定一个IP寻址方案

必须选择一个IP子网供OpenVPN客户端使用。 这是在服务器配置中填入“隧道网络”下的子网。 连接的客户端将在该子网内接收到一个IP地址,并且连接的服务器端还会接收到客户端用作服务器端网络网关的IP地址。

和往常一样,当为单个位置选择内部子网时,理想情况下,选定的子网将被设计为可以与其他内部子网一起进行CIDR汇总。 下面描述的示例网络对于LAN使用10.3.0.0/24,对于OpenVPN使用10.3.201.0/24。 这两个网络可以用10.3.0.0/16进行汇总,使路由更容易管理。

网络示例

下图显示本例中配置的网络。

选择认证类型

在OpenVPN远程访问服务器向导的第一个页面上,选择用于用户认证的方法。身份验证后端类型可用的选项是本地用户访问,LDAP和RADIUS。

如果现有的身份验证系统已经就位,例如Active Directory,请根据系统的配置方式选择LDAP或RADIUS。 可以选择本地用户访问来管理pfSense防火墙上的用户、密码和证书。 使用本地用户访问时,可以轻松使用每个用户的证书,并在pfSense GUI中进行管理。 这更安全,但取决于将访问服务的用户数量,可能不如使用中央认证系统方便。

注意:对于LDAP或RADIUS,无需手动生成每个用户的证书即可使用。

本地用户访问选项等同于选择本章前面提到的远程访问(SSL / TLS +用户认证)。 LDAP和RADIUS相当于远程访问(用户身份验证)。

选择认证服务器类型后,单击下一步。 如果选择LDAP或RADIUS,那么这些选择的服务器配置将是下一步。 如果选择本地用户访问,则会跳过LDAP和RADIUS向导步骤。 在本例中,将选择本地用户访问权限,但为了完整性讨论其他选项。

选择一个LDAP服务器

如果已经在pfSense防火墙上定义了LDAP服务器,则可以从列表中选择它。要使用不同的LDAP服务器,请选择添加新的LDAP服务器。如果没有定义LDAP服务器,则跳过此步骤。

添加一个LDAP服务器

如果不存在LDAP服务器或选择添加新的LDAP服务器,则会显示一个页面,其中包含添加新服务器所需的选项。 其中许多选项将取决于特定的LDAP目录配置和结构。 如果对设置有任何不确定性,请咨询LDAP服务器管理员、软件供应商或文档。

Name: 此LDAP服务器的描述性名称,供参考。
Hostname or IP address:
LDAP服务器的主机名或IP地址。
Port: 可以联系LDAP服务器的端口。标准TCP连接的默认端口为389,SSL为636。
Transport: 可以将其设置为TCP – 未加密连接的标准,或SSL – 已加密以实现安全连接。 至少对于本地服务器或初始测试,标准连接可能已足够。 如果服务器是远程的或跨越任何不可信的网络链接,则SSL是更安全的选择。 如果要使用SSL,则必须将来自LDAP服务器的CA证书导入到pfSense中,并且上面的主机名或IP地址必须与服务器证书的通用名称字段中的值匹配。
Search Scope Level:
选择在LDAP目录,一级或整个子树中搜索的深度。通常,整个子树是正确的选择。
Search Scope Base DN:
基于专有名称搜索。 例如 DC=example,DC=com
Authentication Containers:
这些值指定用户在目录中的位置。例如,它可能是 CN=Users;DC=example.
LDAP Bind User DN:
可用于绑定到LDAP服务器并执行身份验证的用户的专有名称。如果此项留空,则将执行匿名绑定,并且下面的密码设置将被忽略。
LDAP Bind Password:
要与LDAP绑定用户DN一起使用的密码。
User Naming Attribute:
取决于LDAP目录软件和结构。通常针对OpenLDAP和Novell eDirectory的cn以及针对Microsoft Active Directory的samAccountName。
Group Naming Attribute:
取决于LDAP目录软件和结构,但最常见的是cn。
Member Naming Attribute:
取决于LDAP目录软件和结构。通常是OpenLDAP上的member,在Microsoft Active Directory上的memberOf和在Novell eDirectory上的uniqueMember。

选择RADIUS服务器

如果在pfSense防火墙上定义了现有的RADIUS服务器,请从列表中选择它。要使用不同的RADIUS服务器,请选择添加新的RADIUS服务器。如果在pfSense上没有定义RADIUS服务器,则跳过此步骤。

添加RADIUS 服务器

如果不存在RADIUS服务器或选择添加新的RADIUS服务器,则会显示一个屏幕,其中包含添加新服务器所需的选项。 如果对设置有任何不确定性,请咨询RADIUS服务器管理员,软件供应商或文档。

Name: 此RADIUS服务器的描述性名称,供参考。
Hostname or IP address:
RADIUS服务器的主机名或IP地址。
Authentication Port:
RADIUS服务器用于接受认证请求的端口,通常为1812。
Shared Secret: 用于接受来自pfSense防火墙的IP地址认证请求的密码。

选择证书颁发机构

如果在pfSense防火墙上定义了现有的认证中心,则可以从列表中选择它。要创建新的证书颁发机构,请选择添加新的CA。如果没有定义证书颁发机构,则跳过此步骤。

创建证书颁发机构

此步骤提供了创建新证书颁发机构(CA)的所有必要字段。 此页面上的每个选项都是必需的,并且必须正确填写所有字段才能继续。 CA用于建立一个信任基础,从中可以生成服务器证书,并被客户视为“值得信赖”。 由于此CA是自行生成的,因此只能由也提供此CA证书副本的客户端信任。

Descriptive Name:
用于标识此证书的名称。 这与其他证书的通用名称字段相同。 对于这个例子CA,使用ExampleCoCA。 尽管在此字段中使用空格是允许的,但我们强烈建议不要在通用名称字段中使用空格,因为某些客户端在正确处理它们时存在问题。
Key Length: 将生成的密钥大小。密钥越大,它提供的安全性就越高,但较大的密钥通常使用速度较慢。 2048是一个不错的选择。
Lifetime: 此CA有效的天数。通常设置为3650,这大约是10年。
Country Code: 两个字母的ISO国家代码(例如US,AU,CA)。双字母ISO国家代码可以在ISO在线浏览平台网站上查询。由于ExampleCo公司在美国设置,请在此示例中输入US。
State or Province:
完全未缩写的州或省名称(例如德克萨斯州,印第安纳州,加利福尼亚州)。在本例中ExampleCo位于Texas。
City: 城市或其他地区名称(例如奥斯汀,印第安纳波利斯,多伦多)。 ExampleCo的总部位于Austin。
Organization: 组织名称,通常是公司或集团名称。 在这个例子中为ExampleCo。请勿在此字段中使用任何特殊字符,甚至不要使用句号或逗号等标点符号
E-Mail: 证书联系人的电子邮件地址。通常是生成证书的人的电子邮件,例如 ***admin@example.com。

点击添加新的CA完成CA创建过程

选择服务器证书

如果在pfSense防火墙上定义了现有的证书,可以从列表中选择。要创建新证书,请选择添加新证书。如果没有定义证书,则跳过此步骤。

添加服务器证书

该页面将创建一个新的服务器证书,用于验证服务器到客户端的身份。 服务器证书将由以前在向导中选择或创建的证书颁发机构进行签名。 在大多数情况下,与本示例一样,使用上一步中的相同信息,并自动在表单上预先填写。

Descriptive Name:
这是服务器证书的通用名称(CN)字段,也用于引用pfSense中的证书。 使用防火墙的主机名是服务器证书的常见选择,例如***.example.com。 尽管允许在此字段中使用空格,但我们强烈建议不要在这个字段中使用空格,因为客户端在处理它们时往往存在问题。
Key Length: 生成的密钥大小。密钥越大,它提供的安全性就越高,但较大的密钥通常使用速度较慢。 2048是一个不错的选择。
Lifetime: 有效天数,这通常设置为3650(大约10年)。
Country Code: 双字母ISO国家代码。
State or Province:
省或州名全称(如 Texas, Indiana, Ontario)。
City: 城市或其他地区名称(例如 Austin, Indianapolis, Toronto)。
Organization: 组织名称,通常是公司或集团名称。。
E-Mail: 证书联系人的电子邮件地址。通常是生成证书的人的电子邮件,例如 ***admin@example.com。

单击创建新证书存储设置并继续向导的下一步。

配置OpenVPN服务器设置

向导的这一步的选项配置OpenVPN服务器本身的行为方式以及传递给客户端选项的各个方面。 这里介绍的选项与之前在OpenVPN配置选项中讨论的选项相同。

OpenVPN服务器常规信息

这些选项控制着OpenVPN实例的运行方式。

接口:  用于接收传入的接口。请选择WAN。
协议:  默认UDP 。
本地端口:  默认1194是首选。如果该端口上有现有的OpenVPN,请使用不同的端口号。向导会建议一个未使用的端口号。
描述:  输入一个合适的描述。如:ExampleCo Mobile VPN Clients

加密设置

这些选项控制隧道中的流量如何加密和验证。

TLS 认证:
选中启用TLS数据包的身份验证。
生成TLS 密钥:
由于没有现有的TLS密钥,因此选中自动生成共享TLS身份验证密钥。
TLS 共享密钥: 由于没有现有的TLS密钥,请留空。
DH参数长度:
选择2048,因为它是速度和安全的良好平衡。
加密算法:
这可以保留为AES-128-CBC的默认值,但只要客户端设置为匹配,任何其他选项也可以正常工作。
认证摘要算法
使用默认的SHA1(160-bit)
硬件加密
目标设备没有加速器,因此请将此选项设为“无硬件加密加速”

隧道设置

这些选项控制来自远程客户端的流量将如何进行路由。

隧道网络: 如本例开始时的示意图所示,为VPN客户端选择了子网10.3.201.0/24。
重定向网关:
对于ExampleCo的设置,VPN只会传输指向主办公室子网的流量,因此不选中此选项。
本地网络: 这是主办公室子网,在本例中为10.3.0.0/24
并发连接:
ExampleCo不想限制可以同时连接的客户端的数量,所以这个留空。
压缩: 以提升CPU使用率为代价来提高VPN通道上的流量吞吐量,将其设置为“(Enabled with Adaptive Compression.)使用自适应压缩启用”。
服务类型:
不选,因为此VPN上没有需要优先级/ QoS的流量。
客户端间通信:
由于此VPN上的客户端无需连接到其他客户端计算机,因此未选中此框。
重复连接:
由于每个客户端都存在唯一的证书,因此未选中。

客户端设置

这些选项控制连接建立时给予客户端的特定设置。

动态IP: 客户端将从全国各地连接,未知的移动网络和他们的IP地址可能会在没有通知的情况下发生变化,因此此选项将被选中。
地址池: 客户端将从上面的隧道网络中分配地址,所以选中此设置。
拓扑: 用于为客户端分配IP地址的方法。子网的默认值是最佳选择。
DNS 默认域:
在这里输入ExampleCo的域名 example.com.
DNS 服务器: 任何内部的DNS服务器都可以在这里使用。 ExampleCo有一个Windows Active Directory域控制器,该控制器被配置为充当DNS服务器10.3.0.5。
NTP 服务器: 上面的服务器10.3.0.5也用于同步客户端PC时钟。
NetBIOS 选项:
客户需要访问VPN后面的Windows共享,因此选中“Enable NetBIOS over TCP/IP(通过TCP / IP启用NetBIOS)”。
NetBIOS节点类型:
由于主要使用DNS,因此请选中h-node。
NetBIOS范围ID:
留空,因为NetBIOS范围不受限制
WINS服务器: WINS已被弃用,所以这留空
高级选项: 此时不需要额外的调整,所以这是空白。

防火墙配置

与防火墙的其他部分一样,默认情况下,所有通信都被阻止连接到VPN或通过VPN隧道传递。 向导的这一步自动添加防火墙规则以允许流量连接到VPN,并且客户端也可以通过VPN传递流量。

从客户端到服务器的流量

选中此框可在所选接口上为允许客户端连接的隧道(例如WAN)添加防火墙规则。 它允许来自任何源地址的所有客户端默认连接。 要允许来自一组有限的IP地址或子网的连接,请创建自定义规则或选中此框并更改其创建的规则。 在这个例子中,客户端来自全国各地,所以由这个复选框创建的规则是理想的,因此选中这个设置。

客户端通过VPN隧道流量

这个设置允许所有流量通过OpenVPN隧道,对于本示例是必须的,所以选中。

完成向导

单击完成,向导现在完成全部设置;该隧道已完全配置并准备好进行客户端连接。 从这里开始,下一步就是添加用户并配置客户端设备。 如果需要调整自动生成的防火墙规则,你可以在防火墙>规则策略处进行调整。

用户配置

此时VPN服务器已配置,但可能没有任何可连接的客户端。将用户添加到VPN的方法取决于创建OpenVPN服务器时选择的身份验证方法。

本地用户

要添加可以连接到OpenVPN的用户,必须按照以下步骤将其添加到用户管理器:

  • 导航到系统>用户管理
  • 点击添加创建一个新用户
  • 输入用户名,密码和密码确认
  • 填写全名(可选)
  • 选中单击创建用户证书,该证书将打开证书选项面板
  • 在描述性名称字段中输入用户名或其他相关信息
  • 选择OpenVPN服务器上使用的相同认证机构
  • 选择一个密钥长度(可以保留为默认值)
  • 输入一个有效期(可以保留默认)
  • 点击保存

查看或更改用户:

  • 导航到系统>用户管理
  • 单击包含用户的行旁边的,进行查看/编辑

导出用户证书和密钥:

注意

如果使用OpenVPN客户端导出插件,则可以跳过此部分。客户端导出插件是下载客户端配置和安装文件的更简单的方法。

  • 导航到系统>证书管理,证书选项卡
  • 在列表中找到用户证书
  • 点击下载用户证书
  • 点击下载证书的密钥
  • 单击下载PKCS#12文件,其中包含用户证书和密钥以及CA证书(可选)

在大多数情况下,CA证书还应该与用户证书一起下载。这可以从系统>证书管理,CA选项卡上的条目或使用前面提到的下载PKCS#12文件来完成。

LDAP或 RADIUS用户

添加LDAP和RADIUS用户将完全取决于服务器实施和管理工具,这超出了本书的范围, 请联系服务器管理员或软件供应商以寻求帮助。 无法从防火墙的Web界面内以反映用户与证书关系的方式创建LDAP或RADIUS用户的证书。 但是,可以使用证书管理器自行创建证书,如用户证书中所述

OpenVPN 客户端安装

  • OpenVPN客户端导出插件
  • Windows安装
  • IOS
  • 手动配置客户端

由于大多数操作系统尚未构建客户端功能,因此需要在最终用户设备上安装OpenVPN客户端。本节只介绍Windows和IOS操作系统的安装。要在安卓、Mac OS  X、Linux、 FreeBSD上安装,请参考pfsense book英文原版。

OpenVPN 客户端导出插件

在大多数平台上配置OpenVPN客户端的最简单方法是在pfSense防火墙上使用OpenVPN客户端导出插件。

按如下方式安装OpenVPN客户端导出插件:

  • 导航到系统> 插件管理
  • 在可用插件列表中,找到OpenVPN Client Export
  • 单击右侧的  进行安装

安装后,可以在VPN> OpenVPN的“Client Export”选项卡上找到它。

插件选项包括:

Remote Access Server:
选择要导出客户端的OpenVPN服务器实例。如果只有一个OpenVPN远程访问服务器,则列表中只有一个选项。如果没有远程访问模式的OpenVPN服务器,该列表将为空。
Host Name Resolution:
控制如何格式化客户端的“远程”条目。

Interface IP Address:选择后,直接使用接口IP地址。这通常是在WAN上安装静态IP地址的最佳选择。

Automagic Multi-WAN IPs:使用端口转发将多个端口重定向到在同一WAN上利用多WAN或多个端口的部署时,此选项非常有用。 它将为所有以目标服务器为目标的端口转发寻找并生成条目,并在客户端配置中使用端口转发中使用的目标IP地址。

Automagic Multi-WAN DDNS Hostnames:与之前的选项类似,但它使用第一个动态DNS条目,它发现它匹配所选目标。

Installation Hostname:将系统>常规设置下定义的防火墙主机名置于客户端配置中。主机名必须存在于公共DNS中,以便客户端可以解决。

Dynamic DNS Hostname Entries:此处列出防火墙上配置的每个动态DNS主机名。这通常是在具有动态IP地址的单个WAN上运行服务器的最佳选择。

Other:提供一个文本框,可在其中输入主机名或IP地址供客户端使用。

Verify Server CN:
指定客户端将如何验证服务器证书的身份。 服务器证书的CN位于客户端配置中,以便如果另一个有效证书假装为具有不同CN的服务器,则它将不会被匹配,客户端将拒绝连接。

Automatic – Use verify-x509-name where possible:这对目前的客户来说是最好的。旧方法已被弃用,因为这种方法更加准确和灵活。

Use tls-remote:这可以在较旧的客户端(OpenVPN2.2.x或更早的版本)上工作,但由于该选项已被弃用,它会中断较新的客户端。

Use tls-remote and quote the server CN:与tls-remote的工作方式相同,但在CN上添加引号以帮助某些客户处理CN中的空间。

Do not verify the server CN:禁用客户端验证服务器证书通用名称。

Use Random Local Port:
对于当前的客户端,默认(选中)是最好的,否则两个OpenVPN连接不能同时在客户端设备上运行。然而,一些较老的客户端不支持这一点。
Use Microsoft Certificate Storage:
在证书导出选项下,对于导出的安装程序客户端,这将把CA和用户证书放入Microsoft的证书存储中,而不是直接使用这些文件。
Use a password to protect the pkcs12 file contents:
选中后,输入密码并确认,然后提供给客户端的证书和密钥将被密码保护。 如果OpenVPN服务器配置为用户身份验证,则会导致用户在加载客户端时看到两个不同的密码提示:一个用于解密密钥和证书,另一个用于连接服务器时的用户身份验证。
Use Proxy: 如果客户端位于代理后面,请选中使用代理与服务器通信,然后根据需要提供代理服务器类型,IP地址,端口和代理服务器身份验证。
OpenVPNManager: 选中此选项后,除了正常的Windows客户端外,该选项还会将Windows安装程序与OpenVPNManager GUI捆绑在一起。 这个可选的GUI管理OpenVPN服务的方式是,一旦安装它就不需要管理员级别的权限。
Additional configuration options:
客户端所需的任何额外配置选项都可以放在此输入框中。这大致相当于OpenVPN配置页面上的高级选项框,但这是从客户端的角度来看的。

注意:目前没有保存这些设置的机制,因此每次访问页面时都必须对其进行检查和设置。

客户端安装软件包列表

在“客户端安装插件”下是要导出的潜在客户端列表。列表的内容取决于服务器的配置方式以及防火墙上的用户和证书。

以下列表描述了服务器配置样式如何影响软件包中的列表:

Remote Access (SSL/TLS):
列出了与OpenVPN服务器使用相同CA创建的用户证书
Remote Access (SSL/TLS + User Auth – Local Users):
列出了本地用户的用户条目,这些用户也具有与Open***服务器相同的CA生成的关联证书。
Remote Access (SSL/TLS + User Auth – Remote Authentication):
由于用户是远程用户,列出了与OpenVPN服务器使用相同CA创建的用户证书。假定用户名与证书的通用名称相同。
Remote Access (User Auth – Local Users or Remote Authentication):
针对所有用户显示单个配置条目,因为没有每个用户的证书。

本章先前在向导中所做的示例设置是针对SSL / TLS +Local Users的用户身份验证,因此每个用户在系统上显示一个条目,该条目具有与OpenVPN服务器相同的CA创建的证书。

注意:如果未显示用户,或者列表中缺少特定用户,则用户不存在或用户没有适当的证书。请参阅本地用户以了解正确创建用户和证书的过程。

客户端安装软件包类型

以不同方式导出配置和相关文件的客户端列出了许多选项。每个都适应不同的潜在客户类型。

标准配置

Archive: 下载包含配置文件,服务器TLS密钥(如果已定义)以及包含CA证书、客户端密钥和客户端证书PKCS#12文件的ZIP存档。 此选项可用于Linux客户端或Tunnelblick等。
File Only: 仅下载基本配置文件,无需证书或密钥。这主要用于在不下载其他信息的情况下查看配置文件本身。

内联配置

该选择下载带有内联证书和密钥的单个配置文件。 这种格式适用于所有平台,尤其是Android和iOS客户端,或手动将配置复制到已安装客户端的系统。 此选项适用于基于OpenVPN 2.1或更高版本的任何客户端类型。

Android: 与Android 4.x及更高版本中提到的Android OpenVPN客户端一起使用。
OpenVPN Connect (iOS/Android):
用于iOS或Android上的OpenVPN Connect客户端。
Others: 任何标准OpenVPN客户端都可以在Windows、OS X或BSD / Linux等平台上使用。它也适用于OS X上的Tunnelblick,只需下载内联配置并将其拖入Tunnelblick的配置文件夹即可。

注意

确保手机有正确的时钟设置和/或NTP服务器,否则证书将无法验证,并且VPN不会连接。

警告

通常这些手机只支持使用SHA1作为证书散列。 确保CA、服务器证书和客户端证书都是使用SHA1生成的,否则可能会失败。 它们也可能只支持AES-128-CBC这类有限的加密算法。

Windows 安装

Windows安装程序选项创建一个简单易用的可执行安装程序文件,其中包含嵌入了配置数据的OpenVPN客户端。 安装程序像普通的Windows OpenVPN客户端安装程序一样运行,但它也会复制所有需要的设置和证书。

目前有四种可用选项:

x86-xp: 32位安装程序可在Windows XP和更高版本上使用
x64-xp: 64位安装程序可在Windows XP和更高版本上使用
x86-win6: 32位安装程序可用于Windows Vista和更高版本,并包含一个更新的tap驱动程序
x64-win6: 64位安装程序可用于Windows Vista和更高版本,并包含一个更新的tap驱动程序

注意:一定要单击下一步/完成整个安装过程。请不要在任何步骤中单击取消安装,否则客户端系统可能已安装客户端,但没有导入配置。

警告:在启用了UAC(用户帐户控制)的Windows Vista 7,8,10和更高版本中,客户端必须以管理员身份运行。 右键单击OpenVPN GUI图标,然后单击以管理员身份运行以使其工作。 它可以在没有管理权限的情况下连接,但无法添加通过OpenVPN连接引导流量所需的路由,导致它不可用。 快捷方式的属性可以设置为始终以管理员身份启动程序。 该选项位于快捷方式属性的兼容性选项卡上。 围绕这个要求的一个方法是在导出前检查OpenVPNManager以在Windows上使用备用OpenVPN管理GUI。

Viscosity客户端也可用于Windows,并且不需要管理权限即可正常运行。

Viscosity软件

这与上面的配置存档一样,但适用于OS X和Windows中使用的Viscosity OpenVPN客户端。如果已经安装了Viscosity客户端,请下载该软件包并单击它将其导入客户端。

Windows 安装

OpenVPN,可从OpenVPN社区下载页面下载。 在撰写本文时,大多数Windows用户的最佳版本是2.4.x-I60x安装程序。 2.4系列是最新的稳定版本

安装很简单,接受所有的默认设置。 安装将为tun接口在客户端系统上创建一个新的本地连接。 当VPN建立时,该接口将显示连接,否则将显示为断开连接。 不需要配置此接口,因为它的配置将从OpenVPN服务器或客户端配置中提取。

iOS

iOS也可以使用App Store中提供的iOS OpenVPN Connect客户端本地运行OpenVPN。 这个应用程序不需要越狱iOS设备。 该应用程序必须在iOS设备之外配置配置文件和证书,然后将其导入到该设备。 pfSense上的OpenVPN客户端导出插件可用于导出OpenVPN Connect类型的内联配置。 将生成的.OVPN文件传输到目标设备,然后使用iTunes将文件传输到应用程序或通过电子邮件发送到设备。

使用其他方法远程获取文件到设备上,例如Dropbox、Google Drive或Box,其工作方式与电子邮件方法类似,通常更安全,因为内容将保持专用并可以根据需要进行进行存储加密。

如果使用电子邮件方式,请使用以下步骤:

  • 导出OpenVPNConnect类型VPN的内联配置文件
  • 将导出的文件通过电子邮件发送到iOS设备上配置的帐户
  • 在设备上安装OpenVPN Connect应用程序
  • 打开设备上的邮件应用程序
  • 打开包含附件的电子邮件
  • 点击附件。当它被轻敲时,其中一个选择是用OpenVPN Connect应用程序打开它
  • 点击以选择OpenVPN连接应用程序,它将提供导入配置
  • 点击+按钮,配置文件将被导入

使用iTunes将配置传输到iOS设备比电子邮件简单且更安全。

  • 导出OpenVPN Connect类型VPN的内联配置文件
  • 将iOS设备连接到电脑并打开iTunes
  • 找到并安装OpenVPN Connect应用程序
  • 单击工具栏中iTunes内的设备图标
  • 选择窗口左侧的应用程序
  • 在此屏幕的底部(向下滚动)找到文件共享部分
  • 点击文件共享下的OpenVPN图标,文件列表将显示在标题OpenVPNDocuments下的右侧
  • 通过使用以下方法之一将文件复制到设备。该文件将立即在iOS设备上可用。
  • 使用Finder将.OVPN文件拖放到此区域 – 或 –
  • 点击添加并找到要导入的文件
  • 打开OpenVPN Connect应用程序,它将提示导入配置文件
  • 点击+按钮,配置文件将被导入

如果配置文件配置为用户身份验证,它将提示输入凭据,可以选择保存该凭据。在凭据提示下方是连接状态,该状态将在断开和已连接之间改变,并且还指示何时尝试连接。点击这个将会打开OpenVPN客户端日志,这在连接遇到问题时非常有用。

要连接VPN,请将配置文件底部的滑块从关闭移动到开启,应用程序将尝试连接。要手动断开连接,请将滑块移回关闭。

为此客户端手动构建配置文件时,它需要内联配置样式或单独的CA、客户端证书、客户端证书密钥和TLS密钥文件(如果使用)。它似乎并不接受包含CA和客户端证书/密钥的.p12文件,因此默认的“配置存档”样式将不起作用,尽管有些用户报告成功地导入了从Viscosity软件包中提取的配置文件。

手动配置客户端

客户端手动安装需要更多的步骤来将软件和设置安装到客户端PC上。

安装OpenVPN之后,将证书复制到客户端并创建客户端配置文件。

复制证书

每个客户端需要防火墙提供三个文件:CA证书、客户端证书和客户端密钥。如果服务器配置了TLS身份验证,则只需要第四个文件TLS密钥。

  • 从系统>证书管理,CAs选项卡导出CA证书,并将其另存为ca.crt
  • 按照本地用户中的说明导出客户端证书和密钥,并将其保存为username.crt和username.key
  • 将这些文件复制到客户端上OpenVPN config目录
  • 如果在此OpenVPN服务器上使用TLS认证,必须从服务器配置页面复制TLS密钥。 将其保存到一个名为tls.key的新文本文件中,并将其包含在config文件夹中。

创建配置

将证书复制到客户端后,必须创建OpenVPN客户端配置文件。这可以使用任何纯文本文件编辑器(例如Windows上的记事本)来完成。以下显示了最常用的选项:

client

dev tun

proto udp

remote VPN.example.com 1194

ping 10

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt

cert username.crt

key username.key

verb 3

comp-lzo

tls-auth tls.key 1

auth-user-pass

remote: 指定远程OpenVPN服务器的主机和端口。 IP地址或FQDN可以在此处指定。
proto: 指定OpenVPN连接使用的协议。如果TCP在OpenVPN服务器上使用,则将此行更改为proto tcp。
ca, cert, key: 必须相应地修改每个客户端以反映之前保存的文件名。
tls-auth: 如果不使用TLS认证,则可以省略tls-auth行。
auth-user-pass: 如果远程访问VPN不包含用户名和密码认证,请省略此行。

将配置和密钥分发给客户端

将密钥和OpenVPN配置分发给客户端的最简单方法是通过OpenVPN客户端导出插件。 如果用插件不是一个可行的选择,将所需的文件放入ZIP压缩文件或自解压压缩文件中,自动解压到C:\ Program Files \ OpenVPN \ config。 这必须安全地传输给最终用户,并且决不能通过未加密的不可信网络进行传递。