Tunnel TCP services

Expose a local or remote TCP service to the network and connect to it from another peer.

If you have not done this before, the step-by-step version is Share a service between two hosts.

Forwarding a local connection

EdgeVPN can also be used to expose local(or remote) services without establishing a VPN and allocating a local tun/tap device, similarly to ngrok.

Exposing a service

If you are used to how Local SSH forwarding works (e.g. ssh -L 9090:something:remote <my_node>), EdgeVPN takes a similar approach.

A Service is a generalized TCP service running in a host (also outside the network). For example, let’s say that we want to expose a SSH server inside a LAN.

To expose a service to your EdgeVPN network then:

$ edgevpn service-add "MyCoolService" "127.0.0.1:22"

To reach the service, EdgeVPN will setup a local port and bind to it, it will tunnel the traffic to the service over the VPN, for e.g. to bind locally to 9090:

$ edgevpn service-connect "MyCoolService" "127.0.0.1:9090"

with the example above, ‘sshing into 9090 locally would forward to 22.

Last modified August 4, 2026: Fix/proxy egress ownership (#1066) (cfb9c39)