diplonat helps you exposing your public services in a dynamic environment
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
README.md |
Diplonat
Feature set
- (Re)Configure NAT via UPNP/IGD (prio: high)
- (Re)Configure nftable (prio: low)
- (Re)Configure DNS via ??? (prio: low)
Operate
cargo build
consul agent -dev # in a separate terminal
# adapt following values to your configuratio
export DIPLONAT_PRIVATE_IP="192.168.0.18"
export DIPLONAT_REFRESH_TIME="60"
export DIPLONAT_EXPIRATION_TIME="300"
export DIPLONAT_CONSUL_NODE_NAME="lheureduthe"
export RUST_LOG=debug
cargo run
About Consul Catalog
- We query the
/v1/catalog/node/<node>
endpoint - We can watch it thanks to Blocking Queries
eg:
curl -vvv http://127.0.0.1:8500/v1/catalog/node/lheureduthe
# returns X-Consul-Index: 15
curl -vvv http://127.0.0.1:8500/v1/catalog/node/lheureduthe?index=15
Each time you do the request, the whole list of services bound to the node is returned.
To test the Consul Catalog part, you can do:
consul agent -dev #in a separate terminal, if not already running
consul services register -name=example -port=1337
consul services -id=example