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

Will Norris f880c77df0 client/web: split login from nodeUpdate 2 anni fa
.bencher babd163aac bencher: add config to suppress failures on benchmark regressions. 4 anni fa
.github 33147c4591 .github: build gocross using regular GOPROXY settings 2 anni fa
appc 245ddb157b appc: fix DomainRoutes copy 2 anni fa
atomicfile 280255acae various: add golangci-lint, fix issues (#7905) 2 anni fa
chirp 71029cea2d all: update copyright and license headers 3 anni fa
client f880c77df0 client/web: split login from nodeUpdate 2 anni fa
clientupdate c3f1bd4c0a clientupdate: fix auto-update on Windows over RDP (#10242) 2 anni fa
cmd 28684b0538 cmd/tailscale/cli: correct app connector help text in set 2 anni fa
control fb829ea7f1 control/controlclient: support incremental packet filter updates [capver 81] 2 anni fa
derp ef6a6e94f1 derp/derphttp: use a getter method to read server key 2 anni fa
disco 893bdd729c disco,net/tstun,wgengine/magicsock: probe peer MTU 2 anni fa
docs f53c3be07c cmd/k8s-operator: use our own container image instead of busybox 2 anni fa
doctor c98652c333 doctor/permissions: add new check to print process permissions 2 anni fa
envknob a61caea911 tailcfg: define a type for NodeCapability 2 anni fa
health 4d196c12d9 health: don't report a warning in DERP homeless mode 2 anni fa
hostinfo 01604c06d2 hostinfo: fix a couple of logic simplification lints 2 anni fa
internal 280255acae various: add golangci-lint, fix issues (#7905) 2 anni fa
ipn 719ee4415e ssh/tailssh: use control server time instead of local time 2 anni fa
jsondb 71029cea2d all: update copyright and license headers 3 anni fa
kube c919ff540f cmd/k8s-operator,ipn/store/kubestore: patch secrets instead of updating 2 anni fa
licenses a97ead9ce4 licenses: update win/apple licenses 2 anni fa
log 239ad57446 tailcfg: move LogHeapPprof from Debug to c2n [capver 69] 2 anni fa
logpolicy e3d6236606 winutil: refactor methods to get values from registry to also return (#9536) 2 anni fa
logtail d852c616c6 logtail: fix Logger.Write return result 2 anni fa
metrics 18b2638b07 metrics: add missing comma in histogram JSON export 2 anni fa
net e33bc64cff net/dnsfallback: add singleflight to recursive resolver 2 anni fa
packages eb6883bb5a go.mod: upgrade nfpm to v2 (#8786) 2 anni fa
paths 6fd1961cd7 safesocket, paths: add Plan 9 support 2 anni fa
portlist 52e4f24c58 portlist: populate Pid field on Linux 2 anni fa
posture 05d4210dbe adjust build tags for tamago 2 anni fa
prober 96a80fcce3 Add support for custom DERP port in TLS prober 2 anni fa
proxymap 3d37328af6 wgengine, proxymap: split out port mapping from Engine to new type 2 anni fa
release e499a6bae8 release/dist/unixpkgs: revert iptables move to Recommends, make it Depends 2 anni fa
safesocket b4be4f089f safesocket: make clear which net.Conns are winio types 2 anni fa
scripts 535db01b3f scripts/installer: add Kaisen, Garuda, Fedora-Asahi. 2 anni fa
smallzstd 71029cea2d all: update copyright and license headers 3 anni fa
ssh 719ee4415e ssh/tailssh: use control server time instead of local time 2 anni fa
syncs 674beabc73 syncs: add Map.LoadFunc (#9869) 2 anni fa
tailcfg fb829ea7f1 control/controlclient: support incremental packet filter updates [capver 81] 2 anni fa
taildrop 975c5f7684 taildrop: lazily perform full deletion scan after first taildrop use (#10137) 2 anni fa
tempfork e8551d6b40 all: use Go 1.21 slices, maps instead of x/exp/{slices,maps} 2 anni fa
tka dc7aa98b76 all: use set.Set consistently instead of map[T]struct{} 2 anni fa
tool 452f900589 tool: download helm CLI (#9981) 2 anni fa
tsconst 71029cea2d all: update copyright and license headers 3 anni fa
tsd 18bd98d35b cmd/tailscaled,*: add start of configuration file support 2 anni fa
tsnet 5aa22ff3eb tsnet: add option to run integrated web client 2 anni fa
tstest e9de59a315 tstest/deptest: fix minor escaping error in regex 2 anni fa
tstime 1a78f240b5 tstime: add DefaultClock (#9691) 2 anni fa
tsweb 5ee349e075 tsweb/varz: fix exporting histograms 2 anni fa
types fb829ea7f1 control/controlclient: support incremental packet filter updates [capver 81] 2 anni fa
util b8a2aedccd util/syspolicy: add caching handler (#10288) 2 anni fa
version d3bc575f35 cmd/tailscale/cli: set Sparkle auto-update on macsys (#9952) 2 anni fa
wf 71029cea2d all: update copyright and license headers 3 anni fa
wgengine 4d196c12d9 health: don't report a warning in DERP homeless mode 2 anni fa
words d62af8e643 words: flappy birds, but real life 2 anni fa
.gitattributes 1813c2a162 .: add .gitattributes entry to use Go hunk-header driver 4 anni fa
.gitignore d74c771fda client/web: always use new web client; remove old client 2 anni fa
.golangci.yml f85dc6f97c ci: add more lints (#7909) 2 anni fa
ALPINE.txt 88133c361e Docker: add ALPINE.txt to manage alpine versions 3 anni fa
AUTHORS a8d8b8719a Move Linux client & common packages into a public repo. 6 anni fa
CODEOWNERS 0913ec023b CODEOWNERS: add the start of an owners file 2 anni fa
CODE_OF_CONDUCT.md 452b81d56b Add a code of conduct. 6 anni fa
Dockerfile 66f27c4beb all: require Go 1.21 2 anni fa
Dockerfile.base 1302295299 Dockerfile.base: install iputils 2 anni fa
LICENSE 947c14793a all: update tools that manage copyright headers 3 anni fa
Makefile 35ad2aafe3 Makefile: make it possibe to pass a custom tag when building dev images (#9461) 2 anni fa
PATENTS a8d8b8719a Move Linux client & common packages into a public repo. 6 anni fa
README.md 652f77d236 client/web: switch to using prebuilt web client assets 2 anni fa
SECURITY.md e59605595e Add a SECURITY.md for vulnerability reports. 6 anni fa
VERSION.txt a40e918d63 VERSION.txt: this is v1.55.0 2 anni fa
api.md b7988b3825 api.md: remove clientConnectivity.derp field 2 anni fa
build_dist.sh 652f77d236 client/web: switch to using prebuilt web client assets 2 anni fa
build_docker.sh f9667e4946 Dockerfile: fix docker build 3 anni fa
flake.lock fe91160775 flake.nix: use Go 1.21 to build tailscale flake 2 anni fa
flake.nix a3c11b87c6 go.mod.sri: update SRI hash for go.mod changes 2 anni fa
go.mod 146c4bacde go.mod: update web-client-prebuilt module 2 anni fa
go.mod.sri a3c11b87c6 go.mod.sri: update SRI hash for go.mod changes 2 anni fa
go.sum 146c4bacde go.mod: update web-client-prebuilt module 2 anni fa
go.toolchain.branch fbacc0bd39 go.toolchain: switch to tailscale.go1.21 (#8415) 2 anni fa
go.toolchain.rev 6cce5fe001 go.toolchain.rev: bump to Go 1.21.4 (#10189) 2 anni fa
gomod_test.go aae1a28a2b go.mod: add test that replace directives aren't added in oss 2 anni fa
pull-toolchain.sh 0e4f2bdd0c pull-toolchain.sh: don't run update-flake.sh 3 anni fa
shell.nix a3c11b87c6 go.mod.sri: update SRI hash for go.mod changes 2 anni fa
staticcheck.conf ece138ffc3 staticcheck.conf: remove unnecessary warning 4 anni fa
update-flake.sh f145c2b65b .github/workflows: add workflow to update go.mod Nix SRI hash 3 anni fa
version-embed.go da75e49223 version: return correct Meta.MajorMinorPatch in non-dev builds 3 anni fa
version_test.go 71029cea2d all: update copyright and license headers 3 anni fa

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.21. (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.