10

如何透過 PowerShell 快速建立 Windows 內建 VPN 連線並自動記憶密碼連線

 3 years ago
source link: https://blog.miniasp.com/post/2021/05/23/Creating-VPN-Network-Connection-using-PowerShell-and-dial-with-rasphone
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

有鑑於近日台灣 COVID-19 疫情 相當嚴峻,政府也在前幾日宣布全台疫情警戒升第三級,我們公司也在 2021/5/17 開始全員在家上班,以致於使用 VPN 的同仁暴增,進而也遇到許多連線問題。本篇文章我要來分享幾個快速建立 VPN 的 PowerShell 命令,幫助大家在不瞭解 VPN 背景知識的情況下,也能快速且正確的設定好 VPN 連線。

快速設定 VPN 連線

以下是我們公司用來快速建立 VPN 連線的 PowerShell 指令碼:

$VPNConnectionName = "MyVPN"

$VPNServer = "IP.Address"
$DNSSuffix = "AD.Domain"
$L2tpPsk   = "L2TP 的 Pre-shared key (PSK)"

Add-VpnConnection -Name $VPNConnectionName -ServerAddress $VPNServer -TunnelType L2tp -L2tpPsk $L2tpPsk -DnsSuffix $DNSSuffix -AllUserConnection -Force -RememberCredential

以下是幾個重要參數的說明:

  1. 由於我們公司的 VPN 採用 L2TP 協定進行連線,所以必須指定正確的 Pre-shared key (PSK) 才能成功連線,因此需要加上 -L2tpPsk $L2tpPsk 才行,這個參數只有在使用 -TunnelType L2tp 的時候才能用。
  2. 我們公司的網路有透過 Active Directory (AD) 進行管理,所以加上預設 DNS 尾碼會比較方便,所以加上 -DnsSuffix $DNSSuffix 參數。
  3. 為了將 VPN 連線註冊到全域的電話簿 (global phone book),所以我們要加上 -AllUserConnection 參數。
  4. 當你第一次登入 VPN 之後,如果想要記憶密碼,可以加上 -RememberCredential 參數。
  5. 如果你的 PSK 會透過不安全的頻道傳送,必須加上 -Force 才能設定成功。

完整的參數說明請看 Add-VpnConnection (VpnClient) | Microsoft Docs 文件。

關於 RAS 電話簿

我們經常會說 VPN 要用「撥接」的方式進行連線,這個概念自然來自於傳統的「電話簿」(Phone Book),然後概念也確實一樣,我們上述建立 VPN 連線的過程,其實就是建立到 Windows 10 內建的 RAS (Remote Access Services) 電話簿中。

你可以執行 rasphone 命令(C:\Windows\System32\rasphone.exe)來啟動網路連線的視窗,而你從執行檔的名稱就可以看出這其實就是 RAS 的電話簿 (RAS Phone Books)!

Network Connections (rasphone.exe)

快速撥接 VPN 連線

我前幾年有寫過一篇 如何透過命令列工具快速連接 Windows 內建的 VPN 連線 文章,其中所使用到的工具程式 rasdial.exe 就是專門用來呼叫 RAS 電話簿中的網路連線。不過,當時寫的撥接 VPN 方式是直接在命令列輸入帳號密碼來登入,且密碼會需要使用「明碼」來撰寫,非常不安全,因此本篇文章將分享另一種可以「記憶密碼」的方式來進行撥接。

我們使用 Add-VpnConnection 新增的 VPN 連線設定,有包含一個 -RememberCredential 參數,他會讓你的 VPN 網路連線可以記憶上次輸入過的 VPN 連接認證 (帳號、密碼、網域),但是需要透過以下幾個步驟的設定才能成功撥接:

  1. 請用「系統管理員權限」開啟 Notepad 或任意文字編輯器

    打開 %ProgramData%\Microsoft\Network\Connections\Pbk\rasphone.pbk 檔案

    注意: 此檔案為 UTF-8 編碼,如果發現亂碼要記得調整編輯器設定。

  2. 調整設定無互動自動撥接 VPN 連線的參數

    上一個步驟的 rasphone.pbk 檔案,其實是一個 INI 文字檔,如果你有設定兩個不同的 VPN 連線,那麼這個檔案就會有兩個區段設定,請記得要調整正確的參數。

    你必須找到一個 PreviewUserPw=1 參數,其值預設為 1,你必須把他改成 0 之後儲存檔案,才能進行下一步。

  3. 執行 rasphone -d "MyVPN" 命令來撥接

    其中 MyVPN 是你在建立 VPN 連線時所指定的連線名稱!

    撥接 VPN 的過程中畫面會出現以下視窗,但是不會出現太久,當 VPN 連線成功後就會自動消失:

    Connecting to DuotifyVPN

上述三個步驟都設定成功,就代表你已經可以免設定密碼自動撥接 VPN 了!

今後就只要執行以下命令就可以自動撥接 VPN 了,而且還不用將連線密碼寫在批次檔AutoHotkey 的指令檔中:

rasphone -d "MyVPN"

若要斷掉連線,也可以使用以下命令:

rasphone -h "MyVPN"

若要手動建立 VPN 連線設定,可以使用以下命令快速啟動建立 VPN 連線的精靈頁面:

rasphone -a

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK