* Implemented Experimental <INCLUDE> split tunnelling support. (#5) Implemented Experimental <INCLUDE> split tunnelling support. This adds a prototype "include-mode" routing model for Android VPN configuration, addressing long-standing user requests for selectively tunneling only chosen applications. When enabled, the VPN builder whitelists specific package names rather than excluding all others. This avoids the need to maintain long exclude lists and supports targeted routing (e.g., only browsers, music players, etc). Details: Implemented a UI toggle button which turns on split tunneling, and which then presents the option to either include or exclude app packages in the VPNBuilder, without having to use MDM. *When Split tunnelling is disabled, the app excludes all packages in builtInDisallowedPackageNames by default, mirroring existing default functionality when no packages are manually added to the exclude list* If Included or Excluded packages are included by MDM, the split tunneling toggle is vacuously turned on -- and user include/exclude lists are ignored. Limitations: DNS resolver traffic can fail under include-mode when Tailscale DNS is active (different results observed across 3 devices). Disabling Tailscale DNS appears to mitigate the issue, but the underlying resolver interaction remains open for analysis. Feedback, testing results, and alternative approaches from developers or knowledgeable users are welcome and appreciated. This commit is intended as a discussion basis / RFC for upstream consideration and iteration :) --------- Signed-off-by: Danial Ramzan <danialramzan@gmail.com> * Implemented search bar in split-tunneling page. Signed-off-by: Danial Ramzan <danialramzan@gmail.com> --------- Signed-off-by: Danial Ramzan <danialramzan@gmail.com> |
3 weeks ago | |
|---|---|---|
| .github | 9 months ago | |
| .vscode | 2 years ago | |
| android | 3 weeks ago | |
| docker | 8 months ago | |
| libtailscale | 4 weeks ago | |
| metadata/en-US | 2 years ago | |
| scripts | 9 months ago | |
| tool | 1 year ago | |
| .gitignore | 10 months ago | |
| LICENSE | 6 years ago | |
| Makefile | 4 months ago | |
| PATENTS | 6 years ago | |
| README.md | 1 year ago | |
| build-tags.sh | 1 year ago | |
| eclipse-formatter.xml | 2 years ago | |
| flake.lock | 4 years ago | |
| flake.nix | 4 years ago | |
| go.mod | 3 weeks ago | |
| go.sum | 3 weeks ago | |
| go.toolchain.rev | 3 weeks ago | |
| version-ldflags.sh | 1 year ago | |
README.md
Tailscale Android Client
Private WireGuard® networks made easy
Overview
This repository contains the open source Tailscale Android client.
Using
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 androidsdkwill install them)
Android Studio
- Install a Go runtime (https://go.dev/dl/).
- Install Android Studio (https://developer.android.com/studio).
- Start Android Studio, from the Welcome screen select "More Actions" and "SDK Manager".
- In the SDK manager, select the "SDK Tools" tab and install the "Android SDK Command-line Tools (latest)".
- Run
make androidsdkto 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 docker-shell
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.
