Windows Server 2012 R2无法彻底关闭Squid代理连接的问题求助
Windows Server 2012 R2 完全绕过Squid代理排查方案
问题梳理
- 运行环境:Windows Server 2012 R2,配置2块网卡,分别为物理LAN网卡、Microsoft Hyper-V虚拟网卡
- 目标:阻断服务器所有到现有Squid代理的连接
- 已执行无效操作:
- 执行
Netsh winhttp show proxy返回DirectAccess - 系统LAN设置中关闭所有自动检测、代理相关选项
- 完成以下注册表调整:
- 删除
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections路径下的DefaultConnectionSettings、SavedLegacySettings预定义代理配置项 - 确认
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings路径下ProxySettingsPerUser值为1 - 删除
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\Connections路径下相关代理键值
- 删除
- 调整
HKLM\System\CurrentControlSet\Services\WinHttpAutoProxySvc服务启停状态无效果 - 清除
C:\Windows\ServiceProfiles\LocalService\winhttp路径下缓存文件 - 删除
HKEY_USERS\S-1-5-19\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Wpad路径下子键
- 执行
- 异常表现:IE浏览器访问不走代理,但Squid日志存在服务器后台连接记录,显示物理LAN网卡IP通过Hyper-V虚拟网卡发起POST请求到代理8080端口的
/gofrom/RPC2接口,返回503错误,日志样例:
xx.xxx.xxx.01 TCP_MISS/503 3677 POST http://xxx.xxx.xx.02:8080/gofrom/RPC2 - DIRECT/xxx.xxx.xx.02 text/html
排查解决步骤
注意:涉及虚拟交换机、网络栈重置的操作请在业务低峰期执行,避免临时网络中断
- 排查Hyper-V虚拟交换机的代理绑定规则
日志明确显示流量从Hyper-V虚拟网卡发起,优先检查虚拟交换机的WFP(Windows过滤平台)绑定,部分代理软件会注入vSwitch过滤规则实现全局流量转发:- 打开Hyper-V管理器,查看当前在用的虚拟交换机配置,取消不必要的第三方扩展绑定
- 以管理员身份执行PowerShell命令查询并重置vSwitch绑定:
# 查询所有虚拟交换机及绑定的扩展 Get-VMSwitch | Get-VMSwitchExtension # 对异常绑定的第三方代理/WFP重定向扩展执行禁用,替换尖括号内内容为实际值 Disable-VMSwitchExtension -VMSwitchName <你的虚拟交换机名称> -Name <异常代理扩展名称> # 重置虚拟网卡的基础协议绑定 Enable-NetAdapterBinding -Name "vEthernet (<你的Hyper-V虚拟网卡名称>)" -ComponentID ms_tcpip,ms_server
- 检查全系统服务账户的WinHTTP代理配置
之前仅验证了当前交互用户的WinHTTP配置,Windows后台服务运行在System、NetworkService、LocalService三个独立账户上下文,各自维护独立的代理配置:- 用PsExec工具提权到对应账户上下文,逐一执行代理查询命令:
:: 进入System账户上下文 psexec -i -s cmd.exe netsh winhttp show proxy :: 进入NetworkService账户上下文 psexec -i -u "NT AUTHORITY\NETWORK SERVICE" cmd.exe netsh winhttp show proxy :: 进入LocalService账户上下文 psexec -i -u "NT AUTHORITY\LOCAL SERVICE" cmd.exe netsh winhttp show proxy
- 若任意账户下查询到代理配置,直接执行重置命令:
netsh winhttp reset proxy netsh winhttp reset tracing
- 全局禁用WPAD自动代理探测
仅删除单个用户的WPAD注册表键无法阻止系统级服务的自动探测行为,执行以下命令全局关闭WPAD:
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" /v DisableWpad /t REG_DWORD /d 1 /f reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WinHttpAutoProxySvc" /v Start /t REG_DWORD /d 4 /f sc config WinHttpAutoProxySvc start= disabled sc stop WinHttpAutoProxySvc
排查静态路由与端口转发规则
- 执行
route print查看路由表,检查是否存在指向Squid代理IP段的静态路由,尤其是绑定在Hyper-V虚拟网卡上的异常路由,确认后执行route delete <目标网段>删除 - 执行
netsh interface portproxy show all检查是否存在端口转发规则将本地流量重定向到Squid代理,确认后执行对应删除命令清理
- 执行
定位发起连接的具体进程
如果以上操作完成后仍有异常流量,直接抓包定位发起请求的进程PID:
:: 启动抓包,捕获所有到Squid代理IP的流量 netsh trace start capture=yes IPv4.Address=<Squid代理IP> tracefile=C:\net_trace.etl :: 等待日志中出现新的连接记录后停止抓包 netsh trace stop
- 解析生成的etl抓包文件,匹配目标端口8080的流量对应的进程PID,执行
tasklist /fi "PID eq <PID值>"定位具体进程。日志中的/gofrom/RPC2路径常见于Hyper-V复制服务、Windows更新组件、系统管理代理的自动探测请求,定位到进程后直接在对应服务配置中关闭代理探测即可。
内容的提问来源于stack exchange,提问作者Matija92
相关产品推荐
相关产品推荐

