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

Mihai Parparita b22b565947 cmd/tsconnect: allow xterm.js terminal options to be passed in %!s(int64=3) %!d(string=hai) anos
.bencher babd163aac bencher: add config to suppress failures on benchmark regressions. %!s(int64=4) %!d(string=hai) anos
.github 6dcc6313a6 CI: add `go mod tidy` workflow %!s(int64=3) %!d(string=hai) anos
atomicfile 23f37b05a3 atomicfile: update docs to clarify behavior of argument %!s(int64=3) %!d(string=hai) anos
chirp e1738ea78e chirp: add a 10s timeout when communicating with BIRD (#5444) %!s(int64=3) %!d(string=hai) anos
client facafd8819 client,cmd/tailscale,ipn,tka,types: implement tka initialization flow %!s(int64=3) %!d(string=hai) anos
cmd b22b565947 cmd/tsconnect: allow xterm.js terminal options to be passed in %!s(int64=3) %!d(string=hai) anos
control c66f99fcdc tailcfg, control/controlclient, ipn/ipnlocal: add c2n (control-to-node) system %!s(int64=3) %!d(string=hai) anos
derp a9f6cd41fd all: use syncs.AtomicValue %!s(int64=3) %!d(string=hai) anos
disco 8725b14056 all: migrate more code code to net/netip directly %!s(int64=3) %!d(string=hai) anos
docs 060ecb010f docs/k8s: make run.sh handle SIGINT %!s(int64=3) %!d(string=hai) anos
envknob 8b81254992 ipn/ipnlocal: reject tailscale up --ssh if disabled on tailnet %!s(int64=3) %!d(string=hai) anos
health 43f9c25fd2 cmd/tailscale: surface authentication errors in status.Health (#4748) %!s(int64=3) %!d(string=hai) anos
hostinfo 16939f0d56 hostinfo: detect being run in a container in more ways %!s(int64=3) %!d(string=hai) anos
internal 7c671b0220 .github/workflows: add gofmt (goimports) check %!s(int64=3) %!d(string=hai) anos
ipn f3ce1e2536 util/mak: deprecate NonNil, add type-safe NonNilSliceForJSON, NonNilMapForJSON %!s(int64=3) %!d(string=hai) anos
jsondb 96afd1db46 jsondb: small package to load/save JSON DBs. %!s(int64=3) %!d(string=hai) anos
kube 0868329936 all: use any instead of interface{} %!s(int64=4) %!d(string=hai) anos
licenses 3ed366ee1e licenses: update android licenses %!s(int64=3) %!d(string=hai) anos
log c41837842b wasm: drop pprof dependency %!s(int64=3) %!d(string=hai) anos
logpolicy 48e73e147a logtail,logpolicy: tweak minor cosmetic things %!s(int64=3) %!d(string=hai) anos
logtail 21cd402204 logtail: do not log when backing off (#5485) %!s(int64=3) %!d(string=hai) anos
metrics 94fb42d4b2 all: use testingutil.MinAllocsPerRun %!s(int64=4) %!d(string=hai) anos
net 7c49db02a2 wgengine/magicsock: don't use BPF receive when SO_MARK doesn't work. %!s(int64=3) %!d(string=hai) anos
packages 0868329936 all: use any instead of interface{} %!s(int64=4) %!d(string=hai) anos
paths a9f6cd41fd all: use syncs.AtomicValue %!s(int64=3) %!d(string=hai) anos
portlist 4950fe60bd syncs, all: move to using Go's new atomic types instead of ours %!s(int64=3) %!d(string=hai) anos
prober 4950fe60bd syncs, all: move to using Go's new atomic types instead of ours %!s(int64=3) %!d(string=hai) anos
safesocket 116f55ff66 all: gofmt for Go 1.19 %!s(int64=3) %!d(string=hai) anos
scripts 1c0286e98a scripts/installer.sh: add `-y` for unattended install %!s(int64=3) %!d(string=hai) anos
smallzstd 9cd4e65191 smallzstd: new package that constructs zstd small encoders/decoders. %!s(int64=5) %!d(string=hai) anos
ssh 4950fe60bd syncs, all: move to using Go's new atomic types instead of ours %!s(int64=3) %!d(string=hai) anos
syncs b75f81ec00 syncs: add generic AtomicValue %!s(int64=3) %!d(string=hai) anos
tailcfg d5e7e3093d hostinfo, tailcfg: split Hostinfo.OSVersion into separate fields %!s(int64=3) %!d(string=hai) anos
tempfork 116f55ff66 all: gofmt for Go 1.19 %!s(int64=3) %!d(string=hai) anos
tka be95aebabd tka: implement credential signatures (key material delegation) %!s(int64=3) %!d(string=hai) anos
tool 7e4883b261 .github/workflows: add tsconnect static build to wasm GitHub action %!s(int64=3) %!d(string=hai) anos
tsconst eccc2ac6ee net/interfaces/windows: update Tailscale interface detection logic to %!s(int64=4) %!d(string=hai) anos
tsnet 3344c3b89b tsnet: add Server method to listener %!s(int64=3) %!d(string=hai) anos
tstest c66f99fcdc tailcfg, control/controlclient, ipn/ipnlocal: add c2n (control-to-node) system %!s(int64=3) %!d(string=hai) anos
tstime 0e62a7d1a2 tstime/mono: fix Before function comment %!s(int64=4) %!d(string=hai) anos
tsweb 116f55ff66 all: gofmt for Go 1.19 %!s(int64=3) %!d(string=hai) anos
types 2aade349fc net/dns, types/dnstypes: update some comments, tests for DoH %!s(int64=3) %!d(string=hai) anos
util f3ce1e2536 util/mak: deprecate NonNil, add type-safe NonNilSliceForJSON, NonNilMapForJSON %!s(int64=3) %!d(string=hai) anos
version 1ac4a26fee ipn/localapi: send Tailscale version in ACME User-Agent (#5499) %!s(int64=3) %!d(string=hai) anos
wf a12aad6b47 all: convert more code to use net/netip directly %!s(int64=3) %!d(string=hai) anos
wgengine 7c49db02a2 wgengine/magicsock: don't use BPF receive when SO_MARK doesn't work. %!s(int64=3) %!d(string=hai) anos
words 185f2e4768 words: this title should have been a pun, but I chickened out (#5506) %!s(int64=3) %!d(string=hai) anos
.gitattributes 1813c2a162 .: add .gitattributes entry to use Go hunk-header driver %!s(int64=4) %!d(string=hai) anos
.gitignore 0ada42684b Makefile: update make spk target to use the new go spk builder %!s(int64=4) %!d(string=hai) anos
ALPINE.txt 88133c361e Docker: add ALPINE.txt to manage alpine versions %!s(int64=3) %!d(string=hai) anos
AUTHORS a8d8b8719a Move Linux client & common packages into a public repo. %!s(int64=6) %!d(string=hai) anos
CODE_OF_CONDUCT.md 452b81d56b Add a code of conduct. %!s(int64=6) %!d(string=hai) anos
Dockerfile 1d33157ab9 docs/k8s: use job control in run.sh %!s(int64=3) %!d(string=hai) anos
Dockerfile.base cfa484e1a2 Dockerfile: bump alpine to 3.16 %!s(int64=3) %!d(string=hai) anos
LICENSE bf6205d200 LICENSE: Reformat for Github %!s(int64=5) %!d(string=hai) anos
Makefile c3270af52b Makefile: add target for wasm and make it part of check %!s(int64=3) %!d(string=hai) anos
PATENTS a8d8b8719a Move Linux client & common packages into a public repo. %!s(int64=6) %!d(string=hai) anos
README.md e1309e1323 all: require Go 1.19 %!s(int64=3) %!d(string=hai) anos
SECURITY.md e59605595e Add a SECURITY.md for vulnerability reports. %!s(int64=6) %!d(string=hai) anos
VERSION.txt 53e08bd7ea VERSION.txt: this is 1.31 %!s(int64=3) %!d(string=hai) anos
api.md f7a36dfeb1 api.md: added missing quote to POST DNS Searchpaths request body example %!s(int64=3) %!d(string=hai) anos
build_dist.sh d5fb852718 build_dist.sh: add --box and --extra-small flag to produce smaller and boxed binaries %!s(int64=3) %!d(string=hai) anos
build_docker.sh cfa484e1a2 Dockerfile: bump alpine to 3.16 %!s(int64=3) %!d(string=hai) anos
go.mod 56f6fe204b go.mod, wgengine/wgint: bump wireguard-go %!s(int64=3) %!d(string=hai) anos
go.sum 56f6fe204b go.mod, wgengine/wgint: bump wireguard-go %!s(int64=3) %!d(string=hai) anos
go.toolchain.branch e5176f572e go.toolchain.rev: switch to Go 1.19rc2+ %!s(int64=3) %!d(string=hai) anos
go.toolchain.rev 2266b59446 go.toolchain.rev: bump to Go 1.19.1 %!s(int64=3) %!d(string=hai) anos
pull-toolchain.sh 408522ddad go.toolchain.rev: add update script %!s(int64=4) %!d(string=hai) anos
shell.nix 7a74466998 shell.nix: update Go toolchain to 1.19 %!s(int64=3) %!d(string=hai) anos
staticcheck.conf ece138ffc3 staticcheck.conf: remove unnecessary warning %!s(int64=4) %!d(string=hai) anos
version-embed.go 88133c361e Docker: add ALPINE.txt to manage alpine versions %!s(int64=3) %!d(string=hai) anos

README.md

Tailscale

https://tailscale.com

Private WireGuard® networks made easy

Overview

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

The Android app is at https://github.com/tailscale/tailscale-android

The Synology package is at https://github.com/tailscale/tailscale-synology

Using

We serve packages for a variety of distros 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 that are not open source.

Building

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.

We require the latest Go release, currently Go 1.19.

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.

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.