Security

從 Windows 訪問 OpenVPN 的 https 和 ssh

  • February 23, 2015

我最近在遠端 CentOS 7 網路伺服器上安裝了 OpenVPN。我可以通過鍵入從本地 CentOS 7 devbox 連接到它openvpn --config /path/to/client.ovpn。建立連接後,我可以ssh通過 vpn 通過鍵入來訪問伺服器ssh username@10.8.0.1,並且我可以通過在https : / / 10.8.0.1Web 瀏覽器中鍵入通過 vpn 查看遠端伺服器上的 apache 託管的 Web 應用程序。 那麼我的非技術最終使用者如何從 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 在 wifi 網路的 windows 列表中顯示為“未辨識的網路”和“無法訪問網際網路”。當我使用 SecurePoint 與 VPN 斷開連接時,“身份不明的網路”消失了。您可以通過點擊此連結查看VPN 連接處於活動狀態時的外觀

我還能嘗試什麼?

確認您在 CentOS 伺服器上的防火牆(internal如果tun0設備所在的區域是區域)https作為服務可用。

您應該能夠10.8.0.1從 Windows 機器上 ping 伺服器。如果這行得通,那麼您的 VPN 已啟動並正常工作,可能是 CentOS 伺服器的防火牆阻止了您。

如果 ping 不起作用,那麼在查看https頁面之前,您需要解決更深層次的潛在問題。

在後者的情況下,將執行ìpconfig /allroute print在 Windows 機器上的輸出發布。

官方 OpenVPN 客戶端

作為一個實驗,您也可以openvpn在 Windows 機器上安裝並以與您在 CentOS 客戶端上使用類似配置文件的方式類似的方式執行它。它可能會為正在發生的事情提供線索:

從此處下載適用於 Windows 的 OpenVPN 客戶端,然後安裝它。在安裝結束時,您應該會看到一個複選框,提示您啟動客戶端。確保客戶端未啟動。

將您的*.ovpn文件從 CentOS 機器(以前工作的機器)複製到 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我未勾選的複選框以及(當然)密鑰和證書之外,我將所有內容都保留為預設設置。

引用自:https://serverfault.com/questions/670320