Skip to main content

Crate innisfree

Crate innisfree 

Source
Expand description

Innisfree, a project for exposing local network services via a public cloud IP. The traffic is routed transparently from a cloud VM to the local machine running innisfree via an ad-hoc Wireguard tunnel. Multiple services can be configured, via crate::config::ServicePort. Both TCP and UDP are supported (see crate::proxy).

Only DigitalOcean is implemented as a cloud backend, but adding others should be fairly straightforward — see crate::server::Provider.

Modules§

config
Storage logic, to persist configuration of remote tunnels locally. Includes methods for creating and destroying configuration directories.
doctor
Pre-flight checks for the local environment.
manager
High-level controller logic for managing service proxies, i.e. TunnelManager.
net
Utility functions for looking up available IP ranges for establishing the Wireguard interface.
providers
Construction helpers for backend cloud providers.
proxy
Core network proxy logic for forwarding TCP and UDP traffic between two sockets.
server
Abstract representation of a remote server, plus the Provider factory that knows how to bring one up.
ssh
Utility functions for generating OpenSSH keypairs. These keypairs are used for both client and server identities. The client-side keys are written to a local config dir; the server keys are placed inside a cloudinit YAML file and passed in during instance creation.
state
On-disk layout for per-tunnel state.
systemd
Render the systemd unit (innisfree@.service) from the in-tree Tera template at files/innisfree@.service.
wg
Functions for managing Wireguard connections. Includes methods for generating keypairs (WireguardKeypair::new), for configuring interfaces (WireguardHost),