Networking

在 Azure 中配置 pfSense OpenVPN

  • September 7, 2016

我在 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 上的流量,但我不確定還有哪裡可以檢查。

問題是 pfSense 上的數據包過濾器拒絕連接。我忘記提及的一件事是我們正在通過 TCP 執行 OpenVPN(以反映不同 pfSense 盒的配置)。

當您將 OpenVPN 配置為通過 TCP 連接時,它不會更新允許 1194 上的流量的 pfSense 防火牆規則。該規則設置為 UDP。更改規則以允許 TCP 可以解決此問題。

有用的資訊

文件中不太明顯的一件事是,當您從官方圖像創建 pfsense 框時,它將自動創建一個“管理員”使用者。該使用者將使用您在創建實例時為該使用者提供的相同密碼/公鑰進行設置。

有了這些資訊,您可以通過 ssh 訪問該框並獲得一個不錯的小控制台菜單,該菜單允許 root 訪問。

從該根控制台,您可以關閉和打開數據包過濾器:

pfctl -d <disables>
pfctl -e <enables>

暫時禁用數據包過濾器讓我可以排除所有 Azure 問題的根源。

請嘗試在本地連接到 TCP 1194。此測試將避免防火牆的影響。

如果連接失敗,則表明伺服器端有問題。

如果連接成功,為了縮小問題的範圍,我建議您在伺服器上執行網路擷取,以檢查來自客戶端的連接是否到達伺服器的網路適配器。

如果適配器接收到來自客戶端的數據包,則意味著伺服器上的某些東西阻止了連接。最常見的原因是防火牆配置錯誤。(iptables)

如果適配器沒有收到數據包,那麼您應該仔細檢查 NSG。或者嘗試重新創建它們。如果問題仍然存在並且您確定 NSG 入站規則。然後,您可能需要通過 Azure 支持打開票證,以便他們能夠在主機級別執行網路擷取以找出丟棄數據包的原因。

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