Netgate pfSense是亚马逊认证的EC2防火墙和VPN设备之一。一些人会遵循互联网上的几个流行指南来配置硬件pfSense设备,以便直接与AWS VPC(虚拟私有云)建立VPN连接。本指南将介绍如何启动、管理和使用设备实例。对于只希望使用默认配置的OpenVPN或IPsec VPN的用户,在初始设置之后,对实例的修改和管理工作量会很少。
- 启动一个实例
- 实例配置
- 使用远程访问IPsec VPN
- 使用远程访问OpenVPN VPN
- 常用平台/OpenVPN客户端上配置说明
- 高级用法
- 保护VPC中的专用网络
- IPv6
- 将本地pfSense设备连接至Netgate pfSense认证的防火墙和VPN设备
启动实例
在Amazon EC2管理控制台中,启动Netgate pfSense认证防火墙和VPN设备。
- 使用页面右上角的选项卡选择希望实例运行的区域。

- 通过单击EC2仪表板
Create Instance部分下的Launch Instance按钮启动一个新实例。

- 在创建新实例菜单上选择
AWS Marketplace。在搜索框中键入Netgate pfSense certified,然后按回车键。

在搜索结果中的Netgate pfSense列表旁边单击 Select 按钮。

Next: Configure Instance Details

进入 Configure Instance Details 页面,选择网络和子网。你可以选择展开 Advanced Details 部分,并在 User Data 字段中将参数设置为文本。可用的选项是:
- 密码 – 通过像
password=abcdefg这样的指令设置一个值,将管理帐户的密码设置为您指定的值(如abcdefg)。如果此处未设置任何值,则会分配一个随机密码,以避免默认密码暴露于互联网。 - mgmtnet – 通过像
mgmtnet=10.0.1.0/24这样的指令设置一个值,限制管理访问(http、https、ssh)。这将导致实例上的防火墙规则将管理流量限制到指定的源网络。默认行为是允许来自任何主机的管理。
这些指令可以通过将它们放在用户数据字段中的一行上并用冒号分隔来设置。例如,同时指定密码和限制网络: password=abcdefg:mgmtnet=10.0.1.0/24
在设置完这些参数后,单击 Next: Add Storage。
注意:如果使用 password 参数设置密码,则在系统首次引导时,密码将通过未加密的 HTTP 请求由实例检索。请求由本地局域网上的 AWS 元数据服务完成。建议在实例启动后通过 pfSense Web GUI 更改管理员密码,如果您认为这是不可接受的安全风险。或者您也可以选择不设置密码,让系统分配随机密码。
- 存储设备配置完成后,单击
Next: Tag Instance。

- 可以在实例上设置一个标记,通过为
Name标记输入一个值来区分此实例与其他 VM。设置所需标签后,单击Next: Configure Security Group。

选择一个安全组以启动实例。推荐的安全组设置应至少允许以下流量:
- TCP 端口 443 from 0.0.0.0/0 – HTTPS – 管理 Web GUI 侦听端口。
- TCP 端口 22 from 0.0.0.0/0 – SSH – 用于命令行连接。
- UDP 端口 1194 from 0.0.0.0/0 – OpenVPN – 默认 OpenVPN 服务器端口。
- UDP 端口 500 from 0.0.0.0/0 – IPsec VPN 的 IKE。
- UDP 端口 4500 from 0.0.0.0/0 – IPsec VPN 的 NAT-T。

如果您有包含上述访问权限的现有安全组,选择 Select an existing security group 并选定组;否则选择 Create a new security group 并逐一添加规则。完成后单击 Review and Launch。
- 验证实例的详细信息并单击
Launch。

- 选择一个现有的密钥对或创建一个新的密钥对以连接到实例。不要选择
Proceed Without a Key Pair。勾选确认您有权访问所选私钥文件的复选框,然后单击Launch Instance。

实例配置
实例启动后,您可以在EC2管理控制台的“实例”页面上监视其状态。控制台会显示实例是否已启动以及其当前的公共IP地址和对应的公有DNS主机名。您可以在左侧菜单单击“实例”,选中实例,然后在页面底部查看详细信息。

在上面的例子中,实例的主机名是 ec2-23-20-204-54.compute-1.amazonaws.com,其中包含的四个数字就是公共IP地址:23.20.204.54。您也可以使用 host、dig 等工具解析主机名获得IP。
注意:示例中的IP和主机名仅用于演示,不会与您实际使用的值相同。
您可以通过 HTTPS 或 SSH 连接来管理实例。SSH 连接时,使用创建实例时选择的密钥对连接到管理员账户。例如:
ssh -i my_key_file admin@public_IP首次连接时,系统会提示确认主机指纹,输入 yes 即可。

通过 SSH 可以进行有限的配置。推荐使用 HTTPS Web GUI 进行管理。在浏览器中输入 https://实例公有IP 或 https://主机名。由于使用了自签名证书,浏览器会提示安全警告,选择继续访问即可。随后应出现 Netgate 徽标的登录界面。

