mirror of
https://codeberg.org/icewind/netnsd.git
synced 2026-06-03 09:04:07 +02:00
A declarative manager for Linux network namespaces.
- Rust 93.3%
- Nix 6.7%
| .forgejo/workflows | ||
| nix | ||
| src | ||
| .envrc | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| config.sample.toml | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
netnsd
A declarative manager for Linux network namespaces.
Features
- Fully declarative configuration
- Hot reloading of configuration
- Port forwarding into the namespace
Usage
Daemon
netnsd daemon [--config <config.toml>]
Start the netnsd daemon, applying the configured namespace configuration and
running any proxies.
You can tell the daemon to reload the configuration with pkill -sighup netnsd.
Note that, to minimize interruption of anything using the namespaces, stopping the daemon will not remove the created namespaces.
Up
netnsd up [--config <config.toml>]
Applying the configured namespace and exit.
Down
netnsd down
Remove all namespaces created by netnsd and exit.
Configuration
By default netnsd will look for it's configuration in /etc/netnsd/netnsd.
You can specify a different configuration path with the --config option.
# You can define any number of namespaces to create
[[namespace]]
# name of the namespace to create
name = "test"
# You can define any number of port forwards to setup into the namespace
[[namespace.forward]]
# port, address or socket outside the namespace to listen on
# when only a port is specified it will listen on 0.0.0.0
source = 8091
# port or address inside the namespace to forward to
# when only a port is specified it will forward to 127.0.0.1
target = 80
[[namespace.forward]]
# listening on a unix socket instead of a tcp port
source = "/run/test/https"
# forward to a specific address instead of 127.0.0.1
target = "127.0.0.2:443"
# Another namespace
[[namespace]]
name = "test2"
[[namespace.forward]]
# listening on a specific address instead of 0.0.0.0
source = "127.0.0.1:9091"
target = 80