vpnkit

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Feb 9, 2021 License: Apache-2.0 Imports: 17 Imported by: 22

Documentation

Overview

Package vpnkit allows a running VPNKit service to be reconfigured.

Features

- expose/unexpose TCP and UDP ports

Index

Constants

View Source
const (
	ListPath         = "/forwards/list"
	ExposePortPath   = "/forwards/expose/port"
	ExposePipePath   = "/forwards/expose/pipe"
	UnexposePortPath = "/forwards/unexpose/port"
	UnexposePipePath = "/forwards/unexpose/pipe"
	DumpStatePath    = "/forwards/dump"
)
View Source
const (
	// DefaultControlVsock is the AF_VSOCK port the control-plane interface listens on.
	DefaultControlVsock = 0x1002

	// DefaultDataVsock is the AF_VSOCK port the data-plane interface listens on.
	DefaultDataVsock = 0xf3a4
)
View Source
const (
	// TCP port is exposed
	TCP = Protocol("tcp")
	// UDP port is exposed
	UDP = Protocol("udp")
	// Unix domain socket is exposed
	Unix = Protocol("unix")
)
View Source
const DefaultVsockPort = 62373

DefaultVsockPort is the default AF_VSOCK port where vpnkit-forwarder listens.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client added in v0.3.0

type Client interface {
	Expose(context.Context, *Port) error
	Unexpose(context.Context, *Port) error
	ListExposed(context.Context) ([]Port, error)
	DumpState(context.Context, io.Writer) error
}

Client exposes and unexposes ports on vpnkit.

func NewClient added in v0.4.0

func NewClient(path string) (Client, error)

type Control added in v0.4.0

type Control interface {
	Mux() libproxy.Multiplexer   // Mux is the current multiplexer to forward to
	SetMux(libproxy.Multiplexer) // SetMux updates the current multiplexer for future connections
}

Control is the port-forwarding control-plane

type DHCPConfiguration added in v0.3.0

type DHCPConfiguration struct {
	SearchDomains []string `json:"searchDomains"`
	DomainName    string   `json:"domainName"`
}

DHCPConfiguration configures the built-in DHCP server.

func (DHCPConfiguration) Write added in v0.3.0

func (d DHCPConfiguration) Write(w io.Writer) error

type Dialer added in v0.3.0

type Dialer struct {
	HyperkitConnectPath string // HyperkitConnectPath is the path of the `connect` Unix domain socket
	HyperVVMID          string // HyperkitVMVMID is the GUID of the VM running vpnkit-forwarder
	Port                int    // Port is the AF_VSOCK port where vpnkit-forwarder is listening
	// contains filtered or unexported fields
}

Dialer connects to remote addresses via the vpnkit-forwarder.

func (*Dialer) Dial added in v0.3.0

func (d *Dialer) Dial(network, address string) (net.Conn, error)

Dial connects to the address on the named network.

type ExposeError added in v0.4.0

type ExposeError struct {
	Message string `json:"message"`
}

ExposeError should be reported through to the user

func (*ExposeError) Error added in v0.4.0

func (e *ExposeError) Error() string

type Forward added in v0.3.0

type Forward struct {
	Protocol     Protocol `json:"protocol"`
	ExternalPort int      `json:"external_port"`
	InternalIP   string   `json:"internal_ip"`
	InternalPort int      `json:"internal_port"`
}

Forward is a single forward from the gateway IP ExternalPort to (InternalIP, InternalPort)

type GatewayForwards added in v0.3.0

type GatewayForwards []Forward

GatewayForwards is a list of individual forwards.

func (GatewayForwards) Write added in v0.3.0

func (g GatewayForwards) Write(w io.Writer) error

type HTTPConfiguration added in v0.3.0

type HTTPConfiguration struct {
	HTTP                  string `json:"http,omitempty"`
	HTTPS                 string `json:"https,omitempty"`
	Exclude               string `json:"exclude,omitempty"`
	TransparentHTTPPorts  []int  `json:"transparent_http_ports"`
	TransparentHTTPSPorts []int  `json:"transparent_https_ports"`
}

HTTPConfiguration configures the built-in HTTP proxy.

func (HTTPConfiguration) Write added in v0.3.0

func (h HTTPConfiguration) Write(w io.Writer) error

type Implementation added in v0.4.0

type Implementation interface {
	Client
}

Implementation of the control interface.

type Port

type Port struct {
	Proto      Protocol `json:"proto,omitempty"`    // Proto is the protocol used by the exposed port.
	OutIP      net.IP   `json:"out_ip,omitempty"`   // OutIP is the external IP address.
	OutPort    uint16   `json:"out_port,omitempty"` // OutPort is the external port number.
	OutPath    string   `json:"out_path,omitempty"` // OutPath is the external Unix domain socket.
	InIP       net.IP   `json:"in_ip,omitempty"`    // InIP is the internal IP address.
	InPort     uint16   `json:"in_port,omitempty"`  // InPort is the internal port number.
	InPath     string   `json:"in_path,omitempty"`  // InPath is the internal Unix domain socket.
	Annotation string   `json:"annotation,omitempty"`
}

Port describes a UDP, TCP port forward or a Unix domain socket forward.

func (*Port) String added in v0.2.0

func (p *Port) String() string

String returns a human-readable string

type Protocol added in v0.3.0

type Protocol string

Protocol used by the exposed port.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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