我最近在远程 CentOS 7 Web 服务器上安装了 OpenVPN。我可以通过键入从本地 CentOS 7 devbox 连接到它openvpn --config /path/to/client.ovpn
。建立连接后,我可以ssh
通过键入通过 vpn 连接到服务器,并且我可以通过键入到 Web 浏览器通过 vpn 查看远程服务器上由 apache 托管的 Web 应用程序。 ssh [email protected]
https : / / 10.8.0.1
那么,我的非技术最终用户如何从 Windows 建立相同的 https 连接?
我下载并安装了适用于 Windows 的 SecurePoint OpenVPN 客户端。然后,我能够为服务器创建一个配置,包括指向 .crt 和 .key 文件的链接以及在client.ovpn
Linux 中文件中定义的其他参数的定义。然后,SecurePoint 客户端强迫我使用远程服务器上操作系统帐户的用户名和密码(也许这样更好),但不允许我连接到服务器上运行的 Web 应用程序。具体来说,在https : / / 10.8.0.1
Web 浏览器中输入会导致“无法显示此页面”,即使我的 Linux devbox 允许通过 vpn 将内容从服务器提供给客户端,如上一段所述。 我做错了什么?我该如何让它工作?
编辑
根据@garethTheRed 的建议,我输入sudo firewall-cmd --list-all --zone=internal
并得到以下结果:
internal (active)
interfaces: tun0
sources:
services: dhcpv6-client https ipp-client mdns samba-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source NOT address="10.8.1.1" service name="ssh" reject
然后,我在 SecurePoint GUI 中单击“连接”,在它显示与服务器的连接已建立后,我打开 cmd.exe 并输入ping 10.8.0.1
并得到以下结果:
Pinging 10.8.0.1 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 10.8.0.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
取消选中用户/身份验证选项将删除用户名/密码登录要求。
请注意,当 SecurePoint 连接时,通过浏览器进行的所有其他互联网访问似乎都被阻止了,因为所有页面请求都被拒绝了。此外,VPN 在 Windows 的 Wi-Fi 网络列表中显示为“未识别网络”,且“无互联网访问”。当我使用 SecurePoint 断开与 VPN 的连接时,“未识别网络”就会消失。您可以看到 VPN 连接处于活动状态时的样子点击此链接
我还可以尝试什么?
答案1
确认 CentOS 服务器上的防火墙(如果设备位于internal
该区域)已可作为服务。tun0
https
您应该能够10.8.0.1
从 Windows 计算机 ping 服务器。如果成功,则说明您的 VPN 已启动并正常工作,可能是 CentOS 服务器的防火墙阻止了您。
如果 ping 不起作用,那么在查看您的https
网页之前,您需要解决更深层次的底层问题。
对于后者的情况,在 Windows 机器上发布运行ìpconfig /all
和的输出。route print
官方 OpenVPN 客户端
作为实验,您还可以openvpn
在 Windows 机器上安装并以与在 CentOS 客户端上类似的方式使用类似的配置文件运行它。它可能会为正在发生的事情提供线索:
从以下网址下载适用于 Windows 的 OpenVPN 客户端这里,然后安装它。在安装结束时,您应该会看到一个勾选框,提示您启动客户端。确保客户端未启动。
将文件从 CentOS 计算机(之前运行的计算机)复制*.ovpn
到 Windows 计算机。如果您正在传输文件,可能会遇到 Unix/DOS 行终止符的问题。该dos2unix
软件包中有一个名为的转换器unix2dos
,可将文件转换为 DOS 格式。
以管理员身份打开notepad
(右键单击并选择“以管理员身份运行”)并编辑文件,*.ovpn
更改密钥和两个证书的路径,记得在路径中使用两个反斜杠(例如C:\\Users\\Bloggs\\key.pem
)。将此文件保存到C:\Program Files\OpenVPN\config
。
从“开始”菜单启动 OpenVPN 客户端,方法是右键单击它并选择“以管理员身份运行”(这仅在第一次运行时才需要)。如果上述操作有效,您应该能够右键单击任务栏中的图标并连接。如果没有连接选项,请检查上述内容。
一两秒后,您将看到一个弹出窗口,告知您已连接。尝试您的https
网页。
基本 Windows 兼容配置
作为测试,备份您当前的服务器配置并尝试以下操作:
port 1194
proto udp
dev tun
ca /etc/pki/openvpn/cacerts/CA.crt
cert /etc/pki/openvpn/public/OpenVPN_Server.crt
key /etc/pki/openvpn/private/OpenVPN_Server.pem # This file should be kept secret
dh /etc/pki/openvpn/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
它适用于我的服务器,支持 Linux 和 Windows 客户端(OpenVPN 和 SecurePoint)。它不会提供您服务器所需的功能,但可以帮助您找到问题所在。当然,您可能需要调整文件路径。
作为参考,这是*.ovpn
我使用的文件:
client
dev tun
proto udp
remote <IP or FQDN of server> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
ca C:\\Users\\gareth\\ca.crt
cert C:\\Users\\gareth\\client.pem
key C:\\Users\\gareth\\key.crt
对于 SecurePoint 客户端,除了Auth user/pass
复选框(我取消了勾选)和(当然)密钥和证书之外,我将其他所有内容保留为默认设置。