From 4e0885b790f07bfb94f39ef84cb932db0d9e2064 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Thu, 27 Feb 2020 17:41:03 +0800 Subject: [PATCH] Force to redirect TCP traffic to dest 53 port (for Android) --- src/acl/mod.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/acl/mod.rs b/src/acl/mod.rs index 0ac60568..ed17f404 100644 --- a/src/acl/mod.rs +++ b/src/acl/mod.rs @@ -273,6 +273,17 @@ impl AccessControl { pub async fn check_target_bypassed(&self, context: &Context, addr: &Address) -> bool { match self.mode { Mode::BlackList => { + // always redirect TCP DNS query (for android) + if cfg!(target_os="android") { + let port = match *addr { + Address::SocketAddress(ref saddr) => saddr.port(), + _ => 0, + }; + if port == 53 { + return true; + } + } + // Only hosts in bypass_list will be bypassed if self.black_list.check_address_matched(addr) { return true; @@ -291,6 +302,16 @@ impl AccessControl { false } Mode::WhiteList => { + // always redirect TCP DNS query (for android) + if cfg!(target_os="android") { + let port = match *addr { + Address::SocketAddress(ref saddr) => saddr.port(), + _ => 0, + }; + if port == 53 { + return false; + } + } // Only hosts in proxy_list will be proxied if self.white_list.check_address_matched(addr) { return false;