基于WireGuard的VPN。免费支持最多20个节点。 https://tailscale.com/

Claus Lensbøl 3fe022877a client/systray: temporarily replace systray module (#16807) hai 7 meses
.bencher babd163aac bencher: add config to suppress failures on benchmark regressions. %!s(int64=4) %!d(string=hai) anos
.github f80ea92030 .github/workflows: enforce github action version pinning (#16768) hai 7 meses
appc ec5f04b274 appc: fix a deadlock in route advertisements (#15031) hai 1 ano
atomicfile 6feb3c35cb ipn/store: automatically migrate between plaintext and encrypted state (#16318) hai 8 meses
chirp 259bab9bff scripts/check_license_headers.sh: delete, rewrite as a Go test hai 8 meses
client 3fe022877a client/systray: temporarily replace systray module (#16807) hai 7 meses
clientupdate e7325213a7 clientupdate: fix MSI exit code handling, preserve MSI and updater logs on Windows hai 11 meses
cmd 3fe022877a client/systray: temporarily replace systray module (#16807) hai 7 meses
control 5731869565 health: add an ETag to UnhealthyState for change detection hai 7 meses
derp 77d19604f4 derp/derphttp: fix DERP TLS client server name inclusion in URL form hai 8 meses
disco 1677fb1905 wgengine/magicsock,all: allocate peer relay over disco instead of PeerAPI (#16603) hai 7 meses
docs 5f678b9bec docs/windows/policy: add ExitNode.AllowOverride as an option to ExitNodeID policy hai 8 meses
doctor 5be6ff9b62 all: remove non-applicable "linux" deps on Android hai 10 meses
drive aa6a2d1e56 drive/driveimpl: use sudo or su to run file server hai 7 meses
envknob 35b11e7be5 envknob/featureknob: restore SSH and exit-node capability for Home Assistant (#16263) hai 8 meses
feature d897d809d6 feature/taildrop: do not use m.opts.Dir for Android (#16316) hai 7 meses
gokrazy 5eafce7e25 gokrazy/natlab: update gokrazy, wire up natlab tests to GitHub CI hai 1 ano
health 5731869565 health: add an ETag to UnhealthyState for change detection hai 7 meses
hostinfo d6fd865d41 hostinfo, ipnlocal: add optional os-specific callback for querying the hostname (#15647) hai 11 meses
internal f421907c38 all-kube: create Tailscale Service for HA kube-apiserver ProxyGroup (#16572) hai 7 meses
ipn 23a0398136 ipn/ipnlocal, net/dns: use slices.Equal to simplify code (#16641) hai 7 meses
jsondb 71029cea2d all: update copyright and license headers %!s(int64=3) %!d(string=hai) anos
k8s-operator f2fd7a0514 cmd/k8s-operator,k8s-operator: allow setting a `priorityClassName` (#16685) hai 7 meses
kube eed3e5dc61 ipn/store/kubestore,kube: fix cert error in admin UI (#16717) hai 7 meses
licenses c29b6c288a licenses: update license notices hai 11 meses
log 5d61d1c7b0 log/sockstatlog: don't block for more than 5s on shutdown hai 1 ano
logpolicy fbc6a9ec5a all: detect JetKVM and specialize a handful of things for it hai 8 meses
logtail 4fa9411e3f logtail: remove unneeded IP redaction code hai 10 meses
maths 820bdb870a maths: add exponentially weighted moving average type hai 1 ano
metrics 68b12a74ed metrics,syncs: add ShardedInt support to metrics.LabelMap hai 1 ano
net 5bb42e3018 wgengine/router: rely on events for deleted IP rules (#16744) hai 7 meses
omit 1ea100e2e5 cmd/tailscaled, ipn/conffile: support ec2 user-data config file hai 1 ano
packages eb6883bb5a go.mod: upgrade nfpm to v2 (#8786) %!s(int64=2) %!d(string=hai) anos
paths fbc6a9ec5a all: detect JetKVM and specialize a handful of things for it hai 8 meses
portlist 5e305032a9 portlist: add Plan 9 support hai 11 meses
posture cc988596a2 posture: propagate serial number from MDM on Android hai 9 meses
prober 42f71e959d prober: speed up TestCRL ~450x by baking in some test keys hai 8 meses
proxymap 9f9470fc10 ipnlocal,proxymap,wgengine/netstack: add optional WhoIs/proxymap debug hai 1 ano
release 83cd446b5d release/dist/qnap: upgrade to Ubuntu 24.04 Docker image hai 8 meses
safesocket 5be6ff9b62 all: remove non-applicable "linux" deps on Android hai 10 meses
safeweb 3177e50b14 safeweb: Set Cross-Origin-Opener-Policy for browser requests (#15936) hai 10 meses
scripts 57d653014b scripts/installer.sh: add FreeBSD 15 (#16741) hai 7 meses
sessionrecording bcaea4f245 k8s-operator,sessionrecording: fixing race condition between resize (#16454) hai 7 meses
smallzstd 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
ssh 67514f5eb2 ssh/tailssh: fix path of "true" on Darwin (#16569) hai 7 meses
syncs 84aa7ff3bb syncs: fix AtomicValue.CompareAndSwap (#16137) hai 9 meses
tailcfg a9f3fd1c67 wgengine/magicsock: fix magicsock deadlock around Conn.NoteRecvActivity (#16687) hai 7 meses
tempfork 46505ca338 tempfork/acme: update to latest version (#15543) hai 11 meses
tka 42da161b19 tka: reject removal of the last signing key hai 8 meses
tool 47dff33eac tool/gocross: remove GOROOT to ensure correct toolchain use hai 8 meses
tsconsensus 12e92b1b08 tsconsensus: skipping slow non-applicable tests on Windows for now hai 8 meses
tsconst 4c2e978f1e cmd/tailscale/cli: support passing network lock keys via files hai 1 ano
tsd deb0b255ff all: update the tsd.System constructor name (#15372) hai 10 meses
tsnet 47b5f10165 cmd/tsidp,tsnet: update tsidp oidc-key store path (#16735) hai 7 meses
tstest 3d1e4f147a tstest/natlab: fix conn.Close race with conn.ReadFromUDPAddrPort (#16710) hai 7 meses
tstime aff8f1b358 tstime: add GoDuration which JSON serializes with time.Duration.String (#15726) hai 10 meses
tsweb 259bab9bff scripts/check_license_headers.sh: delete, rewrite as a Go test hai 8 meses
types 1677fb1905 wgengine/magicsock,all: allocate peer relay over disco instead of PeerAPI (#16603) hai 7 meses
util 5bb42e3018 wgengine/router: rely on events for deleted IP rules (#16744) hai 7 meses
version 30da2e1c32 cmd/tailscale/cli: add "configure jetkvm" subcommand hai 8 meses
wf d837e0252f wf/firewall: allow link-local multicast for permitted local routes when the killswitch is on on Windows hai 1 ano
wgengine 4666d4ca2a wgengine/magicsock: fix missing Conn.hasPeerRelayServers.Store() call (#16792) hai 7 meses
words 5ed53c7e39 words: C what I did there? hai 11 meses
.gitattributes 1813c2a162 .: add .gitattributes entry to use Go hunk-header driver %!s(int64=4) %!d(string=hai) anos
.gitignore b75fe9eeca cmd/k8s-operator: Add NOTES.txt to Helm chart (#16364) hai 8 meses
.golangci.yml d8e3bce0b4 .github: Bump golangci/golangci-lint-action from 6.5.0 to 7.0.0 (#15476) hai 11 meses
ALPINE.txt 2685484f26 Bump Alpine, link iptables back to legacy (#15428) hai 11 meses
AUTHORS a8d8b8719a Move Linux client & common packages into a public repo. %!s(int64=6) %!d(string=hai) anos
CODEOWNERS 0913ec023b CODEOWNERS: add the start of an owners file %!s(int64=2) %!d(string=hai) anos
CODE_OF_CONDUCT.md d4060f1a39 CODE_OF_CONDUCT.md: update Code of Conduct (#16806) hai 7 meses
Dockerfile 639fed6856 Dockerfile,build_docker.sh: add a note on how to build local images (#16471) hai 8 meses
Dockerfile.base 2685484f26 Bump Alpine, link iptables back to legacy (#15428) hai 11 meses
LICENSE 947c14793a all: update tools that manage copyright headers %!s(int64=3) %!d(string=hai) anos
Makefile f80ea92030 .github/workflows: enforce github action version pinning (#16768) hai 7 meses
PATENTS a8d8b8719a Move Linux client & common packages into a public repo. %!s(int64=6) %!d(string=hai) anos
README.md f5a873aca4 commit-messages.md: make our git commit message style guide public hai 11 meses
SECURITY.md e59605595e Add a SECURITY.md for vulnerability reports. %!s(int64=6) %!d(string=hai) anos
VERSION.txt 2a5d9c7269 VERSION.txt: this is v1.87.0 hai 7 meses
api.md 124ff3b034 {api.md,publicapi}: remove old API docs (#13468) hai 1 ano
assert_ts_toolchain_match.go 1005cbc1e4 tailscaleroot: panic if tailscale_go build tag but Go toolchain mismatch hai 1 ano
build_dist.sh 834630fedf cmd/tailscale: add systray subcommand on Linux builds hai 7 meses
build_docker.sh 4dfed6b146 cmd/{k8s-operator,k8s-proxy}: add kube-apiserver ProxyGroup type (#16266) hai 8 meses
flake.lock f1f334b23d flake.lock/go.mod.sri: update flake version info (#16631) hai 7 meses
flake.nix f1f334b23d flake.lock/go.mod.sri: update flake version info (#16631) hai 7 meses
go.mod 3fe022877a client/systray: temporarily replace systray module (#16807) hai 7 meses
go.mod.sri f1f334b23d flake.lock/go.mod.sri: update flake version info (#16631) hai 7 meses
go.sum 3fe022877a client/systray: temporarily replace systray module (#16807) hai 7 meses
go.toolchain.branch 836c01258d go.toolchain.branch: update to Go 1.24 (#15016) hai 1 ano
go.toolchain.rev 8114260019 go.toolchain.rev: bump to go 1.24.4 (#16230) hai 9 meses
gomod_test.go aae1a28a2b go.mod: add test that replace directives aren't added in oss %!s(int64=2) %!d(string=hai) anos
header.txt 1a08ea5990 cmd/k8s-operator: operator can create subnetrouter (#9505) %!s(int64=2) %!d(string=hai) anos
license_test.go 259bab9bff scripts/check_license_headers.sh: delete, rewrite as a Go test hai 8 meses
pkgdoc_test.go 6bbf98bef4 all: skip looking for package comments in .git/ repository (#15384) hai 11 meses
pull-toolchain.sh 0e4f2bdd0c pull-toolchain.sh: don't run update-flake.sh %!s(int64=3) %!d(string=hai) anos
shell.nix f1f334b23d flake.lock/go.mod.sri: update flake version info (#16631) hai 7 meses
staticcheck.conf 2716250ee8 all: cleanup unused code, part 2 (#10670) %!s(int64=2) %!d(string=hai) anos
update-flake.sh 50a570a83f Code Improvements (#11311) %!s(int64=2) %!d(string=hai) anos
version-embed.go 36ea792f06 Fix various linting, vet & static check issues hai 1 ano
version_tailscale_test.go 1005cbc1e4 tailscaleroot: panic if tailscale_go build tag but Go toolchain mismatch hai 1 ano
version_test.go d7770d2b81 .github/workflows: test that ./go/tool version matches go mod version hai 8 meses

README.md

Tailscale

https://tailscale.com

Private WireGuard® networks made easy

Overview

This repository contains the majority of Tailscale's open source code. Notably, it includes the tailscaled daemon and the tailscale CLI tool. The tailscaled daemon runs on Linux, Windows, macOS, and to varying degrees on FreeBSD and OpenBSD. The Tailscale iOS and Android apps use this repo's code, but this repo doesn't contain the mobile GUI code.

Other Tailscale repos of note:

For background on which parts of Tailscale are open source and why, see https://tailscale.com/opensource/.

Using

We serve packages for a variety of distros and platforms at https://pkgs.tailscale.com.

Other clients

The macOS, iOS, and Windows clients use the code in this repository but additionally include small GUI wrappers. The GUI wrappers on non-open source platforms are themselves not open source.

Building

We always require the latest Go release, currently Go 1.23. (While we build releases with our Go fork, its use is not required.)

go install tailscale.com/cmd/tailscale{,d}

If you're packaging Tailscale for distribution, use build_dist.sh instead, to burn commit IDs and version info into the binaries:

./build_dist.sh tailscale.com/cmd/tailscale
./build_dist.sh tailscale.com/cmd/tailscaled

If your distro has conventions that preclude the use of build_dist.sh, please do the equivalent of what it does in your distro's way, so that bug reports contain useful version information.

Bugs

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

Contributing

PRs welcome! But please file bugs. Commit messages should reference bugs.

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

See commit-messages.md (or skim git log) for our commit message style.

About Us

Tailscale is primarily developed by the people at https://github.com/orgs/tailscale/people. For other contributors, see:

Legal

WireGuard is a registered trademark of Jason A. Donenfeld.