diplonat helps you exposing your public services in a dynamic environment
Find a file
2020-05-21 22:25:33 +02:00
src Broken Diplonat 2020-05-21 22:25:33 +02:00
.gitignore Start to modularize 2020-05-09 15:33:02 +02:00
Cargo.lock Working on logic 2020-05-21 17:51:30 +02:00
Cargo.toml Working on logic 2020-05-21 17:51:30 +02:00
README.md Broken Diplonat 2020-05-21 22:25:33 +02:00

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