# Nym Gateway Probe Nym Node operators running Gateway functionality are already familiar with the monitoring tool [Harbourmaster.nymtech.net](https://harbourmaster.nymtech.net). Under the hood of Nym Harbourmaster runs iterations of `nym-gateway-probe` doing various checks and displaying the results on the interface. Operators don't have to rely on the probe ran by Nym and wait for the data to refresh. With `nym-gateway-probe` everyone can check any Gateway's networking status from their own computer at any time. In one command the client queries data from: - [`nym-api`](https://validator.nymtech.net/api/v1/gateways) - [`explorer-api`](https://mainnet-node-status-api.nymtech.cc/swagger/#/Gateways) - [`harbour-master`](https://harbourmaster.nymtech.net/) ## Preparation We recommend to have installed all [the prerequisites](../binaries/building-nym.md#prerequisites) needed to build `nym-node` from source including latest [Rust Toolchain](https://www.rust-lang.org/tools/install), **and** make sure to have [Go](https://go.dev/doc/install) installed. Go is necessary as the probe uses the `rust2go` FFI library to use `netstack` when making requests. ## Installation `nym-gateway-probe` source code is in [`nym` monorepo](https://github.com/nymtech/nym). The probe needs to be built from source. 1. Clone the repository: ```sh git clone https://github.com/nymtech/nym.git ``` 2. Build `nym-gateway-probe`: ```sh cargo build --release -p nym-gateway-probe ``` ## Running the Client To list all commands and options run the binary with `--help` command: ```sh ./target/release/nym-gateway-probe -h ``` - Output: ```sh Usage: nym-gateway-probe [OPTIONS] [COMMAND] Commands: run-local Run the probe locally help Print this message or the help of the given subcommand(s) Options: -c, --config-env-file Path pointing to an env file describing the network -g, --entry-gateway The specific gateway specified by ID -n, --node Identity of the node to test --min-gateway-mixnet-performance --only-wireguard --ignore-egress-epoch-role Disable logging during probe --no-log -a, --amnezia-args Arguments to be appended to the wireguard config enabling amnezia-wg configuration --netstack-download-timeout-sec [default: 180] --metadata-timeout-sec [default: 30] --netstack-v4-dns [default: 1.1.1.1] --netstack-v6-dns [default: 2606:4700:4700::1111] --netstack-num-ping [default: 5] --netstack-send-timeout-sec [default: 3] --netstack-recv-timeout-sec [default: 3] --netstack-ping-hosts-v4 [default: nym.com] --netstack-ping-ips-v4 [default: 1.1.1.1] --netstack-ping-hosts-v6 [default: cloudflare.com] --netstack-ping-ips-v6 [default: 2001:4860:4860::8888 2606:4700:4700::1111 2620:fe::fe] --ticket-materials --ticket-materials-revision [default: 1] -h, --help Print help -V, --version Print version ``` To run the client, simply add `-g` flag followed by the ID key of the node you wish to test, as well as the mnemonic of a funded Nyx account; this is required to test the ticketbook generation. **Note that this accout needs to have NYM tokens; you cannot use an account with a NymVPN subscription**. Make sure to have at least a few NYM tokens in there. ```sh ./target/release/nym-gateway-probe run-local -g --mnemonic ``` For any `nym-node --mode exit-gateway` the aim is to have this outcome: ```json { "gateway": "", "outcome": { "as_entry": { "can_connect": true, "can_route": true }, "as_exit": { "can_connect": true, "can_route_ip_v4": true, "can_route_ip_external_v4": true, "can_route_ip_v6": true, "can_route_ip_external_v6": true }, "wg": { "can_register": true, "can_handshake": true, "can_resolve_dns": true, "ping_hosts_performance": 1.0, "ping_ips_performance": 1.0 } } } ``` **If your Gateway is blacklisted, the probe will not work.** If you don't provide a `-g` flag it will pick a random node to test.