Files
2026-04-10 11:01:20 +00:00

168 lines
5.9 KiB
Plaintext

import { AccordionTemplate } from 'components/accordion-template.tsx';
import { VarInfo } from 'components/variable-info.tsx';
# Nym Gateway Probe
<VarInfo />
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/nym-nodes/described)
- [`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 --help
```
<AccordionTemplate name="Command output">
```sh
Usage: nym-gateway-probe [OPTIONS] <COMMAND>
Commands:
run-local Run the probe on an unannounced gateway. IP must be provided. Bypasses directory lookup
run Run the probe on a bonded gateway. Uses directory lookup
run-ports Check WG exit policy ports on a bonded gateway. Tests TCP connectivity through the WG tunnel for each port. Use --check-ports to pick specific ports, or --check-all-ports for the full exit policy list
run-agent Run the probe by NS agents
help Print this message or the help of the given subcommand(s)
Options:
-c, --config-env-file <CONFIG_ENV_FILE> Path pointing to an env file describing the network
--no-log Disable logging during probe
-h, --help Print help
-V, --version Print version
```
</ AccordionTemplate>
Use `--help` with any sub-command, for example with `run --help`:
```sh
./target/release/nym-gateway-probe run --help
```
<AccordionTemplate name="Command output">
```sh
Run the probe on a bonded gateway. Uses directory lookup
Usage: nym-gateway-probe run [OPTIONS] --entry-gateway <ENTRY_GATEWAY> <--use-mock-ecash|--mnemonic <MNEMONIC>>
Options:
--config-dir <CONFIG_DIR>
Directory for credential and mixnet storage
-g, --entry-gateway <ENTRY_GATEWAY>
The specific gateway specified by ID
--exit-gateway <EXIT_GATEWAY>
Optional identity of the exit node to test, if not provided, entry_gateway is used
--use-mock-ecash
Use mock ecash credentials for testing (requires gateway with --lp-use-mock-ecash)
--mnemonic <MNEMONIC>
Mnemonic to get credentials from the blockchain. It needs NYMs
--min-gateway-mixnet-performance <MIN_GATEWAY_MIXNET_PERFORMANCE>
Only choose gateway with that minimum performance
--no-log
Disable logging during probe
--test-mode <TEST_MODE>
Test mode - explicitly specify which tests to run
Modes:
core - Traditional mixnet testing (entry/exit pings + WireGuard via authenticator)
wg-mix - Wireguard via authenticator
wg-lp - Entry LP + Exit LP (nested forwarding) + WireGuard
lp-only - LP registration only (no WireGuard)
socks5-only - Socks5 network requester test
all - Mixnet, wireguard over authenticator and LP registration
[default: core]
--ignore-egress-epoch-role
--amnezia-args <AMNEZIA_ARGS>
Arguments to be appended to the wireguard config enabling amnezia-wg configuration
--use-target <PORT_CHECK_TARGET>
Target host for exit policy port checks (must listen on all tested ports)
[default: portquiz.net]
--check-ports <PORT_CHECK_PORTS>
TCP ports to check through the WireGuard tunnel for exit policy verification. Only used with the `run-ports` subcommand. For all exit policy ports, use --check-all-ports instead
--port-check-timeout-sec <PORT_CHECK_TIMEOUT_SEC>
Timeout in seconds for each individual TCP port check
[default: 5]
-h, --help
Print help (see a summary with '-h')
```
</ AccordionTemplate>
To run you must run it with a 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.
- Always add this:
```sh
--mnemonic <MNEMONIC>
```
For any `nym-node --mode exit-gateway` the aim is to have this outcome:
```json
{
"gateway": "<GATEWAY_IDENTITY_KEY>",
"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
}
}
}
```