@
missdeer 要自己实现edns-client-subnet也不难。
如果你不想看相关文档,也不想大改代码,那么可以通过篡改DNS包(dnsPacket)的方式简单实现edns-client-subnet协议:
1.先篡改DNS Hedader,将Additional RRs改为1:
dnsPacket[10]=0x00;
dnsPacket[11]=0x01;
2.然后在dnsPacket后面追加下面的22字节Additional records数据(16进制表示):
000029020000000000000b00080007000118007f0000
注:主要关注最后3个字节,它取的是客户端IP地址的前3个字节。
3.将上面22字节中最后3个字节改成客户端IP的前3个字节,示例如下:
dnsPacket[size-3]=192;
dnsPacket[size-2]=168;
dnsPacket[size-1]=1;
另外关于如何拦截,可以写个简单的DNS代理程序即可实现。