tailscaleroot

package module
v1.33.0 Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2022 License: BSD-3-Clause Imports: 1 Imported by: 0

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 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:

WireGuard is a registered trademark of Jason A. Donenfeld.

Documentation

Overview

Package tailscaleroot embeds VERSION.txt into the binary.

Index

Constants

This section is empty.

Variables

View Source
var AlpineDockerTag string
View Source
var GoToolchainRev string

GoToolchainRev is the git hash from github.com/tailscale/go that this release should be built using. It may end in a newline.

View Source
var Version string

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
Package atomicfile contains code related to writing to filesystems atomically.
Package atomicfile contains code related to writing to filesystems atomically.
Package chirp implements a client to communicate with the BIRD Internet Routing Daemon.
Package chirp implements a client to communicate with the BIRD Internet Routing Daemon.
client
tailscale
Package tailscale contains Go clients for the Tailscale Local API and Tailscale control plane API.
Package tailscale contains Go clients for the Tailscale Local API and Tailscale control plane API.
tailscale/apitype
Package apitype contains types for the Tailscale local API and control plane API.
Package apitype contains types for the Tailscale local API and control plane API.
tailscale/example/servetls
The servetls program shows how to run an HTTPS server using a Tailscale cert via LetsEncrypt.
The servetls program shows how to run an HTTPS server using a Tailscale cert via LetsEncrypt.
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.
gitops-pusher
Command gitops-pusher allows users to use a GitOps flow for managing Tailscale ACLs.
Command gitops-pusher allows users to use a GitOps flow for managing Tailscale ACLs.
hello
The hello binary runs hello.ts.net.
The hello binary runs hello.ts.net.
mkpkg
mkpkg builds the Tailscale rpm and deb packages.
mkpkg builds the Tailscale rpm and deb packages.
nginx-auth
Command nginx-auth is a tool that allows users to use Tailscale Whois authentication with NGINX as a reverse proxy.
Command nginx-auth is a tool that allows users to use Tailscale Whois authentication with NGINX as a reverse proxy.
printdep
The printdep command is a build system tool for printing out information about dependencies.
The printdep command is a build system tool for printing out information about dependencies.
proxy-to-grafana
proxy-to-grafana is a reverse proxy which identifies users based on their originating Tailscale identity and maps them to corresponding Grafana users, creating them if needed.
proxy-to-grafana is a reverse proxy which identifies users based on their originating Tailscale identity and maps them to corresponding Grafana users, creating them if needed.
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.
tailscaled/childproc
Package childproc allows other packages to register "tailscaled be-child" child process hook code.
Package childproc allows other packages to register "tailscaled be-child" child process hook code.
testcontrol
Program testcontrol runs a simple test control server.
Program testcontrol runs a simple test control server.
tsconnect
The tsconnect command builds and serves the static site that is generated for the Tailscale Connect JS/WASM client.
The tsconnect command builds and serves the static site that is generated for the Tailscale Connect JS/WASM client.
tsconnect/wasm
The wasm package builds a WebAssembly module that provides a subset of Tailscale APIs to JavaScript.
The wasm package builds a WebAssembly module that provides a subset of Tailscale APIs to JavaScript.
viewer
Viewer is a tool to automate the creation of "view" wrapper types that provide read-only accessor methods to underlying fields.
Viewer is a tool to automate the creation of "view" wrapper types that provide read-only accessor methods to underlying fields.
viewer/tests
Package tests serves a list of tests for github.com/qwenode/tailscale/cmd/viewer.
Package tests serves a list of tests for github.com/qwenode/tailscale/cmd/viewer.
control
controlbase
Package controlbase implements the base transport of the Tailscale 2021 control protocol.
Package controlbase implements the base transport of the Tailscale 2021 control protocol.
controlclient
Package controlclient implements the client for the Tailscale control plane.
Package controlclient implements the client for the Tailscale control plane.
controlhttp
Package controlhttp implements the Tailscale 2021 control protocol base transport over HTTP.
Package controlhttp implements the Tailscale 2021 control protocol base transport over HTTP.
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 envknob provides access to environment-variable tweakable debug settings.
Package envknob provides access to environment-variable tweakable debug settings.
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.
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.
store
Package store provides various implementation of ipn.StateStore.
Package store provides various implementation of ipn.StateStore.
store/awsstore
Package awsstore contains an ipn.StateStore implementation using AWS SSM.
Package awsstore contains an ipn.StateStore implementation using AWS SSM.
store/mem
Package mem provides an in-memory ipn.StateStore implementation.
Package mem provides an in-memory ipn.StateStore implementation.
Package jsondb provides a trivial "database": a Go object saved to disk as JSON.
Package jsondb provides a trivial "database": a Go object saved to disk as JSON.
Package kube provides a client to interact with Kubernetes.
Package kube provides a client to interact with Kubernetes.
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/publicdns
Package publicdns contains mapping and helpers for working with public DNS providers.
Package publicdns contains mapping and helpers for working with public DNS providers.
dns/resolvconffile
Package resolvconffile parses & serializes /etc/resolv.conf-style files.
Package resolvconffile parses & serializes /etc/resolv.conf-style files.
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.
netaddr
Package netaddr is a transitional package while we finish migrating from inet.af/netaddr to Go 1.18's net/netip.
Package netaddr is a transitional package while we finish migrating from inet.af/netaddr to Go 1.18's net/netip.
netcheck
Package netcheck checks the network conditions from the current host.
Package netcheck checks the network conditions from the current host.
neterror
Package neterror classifies network errors.
Package neterror classifies network errors.
netknob
Package netknob has Tailscale network knobs.
Package netknob has Tailscale network knobs.
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.
netutil
Package netutil contains misc shared networking code & types.
Package netutil contains misc shared networking code & types.
packet
Package packet contains packet parsing and marshaling utilities.
Package packet contains packet parsing and marshaling utilities.
ping
Package ping allows sending ICMP echo requests to a host in order to determine network latency.
Package ping allows sending ICMP echo requests to a host in order to determine network latency.
portmapper
Package portmapper is a UDP port mapping client.
Package portmapper is a UDP port mapping client.
proxymux
Package proxymux splits a net.Listener in two, routing SOCKS5 connections to one and HTTP requests to the other.
Package proxymux splits a net.Listener in two, routing SOCKS5 connections to one and HTTP requests to the other.
socks5
Package socks5 is a SOCKS5 server implementation.
Package socks5 is a SOCKS5 server implementation.
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.
tsdial
Package tsdial provides a Dialer type that can dial out of tailscaled.
Package tsdial provides a Dialer type that can dial out of tailscaled.
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 prober implements a simple blackbox prober.
Package prober implements a simple blackbox prober.
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.
ssh
tailssh
Package tailssh is an SSH server integrated into Tailscale.
Package tailssh is an SSH server integrated into Tailscale.
Package syncs contains additional sync types and functionality.
Package syncs contains additional sync types and functionality.
tempfork
gliderlabs/ssh
Package ssh wraps the crypto/ssh package with a higher-level API for building SSH servers.
Package ssh wraps the crypto/ssh package with a higher-level API for building SSH servers.
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 tka (WIP) implements the Tailnet Key Authority.
Package tka (WIP) implements the Tailnet Key Authority.
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.
iosdeps
Package iosdeps is a just a list of the packages we import on iOS, to let us test that our transitive closure of dependencies on iOS doesn't accidentally grow too large, as we've historically been memory constrained there.
Package iosdeps is a just a list of the packages we import on iOS, to let us test that our transitive closure of dependencies on iOS doesn't accidentally grow too large, as we've historically been memory constrained there.
jsdeps
Package jsdeps is a just a list of the packages we import in the JavaScript/WASM build, to let us test that our transitive closure of dependencies doesn't accidentally grow too large, since binary size is more of a concern.
Package jsdeps is a just a list of the packages we import in the JavaScript/WASM build, to let us test that our transitive closure of dependencies doesn't accidentally grow too large, since binary size is more of a concern.
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
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.
tkatype
Package tkatype defines types for working with the tka package.
Package tkatype defines types for working with the tka package.
views
Package views provides read-only accessors for commonly used value types.
Package views provides read-only accessors for commonly used value types.
util
cibuild
Package cibuild reports runtime CI information.
Package cibuild reports runtime CI information.
clientmetric
Package clientmetric provides client-side metrics whose values get occasionally logged.
Package clientmetric provides client-side metrics whose values get occasionally logged.
cloudenv
Package cloudenv reports which known cloud environment we're running in.
Package cloudenv reports which known cloud environment we're running in.
cmpver
Package cmpver implements a variant of debian version number comparison.
Package cmpver implements a variant of debian version number comparison.
codegen
Package codegen contains shared utilities for generating code.
Package codegen contains shared utilities for generating code.
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.
deephash/testtype
Package testtype contains types for testing deephash.
Package testtype contains types for testing deephash.
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 groupmember verifies group membership of the provided user on the local system.
Package groupmember 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.
mak
Package mak helps make maps.
Package mak helps make maps.
multierr
Package multierr provides a simple multiple-error type.
Package multierr provides a simple multiple-error type.
must
Package must assists in calling functions that must succeed.
Package must assists in calling functions that must succeed.
pidowner
Package pidowner handles lookups from process ID to its owning user.
Package pidowner handles lookups from process ID to its owning user.
precompress
Package precompress provides build- and serving-time support for precompressed static resources, to avoid the cost of repeatedly compressing unchanging resources.
Package precompress provides build- and serving-time support for precompressed static resources, to avoid the cost of repeatedly compressing unchanging resources.
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.
singleflight
Package singleflight provides a duplicate function call suppression mechanism.
Package singleflight provides a duplicate function call suppression mechanism.
strs
Package strs contains string-related utility funcs.
Package strs contains string-related utility funcs.
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.
winutil
Package winutil contains misc Windows/Win32 helper functions.
Package winutil contains misc Windows/Win32 helper functions.
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