请帮助我,这很重要。
我生来就是中国人,但我思想开放,遵循西方哲学。在专制的中国,有臭名昭著的中国防火墙,它减慢了访问外国网站的速度,并彻底屏蔽了许多网站(谷歌、YouTube、DeviantArt,甚至维基百科,仅举几例),使访问公正的免费信息基本上是不可能的。
因此我使用 VPN 访问免费互联网,而我的 ISP 确实想切断我的 VPN 连接。他们限制我的 VPN 连接速度并频繁断开我的 VPN 连接。我编写了一个全天候运行的 Python 脚本来解决这个问题,他们总是失败,但他们就是不放弃。
但最近他们占了上风,不知为何我的方法不再管用了。问题很简单,每当我连接到 VPN 时,我的连接速度就会被限制在几百 Kibibytes 的下载和上传速度,导致 VPN 毫无用处,而且在连接到 VPN 时基本上无法浏览互联网。
我很久以前就禁用了调制解调器上的 TR069,更改了调制解调器的密码并更改了许多其他设置,这样他们就没有后门来控制它了。他们以前也试图限制我的连接,我发现可以通过断开 WAN(我的路由器的 PPPoE 连接)并重新连接 WAN 来解决这个问题。
但这次,我的伎俩没有奏效。一开始我以为他们一定以某种方式为我的调制解调器打开了我不知道的后门,所以我换了调制解调器。我通过互联网购买了调制解调器,调制解调器没有互联网服务提供商添加的任何信息,所有设置都是出厂默认设置,所以肯定没有后门。
我设置了调制解调器并建立了互联网 WAN 连接。但是当我再次连接到 VPN 时,连接仍然受到限制。我认为这是不可能的,我认为他们必须能够访问我的调制解调器才能控制我的网络连接。但现在我被证明是错的,所以他们可以控制我的网络而不需要以某种方式访问我的调制解调器。
我尝试重置路由器(我买的,不是 ISP 提供的),没有用。我尝试使用以下命令重置计算机的互联网设置并重新启动计算机:
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
devcon disable *dev_8168*
devcon enable *dev_8168*
start-sleep -seconds 3
netsh winsock reset
netsh winhttp reset proxy
netsh http flush log buffer
net start dot3svc
netsh lan reconnect
net stop dot3svc
netsh interface ip reset
netsh interface ipv4 reset
netsh interface ipv6 reset
netsh interface httpstunnel reset
netsh interface portproxy reset
netsh interface tcp reset
ipconfig /release
ipconfig /all
ipconfig /flushdns
ipconfig /registerdns
ipconfig /renew
RunDll32.exe InetCpl.cpl,ResetIEtoDefaults
Start-Sleep -Seconds 1
[System.Windows.Forms.SendKeys]::SendWait("{Tab}")
[System.Windows.Forms.SendKeys]::SendWait(" ")
[System.Windows.Forms.SendKeys]::SendWait("R")
[System.Windows.Forms.SendKeys]::SendWait("C")
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Internet Explorer" -ErrorAction SilentlyContinue | Out-Null
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Internet Explorer\Control Panel" -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name AutoDetect -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name AutoDetect -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Internet Explorer\Control Panel" -Name Autoconfig -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name AutoConfigURL -Type String -Value ""
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name AllowRemoteRPC -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name fDenyTSConnections -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" -Name fDenyTSConnections -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Remote Assistance" -Name fAllowFullControl -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Remote Assistance" -Name fAllowToGetHelp -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" -Name fAllowToGetHelp -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" -Name fAllowUnsolicited -Type DWord -Value 0
netsh advfirewall set allprofiles firewallpolicy blockinboundalways,allowoutbound
netsh advFirewall firewall add rule name="Disable Incoming PING IPv6" protocol=icmpv6:8,any dir=in action=block
netsh advFirewall firewall add rule name="Disable Incoming PING IPv4" protocol=icmpv4:8,any dir=in action=block
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" -Name TcpAutotuning -Type DWord -Value 1
netsh http flush logbuffer
netsh winhttp reset autoproxy
netsh interface udp reset
netsh branchcache reset
netsh branchcache flush
netsh interface tcp set global autotuninglevel=disabled
这也没什么用,我的连接仍然被限制。所以问题不在于调制解调器、路由器或计算机。此时我已经没有主意了,打算放弃了,我的 ISP 赢了,我需要更换 ISP...
但转念一想,我想到了另一个原因,如果我的操作系统有问题怎么办?如果我的 ISP 设法用某种病毒感染了我的计算机,从而给他们带来好处怎么办?这似乎不太可能,但在排除所有可能性之后,剩下的,无论多么违反直觉,一定是正确的。这值得调查,所以我试了一下,然后……
中奖了!我的电脑有多个永久存储设备,我已经在两个磁盘上安装了 Windows 10。它们都是可启动的,但以前我主要使用一个操作系统。所以我重新启动了电脑并启动了另一个操作系统,然后连接到 VPN,发现我的连接没有被限制。如果我没有更改调制解调器或路由器的设置,怎么会发生这种情况?
我重启了电脑,再次启动了另一个操作系统,连接到 VPN,我的连接被限制了,这并不奇怪。但我再次重启进入我没有使用的操作系统,没有被限制。再次重启,我的 VPN 被限制了……
所以这证实了我的假设,即限制必须以某种方式与操作系统相关,而合乎逻辑的结论是,我的主要操作系统受到了来自 ISP 的一些脚本的感染,从而限制了我的 VPN 连接。
但是怎么办呢?我尝试卸载 VPN 客户端并重新安装,但没有任何效果。但是我发现了一些非常奇怪的东西,重启后,在设置应用程序的主操作系统网络和互联网设置部分,在代理选项卡下,自动检测设置的复选框处于打开状态,这应该是不可能的,因为我已经通过脚本禁用了它。
在 Chrome 的状态栏中,有时我可以看到“正在下载代理脚本”消息,这应该是不可能的,因为我已经禁用了代理自动配置。我打开了 chrome://net-internals/#proxy,什么也没找到,netsh winhttp show proxy
显示"Direct access (no proxy server)."
。但肯定是下载了某个脚本并导致了问题。
我尝试在 Google 上搜索“代理脚本下载到哪里”,但发现毫无用处。因此,计算机启动时一定有一些脚本运行,启用代理自动配置并下载代理脚本,导致出现问题,但我打开了 Sysinternals Autoruns,仍然一无所获。
但我发现有些不对劲,系统启动时有一个带有Windows服务图标的进程,没有进程名,其命令行是svchost -k networkservice -p
。
那么导致问题的文件到底是什么?我当然会重新安装操作系统,但了解原因可以帮助防止这种情况再次发生。
答案1
我已经搞清楚了,是我的问题,不是我的 ISP。问题是由设置 引起的netsh interface tcp set global autotuninglevel=disabled
,可能也Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" -Name TcpAutotuning -Type DWord -Value 1
有影响。
因此,看起来,当 TCP 自动调整级别被禁用并且自动调整在注册表中被启用时,它会以某种方式导致冲突并减慢 VPN 连接的速度。
为了对抗 ISP 的干扰,我改变了一些我并不真正理解的东西,并因此自食恶果。我很容易责怪 ISP,我从未考虑过这可能是我自己造成的。
我刚刚在工作操作系统上运行了我的脚本,VPN 连接立即变慢了。我逐个检查了命令,然后确定这netsh interface tcp set global autotuninglevel=disabled
一定是原因。
然后我运行以下命令netsh interface tcp set global autotuninglevel=experimental
,我的 VPN 连接不再受到限制。我将 autotuninglevel 设置为禁用,我的 VPN 连接再次受到限制...
所以我在不知不觉中帮助了我的 ISP。我设置了一下netsh interface tcp set global autotuninglevel=experimental
,问题就解决了。