解决虚拟网卡无法连接到 Internet 问题(之一)
虚拟网卡无法连接到 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 的网络连接。