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

Brad Fitzpatrick ff6fadddb6 wgengine/magicsock: stop retaining *netmap.NetworkMap 2 éve
.bencher babd163aac bencher: add config to suppress failures on benchmark regressions. 4 éve
.github 3280c81c95 .github,cmd/gitops-pusher: update to checkout@v4 2 éve
atomicfile 280255acae various: add golangci-lint, fix issues (#7905) 2 éve
chirp 71029cea2d all: update copyright and license headers 3 éve
client 1eadb2b608 client/web: clean up assets handling 2 éve
clientupdate 1073b56e18 ipn/ipnlocal: add logging and locking to c2n /update (#9290) 2 éve
cmd 4e91cf20a8 control/controlknobs, all: add plumbed Knobs type, not global variables 2 éve
control 42072683d6 control/controlknobs: move ForceBackgroundSTUN to controlknobs.Knobs 2 éve
derp 8b492b4121 net/wsconn: accept a remote addr string and plumb it through 2 éve
disco 25a7204bb4 wgengine,ipn,cmd/tailscale: add size option to ping (#8739) 2 éve
docs 0c427f23bd docs/k8s: don't call kubectl directly from Makefile 2 éve
doctor c98652c333 doctor/permissions: add new check to print process permissions 3 éve
envknob d050700a3b wgengine/magicsock: make peerMap also keyed by NodeID 2 éve
health dc7aa98b76 all: use set.Set consistently instead of map[T]struct{} 2 éve
hostinfo 7ed3681cbe tailcfg: Add FirewallMode to NetInfo to record wether host using iptables or nftables 2 éve
internal 280255acae various: add golangci-lint, fix issues (#7905) 2 éve
ipn 4e91cf20a8 control/controlknobs, all: add plumbed Knobs type, not global variables 2 éve
jsondb 71029cea2d all: update copyright and license headers 3 éve
kube c919ff540f cmd/k8s-operator,ipn/store/kubestore: patch secrets instead of updating 2 éve
licenses 4a38d8d372 licenses: update win/apple licenses 2 éve
log 239ad57446 tailcfg: move LogHeapPprof from Debug to c2n [capver 69] 2 éve
logpolicy 682fd72f7b util/testenv: add new package to hold InTest 2 éve
logtail d61494db68 adjust build tags for tamago 2 éve
metrics 18b2638b07 metrics: add missing comma in histogram JSON export 2 éve
net 4e91cf20a8 control/controlknobs, all: add plumbed Knobs type, not global variables 2 éve
packages eb6883bb5a go.mod: upgrade nfpm to v2 (#8786) 2 éve
paths 6fd1961cd7 safesocket, paths: add Plan 9 support 2 éve
portlist e8551d6b40 all: use Go 1.21 slices, maps instead of x/exp/{slices,maps} 2 éve
prober f314fa4a4a prober: fix data race when altering derpmap (#8397) 2 éve
release 1bd3edbb46 release/dist/unixpkgs: demote deb iptables+iproute2 packages to recommended 2 éve
safesocket 6fd1961cd7 safesocket, paths: add Plan 9 support 2 éve
scripts 535db01b3f scripts/installer: add Kaisen, Garuda, Fedora-Asahi. 2 éve
smallzstd 71029cea2d all: update copyright and license headers 3 éve
ssh 0a0adb68ad ssh/tailssh: log when recording starts and finishes (#9294) 2 éve
syncs e8551d6b40 all: use Go 1.21 slices, maps instead of x/exp/{slices,maps} 2 éve
tailcfg 70ea073478 tailcfg: flesh out some docs on MapResponse, clarify slices w/ omitempty 2 éve
tempfork e8551d6b40 all: use Go 1.21 slices, maps instead of x/exp/{slices,maps} 2 éve
tka dc7aa98b76 all: use set.Set consistently instead of map[T]struct{} 2 éve
tool 3722b05465 release/dist: run yarn build before building CLI 2 éve
tsconst 71029cea2d all: update copyright and license headers 3 éve
tsd 4e91cf20a8 control/controlknobs, all: add plumbed Knobs type, not global variables 2 éve
tsnet 4e91cf20a8 control/controlknobs, all: add plumbed Knobs type, not global variables 2 éve
tstest 9a86aa5732 all: depend on zstd unconditionally, remove plumbing to make it optional 2 éve
tstime a1b8d703d6 tstime/mono: remove unsafe 2 éve
tsweb 5ee349e075 tsweb/varz: fix exporting histograms 2 éve
types d506a55c8a ipn/ipnstate: address TODO about garbage during peer sorting 2 éve
util dc7aa98b76 all: use set.Set consistently instead of map[T]struct{} 2 éve
version 306deea03a cmd/tailscale/cli,version/distro: update support for Alpine (#8701) 2 éve
wf 71029cea2d all: update copyright and license headers 3 éve
wgengine ff6fadddb6 wgengine/magicsock: stop retaining *netmap.NetworkMap 2 éve
words 3f1f906b63 words: ack Miles Prower (#8479) 2 éve
.gitattributes 1813c2a162 .: add .gitattributes entry to use Go hunk-header driver 4 éve
.gitignore d74c771fda client/web: always use new web client; remove old client 2 éve
.golangci.yml f85dc6f97c ci: add more lints (#7909) 2 éve
ALPINE.txt 88133c361e Docker: add ALPINE.txt to manage alpine versions 3 éve
AUTHORS a8d8b8719a Move Linux client & common packages into a public repo. 6 éve
CODEOWNERS 0913ec023b CODEOWNERS: add the start of an owners file 2 éve
CODE_OF_CONDUCT.md 452b81d56b Add a code of conduct. 6 éve
Dockerfile 66f27c4beb all: require Go 1.21 2 éve
Dockerfile.base 1302295299 Dockerfile.base: install iputils 2 éve
LICENSE 947c14793a all: update tools that manage copyright headers 3 éve
Makefile 98a5116434 all: adjust some build tags for plan9 2 éve
PATENTS a8d8b8719a Move Linux client & common packages into a public repo. 6 éve
README.md d74c771fda client/web: always use new web client; remove old client 2 éve
SECURITY.md e59605595e Add a SECURITY.md for vulnerability reports. 6 éve
VERSION.txt cf31b58ed1 VERSION.txt: this is v1.49.0 (#8907) 2 éve
api.md aa37be70cf api.md: update device authorize API docs to allow for deauth (#8728) 2 éve
build_dist.sh d74c771fda client/web: always use new web client; remove old client 2 éve
build_docker.sh f9667e4946 Dockerfile: fix docker build 3 éve
flake.lock fe91160775 flake.nix: use Go 1.21 to build tailscale flake 2 éve
flake.nix 77060c4d89 go.mod.sri: update SRI hash for go.mod changes 2 éve
go.mod 4e72992900 clientupdate: add linux tarball updates (#9144) 2 éve
go.mod.sri 77060c4d89 go.mod.sri: update SRI hash for go.mod changes 2 éve
go.sum 4e72992900 clientupdate: add linux tarball updates (#9144) 2 éve
go.toolchain.branch fbacc0bd39 go.toolchain: switch to tailscale.go1.21 (#8415) 2 éve
go.toolchain.rev a1b8d703d6 tstime/mono: remove unsafe 2 éve
pull-toolchain.sh 0e4f2bdd0c pull-toolchain.sh: don't run update-flake.sh 3 éve
shell.nix 77060c4d89 go.mod.sri: update SRI hash for go.mod changes 2 éve
staticcheck.conf ece138ffc3 staticcheck.conf: remove unnecessary warning 4 éve
update-flake.sh f145c2b65b .github/workflows: add workflow to update go.mod Nix SRI hash 3 éve
version-embed.go da75e49223 version: return correct Meta.MajorMinorPatch in non-dev builds 3 éve
version_test.go 71029cea2d all: update copyright and license headers 3 éve

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.

Building the web client

To include the embedded web client (accessed via the tailscale web command), you'll need to build the client assets using:

./tool/yarn --cwd client/web build

Do this before building the tailscale.com/cmd/tailscale binary.

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.