Movatterモバイル変換


[0]ホーム

URL:


controlhttp

package
v1.92.2Latest Latest
Warning

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

Go to latest
Published: Dec 10, 2025 License:BSD-3-ClauseImports:33Imported by:10

Details

Repository

github.com/tailscale/tailscale

Links

Documentation

Overview

Package controlhttp implements the Tailscale 2021 control protocolbase transport over HTTP.

This tunnels the protocol in control/controlbase over HTTP with avariety of compatibility fallbacks for handling picky or deepinspecting proxies.

In the happy path, a client makes a single cleartext HTTP requestto the server, the server responds with 101 Switching Protocols,and the control base protocol takes place over plain TCP.

In the compatibility path, the client does the above over HTTPS,resulting in double encryption (once for the control transport, andonce for the outer TLS layer).

Index

Constants

View Source
const NoPort = "none"

NoPort is a sentinel value for Dialer.HTTPSPort to indicate that HTTPSshould not be tried on any port. It exists primarily for some localhosttests where the control plane only runs on HTTP.

Variables

View Source
var HookMakeACEDialerfeature.Hook[func(dialernetx.DialFunc, aceHoststring, optIPnetip.Addr)netx.DialFunc]

Functions

This section is empty.

Types

typeClientConnadded inv1.34.0

type ClientConn struct {// Conn is the noise connection.*controlbase.Conn}

ClientConn is a Tailscale control client as returned by the Dialer.

It's effectively just a *controlbase.Conn (which it embeds) withoptional metadata.

typeDialeradded inv1.32.0

type Dialer struct {// Hostname is the hostname to connect to, with no port number.//// This field is required.Hostnamestring// MachineKey contains the current machine's private key.//// This field is required.MachineKeykey.MachinePrivate// ControlKey contains the expected public key for the control server.//// This field is required.ControlKeykey.MachinePublic// ProtocolVersion is the expected protocol version to negotiate.//// This field is required.ProtocolVersionuint16// HTTPPort is the port number to use when making a HTTP connection.//// If not specified, this defaults to port 80.HTTPPortstring// HTTPSPort is the port number to use when making a HTTPS connection.//// If not specified, this defaults to port 443.//// If "none" (NoPort), HTTPS is disabled.HTTPSPortstring// Dialer is the dialer used to make outbound connections.//// If not specified, this defaults to net.Dialer.DialContext.Dialernetx.DialFunc// DNSCache is the caching Resolver used by this Dialer.//// If not specified, a new Resolver is created per attempt.DNSCache *dnscache.Resolver// Logf, if set, is a logging function to use; if unset, logs are// dropped.Logflogger.Logf// NetMon is the [netmon.Monitor] to use for this Dialer.// It is optional.NetMon *netmon.Monitor// HealthTracker, if non-nil, is the health tracker to use.HealthTracker *health.Tracker// DialPlan, if set, contains instructions from the control server on// how to connect to it. If present, we will try the methods in this// plan before falling back to DNS.DialPlan *tailcfg.ControlDialPlan// Clock, if non-nil, overrides the clock to use.// If nil, tstime.StdClock is used.// This exists primarily for tests.Clocktstime.Clock// contains filtered or unexported fields}

Dialer contains configuration on how to dial the Tailscale control server.

func (*Dialer)Dialadded inv1.32.0

func (a *Dialer) Dial(ctxcontext.Context) (*ClientConn,error)

Dial connects to the HTTP server at this Dialer's Host:HTTPPort, requests toswitch to the Tailscale control protocol, and returns an established controlprotocol connection.

If Dial fails to connect using HTTP, it also tries to tunnel over TLS to theDialer's Host:HTTPSPort as a compatibility fallback.

The provided ctx is only used for the initial connection, untilDial returns. It does not affect the connection once established.

Source Files

View all Source files

Directories

PathSynopsis
Package controlhttpcommon contains common constants for used by the controlhttp client and controlhttpserver packages.
Package controlhttpcommon contains common constants for used by the controlhttp client and controlhttpserver packages.
Package controlhttpserver contains the HTTP server side of the ts2021 control protocol.
Package controlhttpserver contains the HTTP server side of the ts2021 control protocol.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f orF : Jump to
y orY : Canonical URL
go.dev uses cookies from Google to deliver and enhance the quality of its services and to analyze traffic.Learn more.

[8]ページ先頭

©2009-2025 Movatter.jp