用户名是 admin。密码是您在用户数据中设置的值,或系统随机生成的密码。如果没有设置特定密码,可以通过以下方式找到随机密码:
- 通过 SSH 登录后,查看
/etc/motd文件内容,其中会包含类似*** Admin password changed to: abcdefg的信息。 - 或者在 EC2 管理控制台中查看实例的“系统日志”,日志末尾也会显示密码信息(可能会有几分钟延迟)。
输入密码后即可进入 pfSense Web GUI 主界面。
使用远程访问 IPsec VPN
实例运行时,已为远程用户预先配置了一个 IPsec VPN。您需要在客户端设备上配置 IPsec VPN 连接。手动配置 Android 或 iOS 客户端可参考官方文档:
https://doc.pfsense.org/index.php/Mobile_IPsec_on_2.0
对于 iOS 设备,可下载一个自动配置的配置文件。访问 https://实例IP/iphone_ipsec_profile.php 页面,验证后即可下载。例如:https://23.20.204.54/iphone_ipsec_profile.php
iOS 设备打开该页面时会自动下载并尝试安装配置文件。安装过程中需输入设备密码和 VPN 密码(即管理密码),按提示操作即可。

安装完成后,在“设置”中的 VPN 开关即可启用连接。


使用远程访问 OpenVPN VPN
首次启动实例时,也自动配置了用于远程用户的 OpenVPN 服务器。您需要安装 OpenVPN 客户端,并导入连接配置文件。
配置文件可通过访问 https://实例IP/openvpn_connect_profile.php 下载(验证后)。例如:https://23.20.204.54/openvpn_connect_profile.php
将下载的 .ovpn 文件导入到您设备的 OpenVPN 客户端即可。
常用平台/OpenVPN客户端配置说明
iOS 上的 OpenVPN Connect App
通过电子邮件附件导入配置文件。将 .ovpn 文件发送到 iOS 设备,打开附件选择“在 OpenVPN 中打开”,然后在 App 中导入配置。输入用户名 admin 和密码后连接。
Android 上的 OpenVPN Connect App
将配置文件保存到 SD 卡。启动 App,选择“导入” → “从 SD 卡导入”,找到并选中配置文件。输入凭据后连接。
Windows 上的 OpenVPN Connect 客户端
将配置文件保存到本地。点击客户端右侧的“+”号,选择“本地文件”导入。导入后在配置文件列表点击该配置,输入凭据后连接。
高级用法
保护 VPC 中的专用网络
Netgate 设备可以作为 VPC 子网的防火墙,但这需要额外的手动配置,不能像远程访问 VPN 那样开箱即用。
IPv6
Amazon EC2 不支持本地 IPv6 连接。因此,无法直接通过 VPN 隧道从客户端设备访问 IPv6 Internet。您可以尝试手动配置 IPv6 隧道(例如 Hurricane Electric、Sixxs 等),但该配置未经测试且无技术支持。
关于 VPN 客户端和 IPv6 的重要说明
如果您使用 VPN 主要是为了在公共网络加密流量,在连接到支持 IPv6 路由的局域网时需格外小心:
- 某些 VPN 客户端会在 IPv6 可用时将 IPv6 流量直接发送到互联网(绕过 VPN 隧道),这在使用 IPsec 客户端时尤为常见。OpenVPN 客户端的行为则取决于具体实现。
- 许多应用程序(如浏览器)可能优先使用 IPv6,导致流量泄露。若 VPN 隧道仅承载 IPv4,则 IPv6 流量将不加密直接外发。
- 自动配置的 OpenVPN 远程访问服务器会尝试推送路由使 IPv6 流量进入隧道,但并非所有客户端都能正确处理。对于 IPsec 而言,没有类似配置。
- 多数公共 Wi‑Fi 目前不支持 IPv6,风险相对可控。连接网络时,尤其是支持 IPv6 的网络,建议访问 http://test-ipv6.com 测试是否存在 IPv6 泄露。若确认存在泄露,您可根据实际情况决定是否仍使用该网络。
将本地 pfSense 设备连接至 Netgate pfSense 认证的防火墙和 VPN 设备
除了移动设备作为客户端,运行 pfSense 的硬件防火墙也可作为站点间对等连接到 Netgate 设备。详细配置可参考:
http://doc.pfsense.org/index.php/OpenVPN_Site-to-Site_(Shared_Key,_2.0
实施时,应将 AWS 上的 Netgate 实例作为“服务器”端,本地 pfSense 作为“客户端”。还需确保使用不同于默认远程访问端口(UDP 1194)的端口,建议使用 1195-2000 之间的端口,并在实例防火墙规则和 EC2 安全组中开放该端口。
如果希望将家庭/办公网络的所有流量通过 OpenVPN 隧道发送到 Netgate 实例,可在本地 pfSense 的 OpenVPN 客户端高级选项中添加:
redirect-gateway def1;随后还需在 AWS 实例上配置 NAT,将本地网络的 CIDR 地址加入预配置的别名 Networks_to_NAT(位于 防火墙 > 别名 编辑)。同时,也需要将隧道端点网络(IPv4 隧道网络)添加到同一别名中。应用更改后生效。
将多个 pfSense 网关连接到 Netgate 设备
多个办公点可连接到同一 Netgate 实例,允许站点间通信而不必逐对建立隧道。每个站点需要按照上述单站点方案的步骤,为远程站点在 Netgate 实例上添加独立的 OpenVPN 服务器,每个服务器使用唯一端口和唯一 IPv4 隧道网络。建议在描述字段中标记站点名称以便管理。
觉得内容不错?我要