Android Unbound DNS
Goal is to get Unbound DNS fully working with UI to configure it and system integration (replacing system DNS)
Step-By-Step Guide:
Compile Unbound DNS for Android:
- Android NDK r12
- Set environment variables according to your local paths
- required vars are LOCAL_ANDROID_NDK_HOME and LOCAL_ANDROID_NDK_HOST_PLATFORM, see _setenv_android.bash file for reference
- optional var _NO_CHECK_SIGNATURE, set to non-zero value to skip GPG signatures checking
- Download Unbound and libraries into fetched repository
- Run cleanup (will remove old folders and unpack original archives)
- Launch the build script
- Collect all libraries and binaries using packaging script
- Final compiled binaries and libraries are put within "package" directory in build root
Compile Android application:
- Move to Android directory
- Check that package.zip is in place
- ls -lsa app/src/main/assets/package.zip
- Compile android app using Gradle
- ./gradlew clean assemble -q -S
- ./gradlew check -q -S
- Install Android application to connected device
Running Unbound DNS standalone from ADB SHELL:
-
Upload the package to android device
adb push package.zip /data/local/tmp/
-
Get shell
adb shell
-
Get to package location
cd /data/local/tmp/
-
Expand zip archive
unzip package.zip
cd /data/local/tmp/package/bin
-
Set Environment PATH variable
./env.sh
-
Setup remote control certificate
unbound-control-setup
-
Setup DNSSEC root key
unbound-anchor -h
-
If you've edited unbound.conf, check it's correct
unbound-checkconf
-
Run applications from bin
folder
unbound -v -c unbound.conf
-
Check if the server is running and unbound-control set up correctly
unbound-control status
-
Check if the DNSSEC verification works correctly
unbound-host -d -C unbound.conf google.com