![在 Azure 中配置 pfSense OpenVPN](https://linux22.com/image/689161/%E5%9C%A8%20Azure%20%E4%B8%AD%E9%85%8D%E7%BD%AE%20pfSense%20OpenVPN.png)
我在 Azure 中有一个小型网络,需要授予访问权限。由于我办公室里的大多数人都使用 Macbook,因此 Microsoft VPN 网关无法正常工作。
为了启用 VPN 连接,我创建了一个运行 pfSense 映像的 VM。
我能够连接到此 VM 公开的 Web 服务器并配置 pfSense OpenVPN 服务器。
但是,我无法连接到 OpenVPN 服务器以建立连接。在 Open VPN 连接屏幕中,我得到以下信息:
Wed Aug 31 15:49:00 2016 TCP: connect to [AF_INET]nnn.nnn.nnn.nnn:1194 failed, will try again in 5 seconds: Connection timed out (WSAETIMEDOUT)
我有:
- 已验证 nnn.nnn.nnn.nnn 是 pfSense VM 的公共 IP 地址
- 通过 SSH 连接到虚拟机并验证它正在监听端口 1194
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS root openvpn 3403 6 tcp4 *:1194 *:* root nginx 23708 6 tcp4 *:443 *:* root nginx 23708 8 tcp4 *:80 *:* root sshd 13231 5 tcp4 *:22 *:*
- 检查了虚拟机子网的网络安全组。确认它允许任何协议、任何来源通过 1194
- 检查了虚拟机网络接口的网络安全组。确认它已设置为“无”
- 已验证我可以在本地连接到端口 1194
- 验证我是否可以在端口 443 上进行远程连接(请记住我可以连接到 VM 的 Web 服务器)
- 从 AppServices 控制台(已配置到 VNET 的连接),我可以连接到 80 和 443,但不能连接到 1194(连接超时)。
- 我在 pfSense 日志中没有看到任何表明已尝试连接的迹象。
- 当通过 SSH 连接到 VM 时运行 pfTop 会显示 80 和 443 的连接尝试,但没有显示 1194 的连接尝试。
我相信我的虚拟网络设置中的某些东西阻止了 1194 上的流量,但我不确定还要检查哪里。
答案1
请尝试在本地连接 TCP 1194。此测试可避免防火墙的影响。
如果连接失败,则表明服务器端出现了问题。
如果连接成功,为了缩小此问题的范围,我建议您在服务器上执行网络捕获,以检查来自客户端的连接是否已到达服务器的网络适配器。
如果适配器收到来自客户端的数据包,则意味着服务器上的某些东西阻止了连接。最常见的原因是防火墙配置错误。(Iptables)
如果适配器没有收到数据包,那么您应该仔细检查 NSG。或者尝试重新创建它们。如果问题仍然存在,并且您确定 NSG 入站规则。那么您可能需要向 Azure 支持人员开具一张票据,以便他们能够在主机级别执行网络捕获,以找出丢弃数据包的原因。
答案2
问题是 pfSense 上的数据包过滤器拒绝连接。我忘了说的一件事是,我们通过 TCP 运行 OpenVPN(以镜像不同 pfSense 盒的配置)。
当您将 OpenVPN 配置为通过 TCP 连接时,它不会更新允许 1194 上的流量的 pfSense 防火墙规则。该规则设置为 UDP。将规则更改为允许 TCP 可解决此问题。
有用的信息
从文档中不太明显的一点是,当您从官方图像创建 pfsense 框时,它会自动创建一个“管理员”用户。此用户将使用您在创建实例时为用户提供的相同密码/公钥进行设置。
有了这些信息,你就可以通过 ssh 连接到该盒子并获得一个允许 root 访问的小型控制台菜单。
从根控制台,您可以关闭或打开数据包过滤器:
pfctl -d <disables>
pfctl -e <enables>
暂时禁用数据包过滤器可以排除所有与 Azure 有关的问题的根源。