tailscale.com

module
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Nov 3, 2020 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.15) 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

We are apenwarr, bradfitz, crawshaw, danderson, dfcarney, josharian from Tailscale Inc. You can learn more about us from our website.

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.
cmd
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.
microproxy
microproxy proxies incoming HTTPS connections to another destination.
microproxy proxies incoming HTTPS connections to another destination.
mkpkg
mkpkg builds the Tailscale rpm and deb packages.
mkpkg builds the Tailscale rpm and deb packages.
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.
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.
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.
derpmap
Package derpmap contains information about Tailscale.com's production DERP nodes.
Package derpmap contains information about Tailscale.com's production DERP nodes.
Package disco contains the discovery message types.
Package disco contains the discovery message types.
internal
deepprint
Package deepprint walks a Go value recursively, in a predictable order, without looping, and prints each value out to a given Writer, which is assumed to be a hash.Hash, as this package doesn't format things nicely.
Package deepprint walks a Go value recursively, in a predictable order, without looping, and prints each value out to a given Writer, which is assumed to be a hash.Hash, as this package doesn't format things nicely.
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.
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
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.
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.
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.
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
osexec
Package exec runs external commands.
Package exec runs external commands.
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.
registry
Package registry provides access to the Windows registry.
Package registry provides access to the Windows registry.
Package tsconst exports some constants used elsewhere in the codebase.
Package tsconst exports some constants used elsewhere in the codebase.
Package tstest provides utilities for use in unit tests.
Package tstest provides utilities for use in unit tests.
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.
Package tsweb contains code used in various Tailscale webservers.
Package tsweb contains code used in various Tailscale webservers.
types
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.
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.
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.
strbuilder
Package strbuilder defines a string builder type that allocates less than the standard library's strings.Builder by using a sync.Pool, so it doesn't matter if the compiler can't prove that the builder doesn't escape into the fmt package, etc.
Package strbuilder defines a string builder type that allocates less than the standard library's strings.Builder by using a sync.Pool, so it doesn't matter if the compiler can't prove that the builder doesn't escape into the fmt package, etc.
structs
Package structs contains the Incomparable type.
Package structs contains the Incomparable type.
util
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.
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.
filter
Package filter contains a stateful packet filter.
Package filter contains 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.
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.
tsdns
Package tsdns provides a Resolver capable of resolving domains on a Tailscale network.
Package tsdns provides a Resolver capable of resolving domains on a Tailscale network.
tstun
Package tstun provides a TUN struct implementing the tun.Device interface with additional features as required by wgengine.
Package tstun provides a TUN struct implementing the tun.Device interface with additional features as required by wgengine.

Jump to

Keyboard shortcuts

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