This is the Android client for MasterDnsVPN. Before using this app, you must install and configure the server side from the main project first. The app will not work without a running MasterDnsVPN server.
Don't want to build from source? Download the latest pre-built APK directly from the Releases page.
| APK | Architecture | Use case |
|---|---|---|
| ...-arm64-v8a.apk | ARM 64-bit | Most modern Android phones |
| ...-armeabi-v7a.apk | ARM 32-bit | Older Android phones |
| ...-universal.apk | Universal | When unsure |
MasterDnsVPN is a high-performance DNS-over-UDP tunnel that encrypts and routes your traffic through a remote server, bypassing censorship and surveillance. This repository contains the Android client app built on top of the same Go engine.
| Tool | Version | Download |
|---|---|---|
| Go | 1.22+ | https://go.dev/dl |
| Android Studio | Ladybug+ | https://developer.android.com/studio |
| Android SDK | API 26+ (target API 35) | via Android Studio SDK Manager |
| Android NDK | 27.x | via Android Studio SDK Manager |
| gomobile | latest | go install golang.org/x/mobile/cmd/gomobile@latest |
go install golang.org/x/mobile/cmd/gomobile@latest
gomobile init
.\build_aar.ps1
This script:
gomobile bind → builds android/app/libs/masterdnsvpn.aargradlew assembleDebug → produces the APK| File | Path |
|---|---|
| Go AAR library | android/app/libs/masterdnsvpn.aar |
| Debug APK | android/app/build/outputs/apk/debug/ |
# Step 1 — Build AAR (arm64 only)
$env:GOFLAGS = "-mod=mod"
$env:ANDROID_HOME = "$env:USERPROFILE\AppData\Local\Android\Sdk"
$ndkVer = (Get-ChildItem "$env:ANDROID_HOME\ndk" | Sort-Object Name -Descending | Select-Object -First 1).Name
$env:ANDROID_NDK_HOME = "$env:ANDROID_HOME\ndk\$ndkVer"
gomobile bind -target android/arm64 -androidapi 26 -javapkg com.masterdnsvpn.gomobile `
-o "android\app\libs\masterdnsvpn.aar" masterdnsvpn-go/cmd/android
# Step 2 — Build APK
cd android
.\gradlew.bat assembleDebug
# Step 3 — Install on device
adb install "app\build\outputs\apk\debug\MasterDnsVPN-1.0.0-beta-arm64-v8a.apk"
VpnService to capture all device traffic0.0.0.0:8090 → shows address/port to configure on connected devices┌──────────────────────────────────────────────────────────┐
│ Android App (Kotlin + Compose) │
│ │
│ HomeScreen ──► HomeViewModel ──► TunnelController │
│ │ │
│ ┌─────────────┴──────────────┐ │
│ │ DnsTunnelVpnService (TUN) │ │
│ │ DnsTunnelProxyService │ │
│ └─────────────┬──────────────┘ │
│ │ │
│ GoMobileBridge (JNI) │
└──────────────────────────────────────────────────────────┘
│
┌───────────────▼──────────────────┐
│ Go Engine (masterdnsvpn.aar) │
│ StartInstance / StopInstance │
│ StartTunBridge (gVisor) │
│ StartSocksBalancer (meta) │
│ GetStats / GetBandwidth │
└──────────────────────────────────┘
Device apps → TUN fd → gVisor netstack → SOCKS5 (Go) → DNS tunnel → MasterDnsVPN server
Device apps → TUN fd → gVisor → SOCKS Balancer ─┬─ Profile-1 → server-1
├─ Profile-2 → server-2
└─ Profile-N → server-N
See LICENSE.
If you find this project useful, consider supporting its development:
| Network | Address |
|---|---|
| TON | UQBW_LoEhcYPIzZL_dzp-OMsqI5uAwv8p6dXy8wzzkPU-CQQ |
| BNB / USDT (BEP-20) | 0x951acaf8d4b61a000d3b5c697abcabf52973d0cf |
| TRX | TL4Kej6DjJmT9gQ5ghmQcvsEUHPdnNNPyj |
| SOL | 45kAfGyh13bcyYTdbNLkVfBGtMgq4WMijLgdBK9G9ugN |
Go
70.0%
Kotlin
29.9%
This is the Android client for MasterDnsVPN. Before using this app, you must install and configure the server side from the main project first. The app will not work without a running MasterDnsVPN server.
Don't want to build from source? Download the latest pre-built APK directly from the Releases page.
| APK | Architecture | Use case |
|---|---|---|
| ...-arm64-v8a.apk | ARM 64-bit | Most modern Android phones |
| ...-armeabi-v7a.apk | ARM 32-bit | Older Android phones |
| ...-universal.apk | Universal | When unsure |
MasterDnsVPN is a high-performance DNS-over-UDP tunnel that encrypts and routes your traffic through a remote server, bypassing censorship and surveillance. This repository contains the Android client app built on top of the same Go engine.
| Tool | Version | Download |
|---|---|---|
| Go | 1.22+ | https://go.dev/dl |
| Android Studio | Ladybug+ | https://developer.android.com/studio |
| Android SDK | API 26+ (target API 35) | via Android Studio SDK Manager |
| Android NDK | 27.x | via Android Studio SDK Manager |
| gomobile | latest | go install golang.org/x/mobile/cmd/gomobile@latest |
go install golang.org/x/mobile/cmd/gomobile@latest
gomobile init
.\build_aar.ps1
This script:
gomobile bind → builds android/app/libs/masterdnsvpn.aargradlew assembleDebug → produces the APK| File | Path |
|---|---|
| Go AAR library | android/app/libs/masterdnsvpn.aar |
| Debug APK | android/app/build/outputs/apk/debug/ |
# Step 1 — Build AAR (arm64 only)
$env:GOFLAGS = "-mod=mod"
$env:ANDROID_HOME = "$env:USERPROFILE\AppData\Local\Android\Sdk"
$ndkVer = (Get-ChildItem "$env:ANDROID_HOME\ndk" | Sort-Object Name -Descending | Select-Object -First 1).Name
$env:ANDROID_NDK_HOME = "$env:ANDROID_HOME\ndk\$ndkVer"
gomobile bind -target android/arm64 -androidapi 26 -javapkg com.masterdnsvpn.gomobile `
-o "android\app\libs\masterdnsvpn.aar" masterdnsvpn-go/cmd/android
# Step 2 — Build APK
cd android
.\gradlew.bat assembleDebug
# Step 3 — Install on device
adb install "app\build\outputs\apk\debug\MasterDnsVPN-1.0.0-beta-arm64-v8a.apk"
VpnService to capture all device traffic0.0.0.0:8090 → shows address/port to configure on connected devices┌──────────────────────────────────────────────────────────┐
│ Android App (Kotlin + Compose) │
│ │
│ HomeScreen ──► HomeViewModel ──► TunnelController │
│ │ │
│ ┌─────────────┴──────────────┐ │
│ │ DnsTunnelVpnService (TUN) │ │
│ │ DnsTunnelProxyService │ │
│ └─────────────┬──────────────┘ │
│ │ │
│ GoMobileBridge (JNI) │
└──────────────────────────────────────────────────────────┘
│
┌───────────────▼──────────────────┐
│ Go Engine (masterdnsvpn.aar) │
│ StartInstance / StopInstance │
│ StartTunBridge (gVisor) │
│ StartSocksBalancer (meta) │
│ GetStats / GetBandwidth │
└──────────────────────────────────┘
Device apps → TUN fd → gVisor netstack → SOCKS5 (Go) → DNS tunnel → MasterDnsVPN server
Device apps → TUN fd → gVisor → SOCKS Balancer ─┬─ Profile-1 → server-1
├─ Profile-2 → server-2
└─ Profile-N → server-N
See LICENSE.
If you find this project useful, consider supporting its development:
| Network | Address |
|---|---|
| TON | UQBW_LoEhcYPIzZL_dzp-OMsqI5uAwv8p6dXy8wzzkPU-CQQ |
| BNB / USDT (BEP-20) | 0x951acaf8d4b61a000d3b5c697abcabf52973d0cf |
| TRX | TL4Kej6DjJmT9gQ5ghmQcvsEUHPdnNNPyj |
| SOL | 45kAfGyh13bcyYTdbNLkVfBGtMgq4WMijLgdBK9G9ugN |
Go
70.0%
Kotlin
29.9%