You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
Andrea Gottardo 0df6a1dbe0 android: add DoT server(s) IP address to VPNBuilder routes
Updates tailscale/tailscale#915

This is a first attempt at diagnosing what is preventing DNS queries from resolving on Android whenever a custom DoT configuration is specified in the system settings. We observed that Android is attempting to reach the DoT server using the Tailscale interface, however we were not setting the proper routes to allow these queries to go through.

This is a first step and it requires a change in the backend because at the moment the following error is thrown when DoT traffic attempts to leave the device through the Tailscale interface:

```
34.7M/343.4M open-conn-track: timeout opening (TCP 100.77.253.30:49652 => 188.172.213.149:853); no associated peer node
```

Signed-off-by: Andrea Gottardo <andrea@gottardo.me>
4 months ago
.github go.mod: run go mod tidy, add github action 7 months ago
.vscode use network callback to update DNS config when network changes (#147) 11 months ago
android android: add DoT server(s) IP address to VPNBuilder routes 4 months ago
docker android/docker: combine CMD invocations into a single line (#448) 5 months ago
libtailscale android: add DoT server(s) IP address to VPNBuilder routes 4 months ago
metadata/en-US metadata: update images for F-Droid (#381) 7 months ago
scripts *: add a CI check for license headers and fix all files 9 months ago
tool *: introduce tool/go following our common pattern 8 months ago
version version: handle whitespace in ${mod_version} (#141) 1 year ago
.gitignore android/makefile: add tv-specific build variant (#445) 5 months ago
LICENSE all: initial commit 5 years ago
Makefile android/docker: combine CMD invocations into a single line (#448) 5 months ago
PATENTS all: initial commit 5 years ago
README.md docs/makefile: update docker build instructions (#442) 5 months ago
eclipse-formatter.xml use network callback to update DNS config when network changes (#147) 11 months ago
flake.lock flake.*: add Nix support for establishing a development environment 3 years ago
flake.nix flake.*: add Nix support for establishing a development environment 3 years ago
go.mod android: bump OSS to 1.71.x; update dependencies (#449) 4 months ago
go.sum android: bump OSS to 1.71.x; update dependencies (#449) 4 months ago
go.toolchain.rev android: bump version code (#439) 5 months ago

README.md

Tailscale Android Client

https://tailscale.com

Private WireGuard® networks made easy

Overview

This repository contains the open source Tailscale Android client.

Using

Get it on Google Play

Help us test new features and bug-fixes before they ship to all users! A beta testing track is available on the Play Store.

Amazon Appstore

The app can be downloaded from the Amazon Appstore for Amazon Fire tablets and Fire TV devices.

F-Droid

The F-Droid project builds the source code in this repository and maintains independently-built APKs. Note that F-Droid builds are not released, updated, or verified by the Tailscale team.

Preparing a build environment

There are several options for setting up a build environment. The Android Studio path is the most useful path for longer term development.

In all cases you will need:

  • Go runtime
  • Android SDK
  • Android SDK components (make androidsdk will install them)

Android Studio

  1. Install a Go runtime (https://go.dev/dl/).
  2. Install Android Studio (https://developer.android.com/studio).
  3. Start Android Studio, from the Welcome screen select "More Actions" and "SDK Manager".
  4. In the SDK manager, select the "SDK Tools" tab and install the "Android SDK Command-line Tools (latest)".
  5. Run make androidsdk to install the necessary SDK components.

If you would prefer to avoid Android Studio, you can also install an Android SDK. The makefile detects common paths, so sudo apt install android-sdk is sufficient on Debian / Ubuntu systems. To use an Android SDK installed in a non-standard location, set the ANDROID_SDK_ROOT environment variable to the path to the SDK.

If you installed Android Studio the tools may not be in your path. To get the correct tool path, run make androidpath and export the provided path in your shell.

Code Formatting

The ktmft plugin on the default setting should be used to autoformat all Java, Kotlin and XML files in Android Studio. Enable "Format on Save".

Docker

If you wish to avoid installing software on your host system, a Docker based development strategy is available, you can build and start a shell with:

make dockershell

Several other makefile recipes are available for setting up the proper build environment and running builds.

Note that the docker makefile recipes s will preserve the image and remove container on completion. If changes are made to the build environment or toolchain, cached docker images may need to be rebuilt.
The docker build image name is parameterized in the makefile and changing it provides a simple means to do this.

Nix

If you have Nix 2.4 or later installed, a Nix development environment can be set up with:

alias nix='nix --extra-experimental-features "nix-command flakes"'
nix develop

Building

make apk
make install

Building a release

Use make tag_release to bump the Android version code, update the version name, and tag the current commit.

We only guarantee to support the latest Go release and any Go beta or release candidate builds (currently Go 1.14) in module mode. It might work in earlier Go versions or in GOPATH mode, but we're making no effort to keep those working.

Developing on a Fire Stick TV

On the Fire Stick:

  • Settings > My Fire TV > Developer Options > ADB Debugging > ON

Then some useful commands:

adb connect 10.2.200.213:5555
adb install -r tailscale-fdroid.apk
adb shell am start -n com.tailscale.ipn/com.tailscale.ipn.MainActivity
adb shell pm uninstall com.tailscale.ipn

Bugs

Please file any issues about this code or the hosted service on the tailscale issue tracker.

Contributing

under_construction.gif

PRs welcome, but we are still working out our contribution process and tooling.

We require Developer Certificate of Origin Signed-off-by lines in commits.

About Us

We are Tailscale. See https://tailscale.com/company for more about us and what we're building.

WireGuard is a registered trademark of Jason A. Donenfeld.