tailscale.com

module
v1.14.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 16, 2021 License: BSD-3-Clause

README

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 primarily on Linux; it also works to varying degrees on FreeBSD, OpenBSD, Darwin, and Windows.

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

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 only guarantee to support the latest Go release and any Go beta or release candidate builds (currently Go 1.16) in module mode. It might work in earlier Go versions or in GOPATH mode, but we're making no effort to keep those working.

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:

WireGuard is a registered trademark of Jason A. Donenfeld.

Directories

Path Synopsis
Package atomicfile contains code related to writing to filesystems atomically.
Package atomicfile contains code related to writing to filesystems atomically.
client
tailscale
Package tailscale contains Tailscale client code.
Package tailscale contains Tailscale client code.
tailscale/apitype
Package apitype contains types for the Tailscale local API.
Package apitype contains types for the Tailscale local API.
cmd
addlicense
Program addlicense adds a license header to a file.
Program addlicense adds a license header to a file.
cloner
Cloner is a tool to automate the creation of a Clone method.
Cloner is a tool to automate the creation of a Clone method.
derper
The derper binary is a simple DERP server.
The derper binary is a simple DERP server.
derpprobe
The derpprobe binary probes derpers.
The derpprobe binary probes derpers.
hello
The hello binary runs hello.ipn.dev.
The hello binary runs hello.ipn.dev.
mkpkg
mkpkg builds the Tailscale rpm and deb packages.
mkpkg builds the Tailscale rpm and deb packages.
speedtest
Example usage for client command: go run cmd/speedtest -host 127.0.0.1:20333 -t 5s This will connect to the server on 127.0.0.1:20333 and start a 5 second download speedtest.
Example usage for client command: go run cmd/speedtest -host 127.0.0.1:20333 -t 5s This will connect to the server on 127.0.0.1:20333 and start a 5 second download speedtest.
tailscale
The tailscale command is the Tailscale command-line client.
The tailscale command is the Tailscale command-line client.
tailscale/cli
Package cli contains the cmd/tailscale CLI code in a package that can be included in other wrapper binaries such as the Mac and Windows clients.
Package cli contains the cmd/tailscale CLI code in a package that can be included in other wrapper binaries such as the Mac and Windows clients.
tailscaled
The tailscaled program is the Tailscale client daemon.
The tailscaled program is the Tailscale client daemon.
testcontrol
Program testcontrol runs a simple test control server.
Program testcontrol runs a simple test control server.
tsshd
The tsshd binary is an SSH server that accepts connections from anybody on the same Tailscale network.
The tsshd binary is an SSH server that accepts connections from anybody on the same Tailscale network.
control
controlclient
Package controlclient implements the client for the Tailscale control plane.
Package controlclient implements the client for the Tailscale control plane.
controlknobs
Package controlknobs contains client options configurable from control which can be turned on or off.
Package controlknobs contains client options configurable from control which can be turned on or off.
Package derp implements DERP, the Detour Encrypted Routing Protocol.
Package derp implements DERP, the Detour Encrypted Routing Protocol.
derphttp
Package derphttp implements DERP-over-HTTP.
Package derphttp implements DERP-over-HTTP.
Package disco contains the discovery message types.
Package disco contains the discovery message types.
Package health is a registry for other packages to report & check overall health status of the node.
Package health is a registry for other packages to report & check overall health status of the node.
Package hostinfo answers questions about the host environment that Tailscale is running on.
Package hostinfo answers questions about the host environment that Tailscale is running on.
internal
ipn
Package ipn implements the interactions between the Tailscale cloud control plane and the local network stack.
Package ipn implements the interactions between the Tailscale cloud control plane and the local network stack.
ipnstate
Package ipnstate captures the entire state of the Tailscale network.
Package ipnstate captures the entire state of the Tailscale network.
localapi
Package localapi contains the HTTP server handlers for tailscaled's API server.
Package localapi contains the HTTP server handlers for tailscaled's API server.
policy
Package policy contains various policy decisions that need to be shared between the node client & control server.
Package policy contains various policy decisions that need to be shared between the node client & control server.
log
filelogger
Package filelogger provides localdisk log writing & rotation, primarily for Windows clients.
Package filelogger provides localdisk log writing & rotation, primarily for Windows clients.
logheap
Package logheap logs a heap pprof profile.
Package logheap logs a heap pprof profile.
Package logpolicy manages the creation or reuse of logtail loggers, caching collection instance state on disk for use on future runs of programs on the same machine.
Package logpolicy manages the creation or reuse of logtail loggers, caching collection instance state on disk for use on future runs of programs on the same machine.
Package logtail sends logs to log.tailscale.io.
Package logtail sends logs to log.tailscale.io.
backoff
Package backoff provides a back-off timer type.
Package backoff provides a back-off timer type.
example/logreprocess
The logreprocess program tails a log and reprocesses it.
The logreprocess program tails a log and reprocesses it.
example/logtail
The logtail program logs stdin.
The logtail program logs stdin.
filch
Package filch is a file system queue that pilfers your stderr.
Package filch is a file system queue that pilfers your stderr.
Package metrics contains expvar & Prometheus types and code used by Tailscale for monitoring.
Package metrics contains expvar & Prometheus types and code used by Tailscale for monitoring.
net
dns
dns/resolver
Package resolver implements a stub DNS resolver that can also serve records out of an internal local zone.
Package resolver implements a stub DNS resolver that can also serve records out of an internal local zone.
dnscache
Package dnscache contains a minimal DNS cache that makes a bunch of assumptions that are only valid for us.
Package dnscache contains a minimal DNS cache that makes a bunch of assumptions that are only valid for us.
dnsfallback
Package dnsfallback contains a DNS fallback mechanism for starting up Tailscale when the system DNS is broken or otherwise unavailable.
Package dnsfallback contains a DNS fallback mechanism for starting up Tailscale when the system DNS is broken or otherwise unavailable.
flowtrack
Package flowtrack contains types for tracking TCP/UDP flows by 4-tuples.
Package flowtrack contains types for tracking TCP/UDP flows by 4-tuples.
interfaces
Package interfaces contains helpers for looking up system network interfaces.
Package interfaces contains helpers for looking up system network interfaces.
netcheck
Package netcheck checks the network conditions from the current host.
Package netcheck checks the network conditions from the current host.
netns
Package netns contains the common code for using the Go net package in a logical "network namespace" to avoid routing loops where Tailscale-created packets would otherwise loop back through Tailscale routes.
Package netns contains the common code for using the Go net package in a logical "network namespace" to avoid routing loops where Tailscale-created packets would otherwise loop back through Tailscale routes.
netstat
Package netstat returns the local machine's network connection table.
Package netstat returns the local machine's network connection table.
packet
Package packet contains packet parsing and marshaling utilities.
Package packet contains packet parsing and marshaling utilities.
portmapper
Package portmapper is a UDP port mapping client.
Package portmapper is a UDP port mapping client.
socks5
Package socks5 is a SOCKS5 server implementation.
Package socks5 is a SOCKS5 server implementation.
socks5/tssocks
Package tssocks is the glue between Tailscale and the net/socks5 package.
Package tssocks is the glue between Tailscale and the net/socks5 package.
speedtest
Package speedtest contains both server and client code for running speedtests between tailscale nodes.
Package speedtest contains both server and client code for running speedtests between tailscale nodes.
stun
Package STUN generates STUN request packets and parses response packets.
Package STUN generates STUN request packets and parses response packets.
stun/stuntest
Package stuntest provides a STUN test server.
Package stuntest provides a STUN test server.
tlsdial
Package tlsdial originally existed to set up a tls.Config for x509 validation, using a memory-optimized path for iOS, but then we moved that to the tailscale/go tree instead, so now this package does very little.
Package tlsdial originally existed to set up a tls.Config for x509 validation, using a memory-optimized path for iOS, but then we moved that to the tailscale/go tree instead, so now this package does very little.
tsaddr
Package tsaddr handles Tailscale-specific IPs and ranges.
Package tsaddr handles Tailscale-specific IPs and ranges.
tshttpproxy
Package tshttpproxy contains Tailscale additions to httpproxy not available in golang.org/x/net/http/httpproxy.
Package tshttpproxy contains Tailscale additions to httpproxy not available in golang.org/x/net/http/httpproxy.
tstun
Package tun creates a tuntap device, working around OS-specific quirks if necessary.
Package tun creates a tuntap device, working around OS-specific quirks if necessary.
packages
deb
Package deb extracts metadata from Debian packages.
Package deb extracts metadata from Debian packages.
Package paths returns platform and user-specific default paths to Tailscale files and directories.
Package paths returns platform and user-specific default paths to Tailscale files and directories.
Package safesocket creates either a Unix socket, if possible, or otherwise a localhost TCP connection.
Package safesocket creates either a Unix socket, if possible, or otherwise a localhost TCP connection.
Package smallzstd produces zstd encoders and decoders optimized for low memory usage, at the expense of compression efficiency.
Package smallzstd produces zstd encoders and decoders optimized for low memory usage, at the expense of compression efficiency.
Package syncs contains additional sync types and functionality.
Package syncs contains additional sync types and functionality.
tempfork
pprof
Package pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool.
Package pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool.
Package tsconst exports some constants used elsewhere in the codebase.
Package tsconst exports some constants used elsewhere in the codebase.
Package tsnet provides Tailscale as a library.
Package tsnet provides Tailscale as a library.
example/tshello
The tshello server demonstrates how to use Tailscale as a library.
The tshello server demonstrates how to use Tailscale as a library.
Package tstest provides utilities for use in unit tests.
Package tstest provides utilities for use in unit tests.
integration
Package integration contains Tailscale integration tests.
Package integration contains Tailscale integration tests.
integration/testcontrol
Package testcontrol contains a minimal control plane server for testing purposes.
Package testcontrol contains a minimal control plane server for testing purposes.
integration/vms
Package vms does VM-based integration/functional tests by using qemu and a bank of pre-made VM images.
Package vms does VM-based integration/functional tests by using qemu and a bank of pre-made VM images.
natlab
Package natlab lets us simulate different types of networks all in-memory without running VMs or requiring root, etc.
Package natlab lets us simulate different types of networks all in-memory without running VMs or requiring root, etc.
Package tstime defines Tailscale-specific time utilities.
Package tstime defines Tailscale-specific time utilities.
mono
Package mono provides fast monotonic time.
Package mono provides fast monotonic time.
rate
Package rate provides a rate limiter.
Package rate provides a rate limiter.
Package tsweb contains code used in various Tailscale webservers.
Package tsweb contains code used in various Tailscale webservers.
types
dnstype
Package dnstype defines types for working with DNS.
Package dnstype defines types for working with DNS.
empty
Package empty defines an empty struct type.
Package empty defines an empty struct type.
flagtype
Package flagtype defines flag.Value types.
Package flagtype defines flag.Value types.
ipproto
Package ipproto contains IP Protocol constants.
Package ipproto contains IP Protocol constants.
key
Package key defines some types related to curve25519 keys.
Package key defines some types related to curve25519 keys.
logger
Package logger defines a type for writing to logs.
Package logger defines a type for writing to logs.
netmap
Package netmap contains the netmap.NetworkMap type.
Package netmap contains the netmap.NetworkMap type.
nettype
Package nettype defines an interface that doesn't exist in the Go net package.
Package nettype defines an interface that doesn't exist in the Go net package.
opt
Package opt defines optional types.
Package opt defines optional types.
pad32
Package pad32 defines padding types that have width on only 32-bit platforms.
Package pad32 defines padding types that have width on only 32-bit platforms.
persist
Package persist contains the Persist type.
Package persist contains the Persist type.
preftype
Package preftype is a leaf package containing types for various preferences.
Package preftype is a leaf package containing types for various preferences.
structs
Package structs contains the Incomparable type.
Package structs contains the Incomparable type.
wgkey
Package wgkey contains types and helpers for WireGuard keys.
Package wgkey contains types and helpers for WireGuard keys.
util
cibuild
Package cibuild reports runtime CI information.
Package cibuild reports runtime CI information.
cmpver
Package cmpver implements a variant of debian version number comparison.
Package cmpver implements a variant of debian version number comparison.
deephash
Package deephash hashes a Go value recursively, in a predictable order, without looping.
Package deephash hashes a Go value recursively, in a predictable order, without looping.
dnsname
Package dnsname contains string functions for working with DNS names.
Package dnsname contains string functions for working with DNS names.
endian
Package endian exports a constant about whether the machine is big endian.
Package endian exports a constant about whether the machine is big endian.
groupmember
Package groupmemeber verifies group membership of the provided user on the local system.
Package groupmemeber verifies group membership of the provided user on the local system.
jsonutil
Package jsonutil provides utilities to improve JSON performance.
Package jsonutil provides utilities to improve JSON performance.
lineread
Package lineread reads lines from files.
Package lineread reads lines from files.
pidowner
Package pidowner handles lookups from process ID to its owning user.
Package pidowner handles lookups from process ID to its owning user.
racebuild
Package racebuild exports a constant about whether the current binary was built with the race detector.
Package racebuild exports a constant about whether the current binary was built with the race detector.
systemd
Package systemd contains a minimal wrapper around systemd-notify to enable applications to signal readiness and status to systemd.
Package systemd contains a minimal wrapper around systemd-notify to enable applications to signal readiness and status to systemd.
uniq
Package uniq provides removal of adjacent duplicate elements in slices.
Package uniq provides removal of adjacent duplicate elements in slices.
Package version provides the version that the binary was built at.
Package version provides the version that the binary was built at.
distro
Package distro reports which distro we're running on.
Package distro reports which distro we're running on.
bench
Create two wgengine instances and pass data through them, measuring throughput, latency, and packet loss.
Create two wgengine instances and pass data through them, measuring throughput, latency, and packet loss.
filter
Package filter is a stateful packet filter.
Package filter is a stateful packet filter.
magicsock
Package magicsock implements a socket that can change its communication path while in use, actively searching for the best way to communicate.
Package magicsock implements a socket that can change its communication path while in use, actively searching for the best way to communicate.
monitor
Package monitor provides facilities for monitoring network interface and route changes.
Package monitor provides facilities for monitoring network interface and route changes.
netstack
Package netstack wires up gVisor's netstack into Tailscale.
Package netstack wires up gVisor's netstack into Tailscale.
router
Package router presents an interface to manipulate the host network stack's state.
Package router presents an interface to manipulate the host network stack's state.
wgcfg
Package wgcfg has types and a parser for representing WireGuard config.
Package wgcfg has types and a parser for representing WireGuard config.
wgcfg/nmcfg
Package nmcfg converts a controlclient.NetMap into a wgcfg config.
Package nmcfg converts a controlclient.NetMap into a wgcfg config.
wglog
Package wglog contains logging helpers for wireguard-go.
Package wglog contains logging helpers for wireguard-go.
Package words contains accessors for some nice words.
Package words contains accessors for some nice words.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL