xiaokangwang / AndroidLibV2ray

GNU Affero General Public License v3.0
98 stars 86 forks source link

How about ship dnscache replace pdnsd? #13

Closed ghost closed 7 years ago

ghost commented 7 years ago

How about ship dnscache replace pdnsd?

I see android libv2ray shipped with pdnsd.

How about ship dnscache bind with libv2ray?

I am the author of dnscache https://github.com/netroby/dnscache

It was a very small dns cached resolver written with golang.

libv2ray using gomobile, i thought it will be very easy to integrate with my dnscache.

xiaokangwang commented 7 years ago

Sorry, but your code does implement the necessary function or we no longer need a pdnsd like binary to work.

For the most users using LibV2Ray, V2Ray does not need a separate DNS parser or cache (When user is using VPNService mode). DNS traffic will be treated as UDP traffic as LibV2Ray in VPNService mode does not discriminate DNS traffic. In this case, the DNS resolver is not used at all.

For the user that using iptables mode of LibV2Ray(a sunseting feature), a dns resolver is used in a way other than yours library are made for. DNS traffic redirected with iptable needs an DNS cacher that understand Linux TPROXY to work correctly, and V2Ray does not. To deal with this issue, pdnsd was introduced to LibV2Ray as it supports TPROXY and can handle redirected DNS traffic. I does not found a syscall import your project which is essential for supporting TPROXY.

As root mode(iptables mode) is losting popularity and can sunset at any time, there is no point to replace the binary we are shipping now.

Please let me know if you have any additional information or thought in this issue.

ghost commented 7 years ago

Fine