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

Brad Fitzpatrick 723c775dbb tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing hai 1 ano
.bencher babd163aac bencher: add config to suppress failures on benchmark regressions. %!s(int64=4) %!d(string=hai) anos
.github 14c8b674ea Revert "licenses: add gliderlabs/ssh license" hai 1 ano
appc 0f5e031133 appc: optimize dns response observation for large route tables %!s(int64=2) %!d(string=hai) anos
atomicfile 280255acae various: add golangci-lint, fix issues (#7905) %!s(int64=2) %!d(string=hai) anos
chirp 71029cea2d all: update copyright and license headers %!s(int64=3) %!d(string=hai) anos
client dd48cad89a build(deps-dev): bump vite from 5.1.4 to 5.1.7 in /client/web hai 1 ano
clientupdate bff527622d ipn/ipnlocal,clientupdate: disallow auto-updates in containers (#11814) hai 1 ano
cmd 723c775dbb tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing hai 1 ano
control 723c775dbb tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing hai 1 ano
derp 723c775dbb tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing hai 1 ano
disco 706e30d49e disco: correct noun for nacl box type in disco docs %!s(int64=2) %!d(string=hai) anos
docs c8b0adb382 docs/windows/policy: add missing key expiration warning interval hai 1 ano
doctor 52f16b5d10 doctor/ethtool, ipn/ipnlocal: add ethtool bugreport check %!s(int64=2) %!d(string=hai) anos
drive 955ad12489 ipn/ipnlocal: only show Taildrive peers to which ACLs grant us access hai 1 ano
envknob da7c3d1753 envknob: ensure f is not nil before using it %!s(int64=2) %!d(string=hai) anos
health 723c775dbb tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing hai 1 ano
hostinfo 7132b782d4 hostinfo: use Distro field for distinguishing Windows Server builds hai 1 ano
internal 280255acae various: add golangci-lint, fix issues (#7905) %!s(int64=2) %!d(string=hai) anos
ipn 723c775dbb tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing hai 1 ano
jsondb 71029cea2d all: update copyright and license headers %!s(int64=3) %!d(string=hai) anos
k8s-operator 14ac41febc cmd/k8s-operator,k8s-operator: proxyclass affinity (#11862) hai 1 ano
kube c919ff540f cmd/k8s-operator,ipn/store/kubestore: patch secrets instead of updating %!s(int64=2) %!d(string=hai) anos
licenses bf46bff678 licenses: update license notices hai 1 ano
log 85febda86d all: use zstdframe where sensible (#11491) %!s(int64=2) %!d(string=hai) anos
logpolicy 723c775dbb tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing hai 1 ano
logtail 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
metrics 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
net 723c775dbb tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing hai 1 ano
packages eb6883bb5a go.mod: upgrade nfpm to v2 (#8786) %!s(int64=2) %!d(string=hai) anos
paths 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
portlist 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
posture a1abd12f35 cmd/tailscaled, net/tstun: build for aix/ppc64 hai 1 ano
prober 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
proxymap 3d37328af6 wgengine, proxymap: split out port mapping from Engine to new type %!s(int64=2) %!d(string=hai) anos
release 18765cd4f9 release/dist/qnap: omit .qpkg.codesigning files hai 1 ano
safesocket 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
safeweb 7349b274bd safeweb: handle mux pattern collisions more generally (#11801) hai 1 ano
scripts 14ac41febc cmd/k8s-operator,k8s-operator: proxyclass affinity (#11862) hai 1 ano
smallzstd 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
ssh e985c6e58f ssh/tailssh: try fetching group IDs for user with the 'id' command hai 1 ano
syncs c07aa2cfed syncs: fix flaky test by deleting the code it tested (Watch) hai 1 ano
tailcfg d5fc52a0f5 tailcfg: add auto exit node attribute (#11871) hai 1 ano
taildrop 2e404b769d all: use new AppendEncode methods available in Go 1.22 (#11079) %!s(int64=2) %!d(string=hai) anos
tempfork 82394debb7 cmd/tailscale: add shell tab-completion hai 1 ano
tka 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
tool e37eded256 tool/gocross: add android autoflags (#11465) %!s(int64=2) %!d(string=hai) anos
tsconst 71029cea2d all: update copyright and license headers %!s(int64=3) %!d(string=hai) anos
tsd 723c775dbb tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing hai 1 ano
tsnet 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
tstest 723c775dbb tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing hai 1 ano
tstime 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
tsweb 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
types 5100bdeba7 types/persist: remove unused field Persist.Provider hai 1 ano
util 1d3e77f373 util/syspolicy: add ReadStringArray interface (#11857) hai 1 ano
version 7c1d6e35a5 all: use Go 1.22 range-over-int hai 1 ano
wf 61a1644c2a go.mod, all: move away from inet.af domain seized by Taliban %!s(int64=2) %!d(string=hai) anos
wgengine 723c775dbb tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing hai 1 ano
words e0762fe331 words: add a list of things you should yahoo! %!s(int64=2) %!d(string=hai) anos
.gitattributes 1813c2a162 .: add .gitattributes entry to use Go hunk-header driver %!s(int64=4) %!d(string=hai) anos
.gitignore d74c771fda client/web: always use new web client; remove old client %!s(int64=2) %!d(string=hai) anos
.golangci.yml 3f576fc4ca ci: run 'go vet' in golangci-lint; fix errors in tests %!s(int64=2) %!d(string=hai) anos
ALPINE.txt 1b1b6bb634 ALPINE.txt,Dockerfile{.base},build_docker.sh: bump alpine (#10543) %!s(int64=2) %!d(string=hai) anos
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 452b81d56b Add a code of conduct. %!s(int64=6) %!d(string=hai) anos
Dockerfile 5ea071186e Dockerfile: use Go 1.22 %!s(int64=2) %!d(string=hai) anos
Dockerfile.base 1b1b6bb634 ALPINE.txt,Dockerfile{.base},build_docker.sh: bump alpine (#10543) %!s(int64=2) %!d(string=hai) anos
LICENSE 947c14793a all: update tools that manage copyright headers %!s(int64=3) %!d(string=hai) anos
Makefile 9258bcc360 Makefile: fix default SYNO_ARCH in Makefile hai 1 ano
PATENTS a8d8b8719a Move Linux client & common packages into a public repo. %!s(int64=6) %!d(string=hai) anos
README.md b6153efb7d go.mod, README.md: use Go 1.22 %!s(int64=2) %!d(string=hai) anos
SECURITY.md e59605595e Add a SECURITY.md for vulnerability reports. %!s(int64=6) %!d(string=hai) anos
VERSION.txt 2207643312 VERSION.txt: this is v1.65.0 hai 1 ano
api.md 9779eb6dba api.md: move device posture api to api.md hai 1 ano
build_dist.sh 82394debb7 cmd/tailscale: add shell tab-completion hai 1 ano
build_docker.sh 21a0fe1b9b ipn/store: omit AWS & Kubernetes support on 'small' Linux GOARCHes hai 1 ano
flake.lock 58b8f78e7e flake.nix: build tailscale with go 1.22 %!s(int64=2) %!d(string=hai) anos
flake.nix 65f215115f go.mod.sri: update SRI hash for go.mod changes hai 1 ano
go.mod add62af7c6 util/linuxfw,go.{mod,sum}: don't log errors when deleting non-existant chains and rules (#11852) hai 1 ano
go.mod.sri 65f215115f go.mod.sri: update SRI hash for go.mod changes hai 1 ano
go.sum add62af7c6 util/linuxfw,go.{mod,sum}: don't log errors when deleting non-existant chains and rules (#11852) hai 1 ano
go.toolchain.branch db3776d5bf go.toolchain.rev: bump to Go 1.22.0 (#11055) %!s(int64=2) %!d(string=hai) anos
go.toolchain.rev 92d3f64e95 go.toolchain.rev: bump to Go 1.22.2 hai 1 ano
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
pull-toolchain.sh 0e4f2bdd0c pull-toolchain.sh: don't run update-flake.sh %!s(int64=3) %!d(string=hai) anos
shell.nix 65f215115f go.mod.sri: update SRI hash for go.mod changes hai 1 ano
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 da75e49223 version: return correct Meta.MajorMinorPatch in non-dev builds %!s(int64=3) %!d(string=hai) anos
version_test.go 7e3bcd297e go.mod,wgengine/netstack: bump gvisor %!s(int64=2) %!d(string=hai) anos

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.22. (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 git log for our commit message style. It's basically the same as Go's 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.