解決虛擬網路卡無法連線到 Internet 問題(之一)

64G漂流瓶發表於2024-04-07

虛擬網路卡無法連線到 Internet 的可能情況之一是:網路連線中存在不支援 "網路連線共享(ICS)" 的網路連線,可以在 "控制皮膚\網路和 Internet\網路連線" 中檢視是否存在不支援 ICS 的網路連線。

我遇到的情況是我電腦中存在一個名為 “傳入的連線” 的網路連線,我不知道這是否是 Windows 的 BUG,已經給微軟提交了反饋,下面是解決辦法:

方法 1、刪除所有不支援 ICS 的網路連線。

方法 2、啟用虛擬網路卡的 Internet 連線共享功能,再禁用。

方法 2 不能徹底解決問題,重啟後很有可能問題再現,如果你不想刪除網路連線,可以使用此方法。

這裡有重啟 ICS 功能的指令碼,免去啟動禁用 ICS 的手動步驟:

下載以下 2 個指令碼檔案

1、https://raw.githubusercontent.com/loxia01/PSInternetConnectionSharing/master/PSInternetConnectionSharing.psd1

2、https://raw.githubusercontent.com/loxia01/PSInternetConnectionSharing/master/PSInternetConnectionSharing.psm1

下載之後,你需要在你的 powershell 模組路徑(%ProgramFiles%\WindowsPowerShell\Modules)下新建資料夾,名為 `PSInternetConnectionSharing`,並把下載的這兩個檔案移動過去,你應該得到如下的路徑和檔案:

因為有安全防護機制,你需要雙擊檔案檢視檔案是否提示安全警告,如果提示未知釋出者,可以新建 .txt 文字檔案,然後重新命名,把 .txt 字尾改成 .psm1。開啟 PSInternetConnectionSharing.psm1 檔案,把內容複製,右鍵你剛剛新建的檔案,點選“編輯”,把複製的內容貼上進去。把舊的 “PSInternetConnectionSharing.psm1” 檔案刪掉,把新建的檔案重新命名為 “PSInternetConnectionSharing.psm1”,檔案就可以被信任。

最後,隨便找個位置新建一個文字檔案,命名為 `resetics.txt`,然後在檔案中輸入以下內容:

@echo off
PowerShell -Command "Start-Process PowerShell -Verb RunAs -ArgumentList '$netAdapters = Get-NetAdapter | Select-Object -ExpandProperty Name; Set-Ics -PublicConnectionName $netAdapters[0] -PrivateConnectionName $netAdapters[1]; Disable-Ics'"

儲存,把 `resetics.txt` 改為 `resetics.cmd`,雙擊執行這個檔案,提示需要管理員許可權,點選確認,授權即可,隨後當出現虛擬網路卡不能連線到 Internet 時,就可以透過執行這個檔案來重置 ICS,當然你也可以把這個 `resetics.cmd` 指令碼的路徑新增到環境變數裡,這樣你就可以透過 win + R 開啟 “執行”,然後輸入 "resetics" 就能執行這個檔案,但我更推薦直接刪除不支援 ICS 的網路連線。

相關文章