问题记录
Proxifier,本地服务器均正常配置,并且比较重要的几点是
- 之前的某个时间点这套配置是可以使用的,并且未作任何更改。
- 本地服务器也是可用的,不论是本地程序通信还是局域网其他设备经过本地服务器通信都是完全没问题的
问题表现在目标程序提示无法联网;proxifier的连接日志中有类似于这样的日志:
Program.exe - www.baidu.com:443 (IPv6) open through proyx XXXXXX
Program.exe - www.baidu.com:443 (IPv6) close, X bytes sent, 0 bytes received, lifetime <1 sec
并且这两条日志基本上是同时出现的,即连接启动后立刻就断开了;查看通信流量,可见确实有流量,但非常小(几K)
问题定位
尝试使用浏览器,其他软件等多次测试各种网络连接,发现断网不是一定的,在某些情况下是可以联网的。
例如Edge浏览器,打开百度,谷歌,油管等,提示网络连接断开,但是打开必应(cn.bing.com)就是可以正常打开的,非常魔幻。
检查日志,发现bing相关的连接记录中,没有"[IPv6]"字段,推测问题和ipv6有关。
解决方法
尝试多种解决方法(调整规则,调整本地服务器-规则/程序等)均无效,但最后在一个看似无关的地方找到了解决方式:
- 控制面板 - 网络 中找到 网络适配器配置, 然后找到你的主网卡(因为我只有一个wifi网卡,所以只改了一个,多网卡环境需不需要全改不太确定。我猜是不需要的,只改负责对外通信的那个网卡就行),右键属性,在“此连接使用下列项目”中找到“Internet 协议版本6 (TCP/IPv6)”,把它前面的勾去掉即可。
这方法说白了就是直接关掉网络的IPv6支持,强制所有连接使用IPv4通信,然后proxifier就可以正常拦截处理所有的连接了。
晚上测试了一下,发现另一个方法也是可以的,应该算是官方解决方案了
- proxifier主界面,最上面找到 配置 ,在下面有三个项:服务器,规则和名称解析。打开名称解析,把默认的 自动探测名称解析方式 前面的勾取消掉,然后把第二个 由服务器进行域名解析的 前面的勾勾上。点击确定保存。
我也不知道为什么这样配置就可以了。看网络通信日志,里面其实还是有很多IPv6的请求,并且也是失败的(红色字体,有fail之类的关键词),但是这种类型的通信失败貌似可以被程序识别(目标程序?proxifier?服务器程序?),在IPv6通信失败后马上重发一个IPv4的包(日志中没有IPv6关键词),然后这个包的通信就会成功,然后网络就正常了。
这个方法应该是更加官方,更加合理的操作方法。不过考虑到前面的问题和日志内容,可能还是需要用纯IPv6通信的程序跑一下测试看看兼容性。
问题核心
目前看是proxifier不支持IPv6的流量处理导致的,如要修复可能需要更新版本(至少我现在的最新版本是不行的)(然后windows或者网卡驱动更新,给网络自动加上了IPv6,然后流量就走了v6,然后就挂了)
其他情况
网络搜索资料提示proxifier支持ipv6(但资料中说是支持ipv6服务器),理论上不会功能写一半支持服务器但不支持流量这种半吊子情况吧