vpnkit

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Feb 7, 2019 License: Apache-2.0 Imports: 19 Imported by: 14

Documentation

Overview

Package vpnkit allows a running VPNKit service to be reconfigured.

Features

- expose/unexpose TCP and UDP ports

Index

Constants

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)
}

Client exposes and unexposes ports on vpnkit.

type Connection

type Connection struct {
	// contains filtered or unexported fields
}

Connection represents an open control connection to vpnkit

func NewConnection

func NewConnection(ctx context.Context, path string) (*Connection, error)

NewConnection connects to a vpnkit Unix domain socket on the given path and returns the connection. If the path is the empty string then the default system path will be used.

func NewConnectionForClient added in v0.3.0

func NewConnectionForClient(client *datakit.Client) *Connection

NewConnectionForClient returns a connection using given client

func (*Connection) Expose added in v0.3.0

func (c *Connection) Expose(ctx context.Context, p *Port) error

Expose asks vpnkit to expose the port

func (*Connection) ListExposed added in v0.3.0

func (c *Connection) ListExposed(ctx context.Context) ([]Port, error)

ListExposed returns a list of currently exposed ports.

func (*Connection) Unexpose added in v0.3.0

func (c *Connection) Unexpose(ctx context.Context, p *Port) error

Unexpose asks vpnkit to hide the port again

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

type Port struct {
	// Proto is the protocol used by the exposed port.
	Proto Protocol
	// OutIP is the external IP address.
	OutIP net.IP
	// OutPort is the external port number.
	OutPort uint16
	// OutPath is the external Unix domain socket.
	OutPath string
	// InIP is the internal IP address.
	InIP net.IP
	// InPort is the internal port number.
	InPort uint16
	// InPath is the internal Unix domain socket.
	InPath string
	// contains filtered or unexported fields
}

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

func NewPath added in v0.3.0

func NewPath(connection *Connection, outPath, inPath string) *Port

NewPath constructs an instance of a forwarded Unix path

func NewPort

func NewPort(connection *Connection, proto Protocol, outIP net.IP, outPort uint16, inIP net.IP, inPort uint16) *Port

NewPort constructs an instance of a TCP or UDP Port

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.

Jump to

Keyboard shortcuts

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