diff --git a/service/src/main/java/com/github/kr328/clash/service/TunService.kt b/service/src/main/java/com/github/kr328/clash/service/TunService.kt
index d8e3a4b6c2939d0b73a1f20ba174bd503ad2173e..93fa1e82e3e19cfda4fd3fa531101e514292897c 100644
--- a/service/src/main/java/com/github/kr328/clash/service/TunService.kt
+++ b/service/src/main/java/com/github/kr328/clash/service/TunService.kt
@@ -138,6 +138,9 @@ class TunService : VpnService(), CoroutineScope by CoroutineScope(Dispatchers.De
                 resources.getStringArray(R.array.bypass_private_route).map(::parseCIDR).forEach {
                     addRoute(it.ip, it.prefix)
                 }
+
+                // Route of virtual DNS
+                addRoute(TUN_DNS, 32)
             } else {
                 addRoute(NET_ANY, 0)
             }
@@ -228,8 +231,8 @@ class TunService : VpnService(), CoroutineScope by CoroutineScope(Dispatchers.De
     companion object {
         private const val TUN_MTU = 9000
         private const val TUN_SUBNET_PREFIX = 30
-        private const val TUN_GATEWAY = "172.31.255.253"
-        private const val TUN_DNS = "198.18.0.1"
+        private const val TUN_GATEWAY = "172.19.0.1"
+        private const val TUN_DNS = "172.19.0.2"
         private const val NET_ANY = "0.0.0.0"
     }
 }
\ No newline at end of file