一.问题

     最近在折腾anyconnect,拿来玩战地1,主要还是因为某sock在我这蜜汁校园网下太不稳定了,而常规的vpn又被ban协议了(好像我把系统玩坏了,我才不会承认呢!),然后要处理dns的问题,因为要做no-route分流必须考虑到cdn的问题,不然就没意义了,所以就把前一段时间折腾的Pcap_dnsproxy拿出来了,简单的配置了一下让它监听内网tunnel,然后改了下ocserv的配置文件将dns也设置为内网tunnel的ip,然后就好了,不过我在玩了一段时间后总是发现Pcap_dnsproxy会dead,主要状况是进程还在,但是对任何查询都无响应,即使是在服务器上dig也是如此,这就很尴尬了。

二.分析

      碰到问题去翻log是个好习惯,而且配合谷歌食用风味更佳(雾),然而这次翻到的log却没有给我直接找到解决方法,log里除了标示着程序启动读取config的输出以外就只有一条错误了(因为这条错误刷屏了……)

错误:Network Error: Socket initialization error, error code is 97

啥也看不出是吧,通过谷歌搜索这句话,可以看到github上一个Pcap_dnsproxy的issue里有出现,开始很惊喜,然而看了下发现并没有解决,只是一提,不过也给了一部分信息,项目的作者说97是协议不支持,程序无法初始化监听,那么问题就来了,是啥协议啥监听不成功?

把程序的配置文件从头翻到尾,只有TCP/UDP/IPV4/IPV6这几个是可以作为监听配置的,然后进一步分析,TCP和UDP是肯定不会有问题的(有问题这台机器还能跑啥),那么就是IPV6的锅了,很简单,因为我用的是阿里云的机器,不支持IPV6,好了,那我把所有IPV6的监听全部干掉,在对配置文件一番修改之后,啥也没变,还是这样(大写的尴尬)……

这到底是为什么呢? 阅读全文→