- Prevent 'nx9-wg version' from creating data directories by avoiding database initialization. - Create parent directories when an explicit --database path is provided. - Redact printed generated administrator passwords; announce file path or redact instead. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2705 lines
91 KiB
Plaintext
2705 lines
91 KiB
Plaintext
|
|
============================================================================
|
|
01 — Binary and Version
|
|
============================================================================
|
|
|
|
>>> Version
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg version
|
|
[FAIL] Version (exit=1)
|
|
--- stderr ---
|
|
Failed to create data directory '/var/lib/nx9-wg': Permission denied (os error 13)
|
|
|
|
>>> Version JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --format json version
|
|
[FAIL] Version JSON (exit=1)
|
|
--- stderr ---
|
|
Failed to create data directory '/var/lib/nx9-wg': Permission denied (os error 13)
|
|
|
|
============================================================================
|
|
02 — Top-Level CLI Surface
|
|
============================================================================
|
|
|
|
>>> Top-level --help
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --help
|
|
[PASS] Top-level --help
|
|
A high-performance, native Rust WireGuard management system with zero external runtime dependencies.
|
|
|
|
Usage: nx9-wg [OPTIONS] [COMMAND]
|
|
|
|
Commands:
|
|
serve Start the nx9-wg REST API and WebSocket daemon
|
|
init Initialize the administrator account
|
|
system System status, health, and settings
|
|
admin Administrator, session, and token management
|
|
interface WireGuard interface management
|
|
peer WireGuard peer enrollment and operations
|
|
network Subnet network management
|
|
route Kernel routing table management
|
|
firewall nftables firewall management
|
|
nat NAT masquerade management
|
|
forwarding Kernel IP packet forwarding management
|
|
reconcile Reconciliation between SQLite desired state and live kernel state
|
|
backup Database backup and restore operations
|
|
audit Security and operational audit trail
|
|
live Query live Linux kernel state
|
|
diagnostics Native Linux and WireGuard diagnostics inspection
|
|
profile Client environment and MTU profile management
|
|
version Display version and build information
|
|
help Print this message or the help of the given subcommand(s)
|
|
|
|
Options:
|
|
-c, --config <CONFIG>
|
|
Path to configuration file
|
|
|
|
[env: NX9_WG_CONFIG=]
|
|
|
|
-d, --data-dir <DATA_DIR>
|
|
Path to database data directory
|
|
|
|
[env: NX9_WG_DATA_DIR=]
|
|
|
|
--database <DATABASE>
|
|
Specific SQLite database file path or URL
|
|
|
|
[env: NX9_WG_DATABASE=]
|
|
|
|
--format <FORMAT>
|
|
Output format
|
|
|
|
[default: table]
|
|
[possible values: table, json, yaml, csv]
|
|
|
|
--json
|
|
Output strictly in JSON format
|
|
|
|
-q, --quiet
|
|
Suppress status output
|
|
|
|
-v, --verbose
|
|
Enable verbose output
|
|
|
|
--log-level <LOG_LEVEL>
|
|
Log verbosity level (trace, debug, info, warn, error)
|
|
|
|
[env: NX9_WG_LOG_LEVEL=]
|
|
|
|
-h, --help
|
|
Print help (see a summary with '-h')
|
|
|
|
-V, --version
|
|
Print version
|
|
|
|
============================================================================
|
|
03 — Top-Level Command Help Audit
|
|
============================================================================
|
|
[PASS] serve --help
|
|
[PASS] init --help
|
|
[PASS] system --help
|
|
[PASS] admin --help
|
|
[PASS] interface --help
|
|
[PASS] peer --help
|
|
[PASS] network --help
|
|
[PASS] route --help
|
|
[PASS] firewall --help
|
|
[PASS] nat --help
|
|
[PASS] forwarding --help
|
|
[PASS] reconcile --help
|
|
[PASS] backup --help
|
|
[PASS] audit --help
|
|
[PASS] live --help
|
|
[PASS] diagnostics --help
|
|
[PASS] profile --help
|
|
[PASS] version --help
|
|
|
|
============================================================================
|
|
04 — Feature/Subcommand Help Audit
|
|
============================================================================
|
|
[PASS] live interface --help
|
|
[PASS] live peer --help
|
|
[PASS] live routes --help
|
|
[PASS] live firewall --help
|
|
[PASS] live forwarding --help
|
|
[PASS] live nat --help
|
|
[PASS] audit list --help
|
|
[PASS] audit show --help
|
|
[PASS] backup create --help
|
|
[PASS] backup list --help
|
|
[PASS] backup show --help
|
|
[PASS] backup verify --help
|
|
[PASS] backup restore --help
|
|
[PASS] backup delete --help
|
|
[PASS] nat status --help
|
|
[PASS] nat enable --help
|
|
[PASS] nat disable --help
|
|
[PASS] nat list --help
|
|
[PASS] nat sync --help
|
|
[PASS] peer list --help
|
|
[PASS] peer show --help
|
|
[PASS] peer create --help
|
|
[PASS] peer update --help
|
|
[PASS] peer enable --help
|
|
[PASS] peer disable --help
|
|
[PASS] peer revoke --help
|
|
[PASS] peer delete --help
|
|
[PASS] peer status --help
|
|
[PASS] peer config --help
|
|
[PASS] peer qr --help
|
|
[PASS] peer expire --help
|
|
[PASS] peer lifecycle --help
|
|
[PASS] reconcile status --help
|
|
[PASS] reconcile plan --help
|
|
[PASS] reconcile apply --help
|
|
[PASS] reconcile verify --help
|
|
[PASS] system info --help
|
|
[PASS] system health --help
|
|
[PASS] system settings --help
|
|
[PASS] profile list --help
|
|
[PASS] profile show --help
|
|
[PASS] profile validate --help
|
|
[PASS] profile resolve --help
|
|
[PASS] network list --help
|
|
[PASS] network show --help
|
|
[PASS] network create --help
|
|
[PASS] network update --help
|
|
[PASS] network delete --help
|
|
[PASS] network available --help
|
|
[PASS] network allocations --help
|
|
[PASS] firewall list --help
|
|
[PASS] firewall show --help
|
|
[PASS] firewall add --help
|
|
[PASS] firewall update --help
|
|
[PASS] firewall delete --help
|
|
[PASS] firewall enable --help
|
|
[PASS] firewall disable --help
|
|
[PASS] firewall status --help
|
|
[PASS] firewall sync --help
|
|
[PASS] forwarding status --help
|
|
[PASS] forwarding enable --help
|
|
[PASS] forwarding disable --help
|
|
[PASS] forwarding sync --help
|
|
[PASS] interface list --help
|
|
[PASS] interface show --help
|
|
[PASS] interface create --help
|
|
[PASS] interface update --help
|
|
[PASS] interface enable --help
|
|
[PASS] interface disable --help
|
|
[PASS] interface delete --help
|
|
[PASS] interface status --help
|
|
[PASS] interface reconcile --help
|
|
[PASS] route list --help
|
|
[PASS] route show --help
|
|
[PASS] route add --help
|
|
[PASS] route update --help
|
|
[PASS] route delete --help
|
|
[PASS] route status --help
|
|
[PASS] route sync --help
|
|
[PASS] admin status --help
|
|
[PASS] admin create --help
|
|
[PASS] admin password --help
|
|
[PASS] admin sessions --help
|
|
[PASS] admin tokens --help
|
|
|
|
============================================================================
|
|
05 — Administrator Bootstrap
|
|
============================================================================
|
|
|
|
>>> Initialize administrator with generated password
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db init --generate-password --write-password-file /tmp/nx9-wg-cli-test.u7uMLB/admin-password
|
|
[PASS] Initialize administrator with generated password
|
|
[2m2026-08-16T10:46:32.751782Z[0m [32m INFO[0m [2mnx9_wg_api::auth::bootstrap[0m[2m:[0m Administrator initialized successfully [3musername[0m[2m=[0madmin [3msource[0m[2m=[0msecure random generation
|
|
Administrator initialized successfully.
|
|
Username: admin
|
|
Source: secure random generation
|
|
|
|
Generated Password (SAVE THIS IMMEDIATELY):
|
|
========================================
|
|
q2YKIjqIogWH=t9ISk@m#Bug
|
|
========================================
|
|
|
|
created_at : 2026-08-16T10:46:32.751497912
|
|
id : 1
|
|
last_login_at : null
|
|
last_login_ip : null
|
|
password_hash : $argon2id$v=19$m=19456,t=2,p=1$hQkBKcRbtIXRHCv6OuOUfA$qqbIvjMslEdA7OCPEYpcRjYtgmejjAan6Fxhday9GLM
|
|
totp_enabled : false
|
|
totp_secret : null
|
|
updated_at : 2026-08-16T10:46:32.751497912
|
|
username : admin
|
|
[PASS] Generated administrator password file exists
|
|
|
|
============================================================================
|
|
06 — System
|
|
============================================================================
|
|
|
|
>>> System info
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db system info
|
|
[PASS] System info
|
|
arch : x86_64
|
|
config_file : /etc/nx9-wg/config.toml
|
|
data_dir : /tmp/nx9-wg-cli-test.u7uMLB/data
|
|
database_path : /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db
|
|
log_level : info
|
|
os : linux
|
|
reconciliation_interval_secs: 60
|
|
session_expiry_hours : 24
|
|
version : 0.1.0
|
|
|
|
>>> System health
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db system health
|
|
[PASS] System health
|
|
database : connected
|
|
status : healthy
|
|
timestamp : 2026-08-16T10:46:32.762713232+00:00
|
|
|
|
>>> System info JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json system info
|
|
[PASS] System info JSON
|
|
{
|
|
"arch": "x86_64",
|
|
"config_file": "/etc/nx9-wg/config.toml",
|
|
"data_dir": "/tmp/nx9-wg-cli-test.u7uMLB/data",
|
|
"database_path": "/tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db",
|
|
"log_level": "info",
|
|
"os": "linux",
|
|
"reconciliation_interval_secs": 60,
|
|
"session_expiry_hours": 24,
|
|
"version": "0.1.0"
|
|
}
|
|
|
|
>>> System health JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json system health
|
|
[PASS] System health JSON
|
|
{
|
|
"database": "connected",
|
|
"status": "healthy",
|
|
"timestamp": "2026-08-16T10:46:32.773865263+00:00"
|
|
}
|
|
|
|
>>> System info YAML
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format yaml system info
|
|
[PASS] System info YAML
|
|
arch: "x86_64"
|
|
config_file: "/etc/nx9-wg/config.toml"
|
|
data_dir: "/tmp/nx9-wg-cli-test.u7uMLB/data"
|
|
database_path: "/tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db"
|
|
log_level: "info"
|
|
os: "linux"
|
|
reconciliation_interval_secs: 60
|
|
session_expiry_hours: 24
|
|
version: "0.1.0"
|
|
|
|
>>> System health CSV
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format csv system health
|
|
[PASS] System health CSV
|
|
database,status,timestamp
|
|
connected,healthy,2026-08-16T10:46:32.785108766+00:00
|
|
|
|
============================================================================
|
|
07 — Administrator / Authentication
|
|
============================================================================
|
|
|
|
>>> Admin status
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db admin status
|
|
[PASS] Admin status
|
|
created_at : 2026-08-16T10:46:32
|
|
last_login_at : null
|
|
last_login_ip : null
|
|
totp_enabled : false
|
|
username : admin
|
|
|
|
>>> Admin status JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json admin status
|
|
[PASS] Admin status JSON
|
|
{
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"last_login_at": null,
|
|
"last_login_ip": null,
|
|
"totp_enabled": false,
|
|
"username": "admin"
|
|
}
|
|
|
|
============================================================================
|
|
08 — Client Environment / MTU Profiles
|
|
============================================================================
|
|
|
|
>>> Profile list
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db profile list
|
|
[PASS] Profile list
|
|
[
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Android cellular client profile with 1280 MTU and 25s keepalive",
|
|
"device": "android",
|
|
"dns": null,
|
|
"id": "android-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Android Mobile",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "other",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Carrier-grade NAT environment profile with 1360 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-cgnat",
|
|
"is_builtin": true,
|
|
"mtu": 1360,
|
|
"name": "Default CGNAT",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Standard mobile carrier profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Default Mobile",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "web",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Standard Web client profile with 1420 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-web",
|
|
"is_builtin": true,
|
|
"mtu": 1420,
|
|
"name": "Default Web",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "wifi",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Standard Wi-Fi wireless profile with 1420 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-wifi",
|
|
"is_builtin": true,
|
|
"mtu": 1420,
|
|
"name": "Default Wi-Fi",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "wired",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "High-throughput wired Ethernet profile with 1420 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-wired",
|
|
"is_builtin": true,
|
|
"mtu": 1420,
|
|
"name": "Default Wired",
|
|
"nat_type": "direct",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Reliance Jio 4G/5G mobile profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "jio-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Jio Mobile",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "jio",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "other",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Starlink satellite CGNAT profile with 1360 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "starlink-cgnat",
|
|
"is_builtin": true,
|
|
"mtu": 1360,
|
|
"name": "Starlink CGNAT",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "starlink",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "T-Mobile US IPv6/CGNAT mobile profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "tmobile-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "T-Mobile Mobile",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "tmobile",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Verizon Wireless mobile profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "verizon-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Verizon Mobile",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "verizon",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Apple iOS cellular profile with 1280 MTU and 25s keepalive",
|
|
"device": "ios",
|
|
"dns": null,
|
|
"id": "ios-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "iOS Mobile",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
}
|
|
]
|
|
|
|
>>> Profile list JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json profile list
|
|
[PASS] Profile list JSON
|
|
[
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Android cellular client profile with 1280 MTU and 25s keepalive",
|
|
"device": "android",
|
|
"dns": null,
|
|
"id": "android-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Android Mobile",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "other",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Carrier-grade NAT environment profile with 1360 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-cgnat",
|
|
"is_builtin": true,
|
|
"mtu": 1360,
|
|
"name": "Default CGNAT",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Standard mobile carrier profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Default Mobile",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "web",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Standard Web client profile with 1420 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-web",
|
|
"is_builtin": true,
|
|
"mtu": 1420,
|
|
"name": "Default Web",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "wifi",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Standard Wi-Fi wireless profile with 1420 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-wifi",
|
|
"is_builtin": true,
|
|
"mtu": 1420,
|
|
"name": "Default Wi-Fi",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "wired",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "High-throughput wired Ethernet profile with 1420 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-wired",
|
|
"is_builtin": true,
|
|
"mtu": 1420,
|
|
"name": "Default Wired",
|
|
"nat_type": "direct",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Reliance Jio 4G/5G mobile profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "jio-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Jio Mobile",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "jio",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "other",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Starlink satellite CGNAT profile with 1360 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "starlink-cgnat",
|
|
"is_builtin": true,
|
|
"mtu": 1360,
|
|
"name": "Starlink CGNAT",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "starlink",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "T-Mobile US IPv6/CGNAT mobile profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "tmobile-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "T-Mobile Mobile",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "tmobile",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Verizon Wireless mobile profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "verizon-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Verizon Mobile",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "verizon",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Apple iOS cellular profile with 1280 MTU and 25s keepalive",
|
|
"device": "ios",
|
|
"dns": null,
|
|
"id": "ios-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "iOS Mobile",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
}
|
|
]
|
|
|
|
>>> Default mobile profile
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db profile show default-mobile
|
|
[PASS] Default mobile profile
|
|
connection_type : mobile
|
|
created_at : 2026-08-16T10:46:32
|
|
description : Standard mobile carrier profile with 1280 MTU and 25s keepalive
|
|
device : null
|
|
dns : null
|
|
id : default-mobile
|
|
is_builtin : true
|
|
mtu : 1280
|
|
name : Default Mobile
|
|
nat_type : unknown
|
|
persistent_keepalive : 25
|
|
provider : null
|
|
updated_at : 2026-08-16T10:46:32
|
|
|
|
>>> Default CGNAT profile
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db profile show default-cgnat
|
|
[PASS] Default CGNAT profile
|
|
connection_type : other
|
|
created_at : 2026-08-16T10:46:32
|
|
description : Carrier-grade NAT environment profile with 1360 MTU and 25s keepalive
|
|
device : null
|
|
dns : null
|
|
id : default-cgnat
|
|
is_builtin : true
|
|
mtu : 1360
|
|
name : Default CGNAT
|
|
nat_type : cgnat
|
|
persistent_keepalive : 25
|
|
provider : null
|
|
updated_at : 2026-08-16T10:46:32
|
|
|
|
>>> Default Wi-Fi profile
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db profile show default-wifi
|
|
[PASS] Default Wi-Fi profile
|
|
connection_type : wifi
|
|
created_at : 2026-08-16T10:46:32
|
|
description : Standard Wi-Fi wireless profile with 1420 MTU and 25s keepalive
|
|
device : null
|
|
dns : null
|
|
id : default-wifi
|
|
is_builtin : true
|
|
mtu : 1420
|
|
name : Default Wi-Fi
|
|
nat_type : unknown
|
|
persistent_keepalive : 25
|
|
provider : null
|
|
updated_at : 2026-08-16T10:46:32
|
|
|
|
>>> Default Web profile
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db profile show default-web
|
|
[PASS] Default Web profile
|
|
connection_type : web
|
|
created_at : 2026-08-16T10:46:32
|
|
description : Standard Web client profile with 1420 MTU and 25s keepalive
|
|
device : null
|
|
dns : null
|
|
id : default-web
|
|
is_builtin : true
|
|
mtu : 1420
|
|
name : Default Web
|
|
nat_type : unknown
|
|
persistent_keepalive : 25
|
|
provider : null
|
|
updated_at : 2026-08-16T10:46:32
|
|
|
|
>>> Default Wired profile
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db profile show default-wired
|
|
[PASS] Default Wired profile
|
|
connection_type : wired
|
|
created_at : 2026-08-16T10:46:32
|
|
description : High-throughput wired Ethernet profile with 1420 MTU and 25s keepalive
|
|
device : null
|
|
dns : null
|
|
id : default-wired
|
|
is_builtin : true
|
|
mtu : 1420
|
|
name : Default Wired
|
|
nat_type : direct
|
|
persistent_keepalive : 25
|
|
provider : null
|
|
updated_at : 2026-08-16T10:46:32
|
|
|
|
>>> Validate MTU 1280
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db profile validate 1280
|
|
[PASS] Validate MTU 1280
|
|
is_jumbo : false
|
|
message : MTU is in valid standard range (1280-1500)
|
|
mtu : 1280
|
|
valid : true
|
|
|
|
>>> Validate MTU 1360
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db profile validate 1360
|
|
[PASS] Validate MTU 1360
|
|
is_jumbo : false
|
|
message : MTU is in valid standard range (1280-1500)
|
|
mtu : 1360
|
|
valid : true
|
|
|
|
>>> Validate MTU 1420
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db profile validate 1420
|
|
[PASS] Validate MTU 1420
|
|
is_jumbo : false
|
|
message : MTU is in valid standard range (1280-1500)
|
|
mtu : 1420
|
|
valid : true
|
|
|
|
>>> Validate MTU 1500
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db profile validate 1500
|
|
[PASS] Validate MTU 1500
|
|
is_jumbo : false
|
|
message : MTU is in valid standard range (1280-1500)
|
|
mtu : 1500
|
|
valid : true
|
|
|
|
>>> Resolve Android Mobile CGNAT
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json profile resolve --connection mobile --device android --nat cgnat
|
|
[PASS] Resolve Android Mobile CGNAT
|
|
{
|
|
"applied_profile_id": "android-mobile",
|
|
"applied_profile_name": "Android Mobile",
|
|
"connection_type": "mobile",
|
|
"device": "android",
|
|
"dns": null,
|
|
"is_manually_overridden": false,
|
|
"mtu": 1280,
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"warning": null
|
|
}
|
|
|
|
>>> Resolve iOS Mobile CGNAT
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json profile resolve --connection mobile --device ios --nat cgnat
|
|
[PASS] Resolve iOS Mobile CGNAT
|
|
{
|
|
"applied_profile_id": "ios-mobile",
|
|
"applied_profile_name": "iOS Mobile",
|
|
"connection_type": "mobile",
|
|
"device": "ios",
|
|
"dns": null,
|
|
"is_manually_overridden": false,
|
|
"mtu": 1280,
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"warning": null
|
|
}
|
|
|
|
>>> Resolve Linux Wi-Fi Direct
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json profile resolve --connection wifi --device linux --nat direct
|
|
[PASS] Resolve Linux Wi-Fi Direct
|
|
{
|
|
"applied_profile_id": "default-wifi",
|
|
"applied_profile_name": "Default Wi-Fi",
|
|
"connection_type": "wifi",
|
|
"device": "linux",
|
|
"dns": null,
|
|
"is_manually_overridden": false,
|
|
"mtu": 1420,
|
|
"nat_type": "direct",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"warning": null
|
|
}
|
|
|
|
>>> Resolve Windows Wired
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json profile resolve --connection wired --device windows --nat direct
|
|
[PASS] Resolve Windows Wired
|
|
{
|
|
"applied_profile_id": "default-wired",
|
|
"applied_profile_name": "Default Wired",
|
|
"connection_type": "wired",
|
|
"device": "windows",
|
|
"dns": null,
|
|
"is_manually_overridden": false,
|
|
"mtu": 1420,
|
|
"nat_type": "direct",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"warning": null
|
|
}
|
|
|
|
>>> Resolve Jio Mobile CGNAT
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json profile resolve --provider jio --connection mobile --nat cgnat
|
|
[PASS] Resolve Jio Mobile CGNAT
|
|
{
|
|
"applied_profile_id": "jio-mobile",
|
|
"applied_profile_name": "Jio Mobile",
|
|
"connection_type": "mobile",
|
|
"device": null,
|
|
"dns": null,
|
|
"is_manually_overridden": false,
|
|
"mtu": 1280,
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "jio",
|
|
"warning": null
|
|
}
|
|
|
|
>>> Resolve T-Mobile Mobile CGNAT
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json profile resolve --provider tmobile --connection mobile --nat cgnat
|
|
[PASS] Resolve T-Mobile Mobile CGNAT
|
|
{
|
|
"applied_profile_id": "tmobile-mobile",
|
|
"applied_profile_name": "T-Mobile Mobile",
|
|
"connection_type": "mobile",
|
|
"device": null,
|
|
"dns": null,
|
|
"is_manually_overridden": false,
|
|
"mtu": 1280,
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "tmobile",
|
|
"warning": null
|
|
}
|
|
|
|
>>> Resolve Verizon Mobile CGNAT
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json profile resolve --provider verizon --connection mobile --nat cgnat
|
|
[PASS] Resolve Verizon Mobile CGNAT
|
|
{
|
|
"applied_profile_id": "verizon-mobile",
|
|
"applied_profile_name": "Verizon Mobile",
|
|
"connection_type": "mobile",
|
|
"device": null,
|
|
"dns": null,
|
|
"is_manually_overridden": false,
|
|
"mtu": 1280,
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "verizon",
|
|
"warning": null
|
|
}
|
|
|
|
>>> Resolve Starlink CGNAT
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json profile resolve --provider starlink --connection other --nat cgnat
|
|
[PASS] Resolve Starlink CGNAT
|
|
{
|
|
"applied_profile_id": "starlink-cgnat",
|
|
"applied_profile_name": "Starlink CGNAT",
|
|
"connection_type": "other",
|
|
"device": null,
|
|
"dns": null,
|
|
"is_manually_overridden": false,
|
|
"mtu": 1360,
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "starlink",
|
|
"warning": null
|
|
}
|
|
|
|
>>> Resolve manual MTU override
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json profile resolve --connection mobile --device android --nat cgnat --mtu 1300
|
|
[PASS] Resolve manual MTU override
|
|
{
|
|
"applied_profile_id": "android-mobile",
|
|
"applied_profile_name": "Android Mobile",
|
|
"connection_type": "mobile",
|
|
"device": "android",
|
|
"dns": null,
|
|
"is_manually_overridden": true,
|
|
"mtu": 1300,
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"warning": "Client MTU has been manually overridden by administrator."
|
|
}
|
|
|
|
>>> Resolve explicit profile
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json profile resolve --profile android-mobile
|
|
[PASS] Resolve explicit profile
|
|
{
|
|
"applied_profile_id": "android-mobile",
|
|
"applied_profile_name": "Android Mobile",
|
|
"connection_type": "mobile",
|
|
"device": "android",
|
|
"dns": null,
|
|
"is_manually_overridden": false,
|
|
"mtu": 1280,
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"warning": null
|
|
}
|
|
|
|
============================================================================
|
|
09 — Network Management
|
|
============================================================================
|
|
|
|
>>> Network list
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db network list
|
|
[PASS] Network list
|
|
(No items found)
|
|
|
|
>>> Network list JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json network list
|
|
[PASS] Network list JSON
|
|
[]
|
|
|
|
============================================================================
|
|
10 — WireGuard Interface Management
|
|
============================================================================
|
|
|
|
>>> Interface list
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db interface list
|
|
[PASS] Interface list
|
|
(No items found)
|
|
|
|
>>> Interface list JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json interface list
|
|
[PASS] Interface list JSON
|
|
[]
|
|
|
|
============================================================================
|
|
11 — Peer Management
|
|
============================================================================
|
|
|
|
>>> Peer list
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db peer list
|
|
[PASS] Peer list
|
|
(No items found)
|
|
|
|
>>> Peer list JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json peer list
|
|
[PASS] Peer list JSON
|
|
[]
|
|
|
|
============================================================================
|
|
12 — Routing
|
|
============================================================================
|
|
|
|
>>> Route list
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db route list
|
|
[PASS] Route list
|
|
(No items found)
|
|
|
|
>>> Route list JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json route list
|
|
[PASS] Route list JSON
|
|
[]
|
|
|
|
============================================================================
|
|
13 — Firewall
|
|
============================================================================
|
|
|
|
>>> Firewall list
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db firewall list
|
|
[PASS] Firewall list
|
|
(No items found)
|
|
|
|
>>> Firewall list JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json firewall list
|
|
[PASS] Firewall list JSON
|
|
[]
|
|
|
|
============================================================================
|
|
14 — NAT
|
|
============================================================================
|
|
|
|
>>> NAT status
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db nat status
|
|
[PASS] NAT status
|
|
managed_subnets : []
|
|
nat_masquerade_enabled : true
|
|
table : inet nx9_wg
|
|
|
|
>>> NAT list
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db nat list
|
|
[PASS] NAT list
|
|
(No items found)
|
|
|
|
>>> NAT status JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json nat status
|
|
[PASS] NAT status JSON
|
|
{
|
|
"managed_subnets": [],
|
|
"nat_masquerade_enabled": true,
|
|
"table": "inet nx9_wg"
|
|
}
|
|
|
|
============================================================================
|
|
15 — IP Forwarding
|
|
============================================================================
|
|
|
|
>>> Forwarding status
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db forwarding status
|
|
[PASS] Forwarding status
|
|
ipv4_enabled : false
|
|
ipv6_enabled : false
|
|
|
|
>>> Forwarding status JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json forwarding status
|
|
[PASS] Forwarding status JSON
|
|
{
|
|
"ipv4_enabled": false,
|
|
"ipv6_enabled": false
|
|
}
|
|
|
|
============================================================================
|
|
16 — Reconciliation
|
|
============================================================================
|
|
|
|
>>> Reconciliation status
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db reconcile status
|
|
[PASS] Reconciliation status
|
|
drift_detected : false
|
|
firewall_changes : 0
|
|
interface_changes : 0
|
|
peer_changes : 0
|
|
route_changes : 0
|
|
|
|
>>> Reconciliation plan
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db reconcile plan
|
|
[PASS] Reconciliation plan
|
|
actions : []
|
|
firewall_changes : 0
|
|
forwarding_changes : 0
|
|
has_drift : false
|
|
interface_changes : 0
|
|
peer_changes : 0
|
|
route_changes : 0
|
|
|
|
>>> Reconciliation verify
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db reconcile verify
|
|
[PASS] Reconciliation verify
|
|
Zero drift detected: SQLite and kernel state are in full synchronization.
|
|
|
|
>>> Reconciliation status JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json reconcile status
|
|
[PASS] Reconciliation status JSON
|
|
{
|
|
"drift_detected": false,
|
|
"firewall_changes": 0,
|
|
"interface_changes": 0,
|
|
"peer_changes": 0,
|
|
"route_changes": 0
|
|
}
|
|
|
|
============================================================================
|
|
17 — Backup
|
|
============================================================================
|
|
|
|
>>> Backup list
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db backup list
|
|
[PASS] Backup list
|
|
(No items found)
|
|
|
|
>>> Backup list JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json backup list
|
|
[PASS] Backup list JSON
|
|
[]
|
|
|
|
============================================================================
|
|
18 — Audit
|
|
============================================================================
|
|
|
|
>>> Audit list
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db audit list
|
|
[PASS] Audit list
|
|
[
|
|
{
|
|
"actor": "admin",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"event_type": "admin_initialized",
|
|
"id": 1,
|
|
"ip_address": null,
|
|
"message": "Administrator initialized via secure random generation",
|
|
"metadata": null,
|
|
"resource_id": "1",
|
|
"resource_type": "admin"
|
|
}
|
|
]
|
|
|
|
>>> Audit list JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json audit list
|
|
[PASS] Audit list JSON
|
|
[
|
|
{
|
|
"actor": "admin",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"event_type": "admin_initialized",
|
|
"id": 1,
|
|
"ip_address": null,
|
|
"message": "Administrator initialized via secure random generation",
|
|
"metadata": null,
|
|
"resource_id": "1",
|
|
"resource_type": "admin"
|
|
}
|
|
]
|
|
|
|
============================================================================
|
|
19 — Live Linux State
|
|
============================================================================
|
|
[SKIP] Live interface list — use LIVE=1
|
|
[SKIP] Live peer list — use LIVE=1
|
|
[SKIP] Live routes — use LIVE=1
|
|
[SKIP] Live firewall — use LIVE=1
|
|
[SKIP] Live forwarding — use LIVE=1
|
|
[SKIP] Live NAT — use LIVE=1
|
|
|
|
============================================================================
|
|
20 — Native Diagnostics
|
|
============================================================================
|
|
|
|
>>> Diagnostics all
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db diagnostics all
|
|
[PASS] Diagnostics all
|
|
[
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "hostname",
|
|
"diagnostic_message": "System hostname read successfully",
|
|
"expected_value": null,
|
|
"observed_value": "thakares-ideapad",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "os_architecture",
|
|
"diagnostic_message": "Supported target platform",
|
|
"expected_value": "linux-*",
|
|
"observed_value": "linux-x86_64",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "kernel_version",
|
|
"diagnostic_message": "Linux kernel release inspected",
|
|
"expected_value": null,
|
|
"observed_value": "7.1.8-arch1-3",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "memory_status",
|
|
"diagnostic_message": "System memory available",
|
|
"expected_value": null,
|
|
"observed_value": "MemTotal: 28526564 kB",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "sqlite_persistence",
|
|
"diagnostic_message": "SQLite WAL persistence layer is responsive",
|
|
"expected_value": "connected_and_healthy",
|
|
"observed_value": "connected_and_healthy",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "system",
|
|
"timestamp": "2026-08-16T10:46:33.050682139"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "linux_network_interfaces",
|
|
"diagnostic_message": "Network interfaces discovered in kernel",
|
|
"expected_value": null,
|
|
"observed_value": "2 interfaces (lo, wlp2s0)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "dns_nameservers",
|
|
"diagnostic_message": "System DNS nameservers configured",
|
|
"expected_value": null,
|
|
"observed_value": "127.0.0.1",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "network",
|
|
"timestamp": "2026-08-16T10:46:33.050715281"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "default_gateway_route",
|
|
"diagnostic_message": "Default route to WAN/gateway is present",
|
|
"expected_value": "default_gateway_present",
|
|
"observed_value": "default_gateway_present",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "wan",
|
|
"timestamp": "2026-08-16T10:46:33.050732183"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "configured_interfaces",
|
|
"diagnostic_message": "No WireGuard interfaces configured yet",
|
|
"expected_value": null,
|
|
"observed_value": "0 interfaces",
|
|
"remediation_hint": "Create an interface using 'nx9-wg interface create'",
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "wireguard",
|
|
"timestamp": "2026-08-16T10:46:33.050785273"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "configured_routes",
|
|
"diagnostic_message": "Kernel routing rules configured in database",
|
|
"expected_value": null,
|
|
"observed_value": "0 total (0 active)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "routing",
|
|
"timestamp": "2026-08-16T10:46:33.051082712"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "ipv4_forwarding",
|
|
"diagnostic_message": "IPv4 packet forwarding is disabled in sysctl; VPN clients cannot route traffic",
|
|
"expected_value": "enabled",
|
|
"observed_value": "disabled",
|
|
"remediation_hint": "Enable IP forwarding with 'nx9-wg forwarding enable'",
|
|
"status": "warning"
|
|
}
|
|
],
|
|
"overall_status": "warning",
|
|
"subsystem": "forwarding",
|
|
"timestamp": "2026-08-16T10:46:33.051118900"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "firewall_rules_count",
|
|
"diagnostic_message": "Configured nftables packet filtering rules",
|
|
"expected_value": null,
|
|
"observed_value": "0 total (0 active)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "nftables_table_nx9_wg",
|
|
"diagnostic_message": "Dedicated table inet nx9_wg presence in kernel nftables",
|
|
"expected_value": "active",
|
|
"observed_value": "not_loaded",
|
|
"remediation_hint": "Synchronize firewall with 'nx9-wg firewall sync'",
|
|
"status": "warning"
|
|
}
|
|
],
|
|
"overall_status": "warning",
|
|
"subsystem": "firewall",
|
|
"timestamp": "2026-08-16T10:46:33.051174264"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "nat_setting",
|
|
"diagnostic_message": "NAT masquerade setting configured in database",
|
|
"expected_value": null,
|
|
"observed_value": "enabled",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "nat",
|
|
"timestamp": "2026-08-16T10:46:33.051223957"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "client_profile_mobile_recommendation",
|
|
"diagnostic_message": "Recommended MTU for mobile/cellular connections is 1280 to prevent carrier fragmentation",
|
|
"expected_value": "1280 bytes",
|
|
"observed_value": "1280 bytes (keepalive: 25s)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "client_profile_cgnat_recommendation",
|
|
"diagnostic_message": "Recommended MTU for CGNAT connections is 1360 to accommodate carrier-grade NAT encapsulation",
|
|
"expected_value": "1360 bytes",
|
|
"observed_value": "1360 bytes (keepalive: 25s)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "client_profile_wifi_recommendation",
|
|
"diagnostic_message": "Recommended MTU for standard Wi-Fi and wired connections is 1420 bytes",
|
|
"expected_value": "1420 bytes",
|
|
"observed_value": "1420 bytes (keepalive: 25s)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "mtu",
|
|
"timestamp": "2026-08-16T10:46:33.051301413"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "overall_drift",
|
|
"diagnostic_message": "Discrepancies detected between SQLite desired state and Linux kernel state",
|
|
"expected_value": "zero_drift",
|
|
"observed_value": "1 drift actions pending",
|
|
"remediation_hint": "Execute 'nx9-wg reconcile apply' to synchronize changes",
|
|
"status": "warning"
|
|
},
|
|
{
|
|
"check_name": "drift:forwarding:enable_forwarding",
|
|
"diagnostic_message": "IPv4 forwarding is disabled in kernel sysctl; enable for VPN routing",
|
|
"expected_value": null,
|
|
"observed_value": "ipv4_forward",
|
|
"remediation_hint": "Run 'nx9-wg reconcile apply'",
|
|
"status": "warning"
|
|
}
|
|
],
|
|
"overall_status": "warning",
|
|
"subsystem": "reconciliation",
|
|
"timestamp": "2026-08-16T10:46:33.051662923"
|
|
}
|
|
]
|
|
|
|
>>> Diagnostics all JSON
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json diagnostics all
|
|
[PASS] Diagnostics all JSON
|
|
[
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "hostname",
|
|
"diagnostic_message": "System hostname read successfully",
|
|
"expected_value": null,
|
|
"observed_value": "thakares-ideapad",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "os_architecture",
|
|
"diagnostic_message": "Supported target platform",
|
|
"expected_value": "linux-*",
|
|
"observed_value": "linux-x86_64",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "kernel_version",
|
|
"diagnostic_message": "Linux kernel release inspected",
|
|
"expected_value": null,
|
|
"observed_value": "7.1.8-arch1-3",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "memory_status",
|
|
"diagnostic_message": "System memory available",
|
|
"expected_value": null,
|
|
"observed_value": "MemTotal: 28526564 kB",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "sqlite_persistence",
|
|
"diagnostic_message": "SQLite WAL persistence layer is responsive",
|
|
"expected_value": "connected_and_healthy",
|
|
"observed_value": "connected_and_healthy",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "system",
|
|
"timestamp": "2026-08-16T10:46:33.056557217"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "linux_network_interfaces",
|
|
"diagnostic_message": "Network interfaces discovered in kernel",
|
|
"expected_value": null,
|
|
"observed_value": "2 interfaces (lo, wlp2s0)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "dns_nameservers",
|
|
"diagnostic_message": "System DNS nameservers configured",
|
|
"expected_value": null,
|
|
"observed_value": "127.0.0.1",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "network",
|
|
"timestamp": "2026-08-16T10:46:33.056588836"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "default_gateway_route",
|
|
"diagnostic_message": "Default route to WAN/gateway is present",
|
|
"expected_value": "default_gateway_present",
|
|
"observed_value": "default_gateway_present",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "wan",
|
|
"timestamp": "2026-08-16T10:46:33.056605968"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "configured_interfaces",
|
|
"diagnostic_message": "No WireGuard interfaces configured yet",
|
|
"expected_value": null,
|
|
"observed_value": "0 interfaces",
|
|
"remediation_hint": "Create an interface using 'nx9-wg interface create'",
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "wireguard",
|
|
"timestamp": "2026-08-16T10:46:33.056658106"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "configured_routes",
|
|
"diagnostic_message": "Kernel routing rules configured in database",
|
|
"expected_value": null,
|
|
"observed_value": "0 total (0 active)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "routing",
|
|
"timestamp": "2026-08-16T10:46:33.056971756"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "ipv4_forwarding",
|
|
"diagnostic_message": "IPv4 packet forwarding is disabled in sysctl; VPN clients cannot route traffic",
|
|
"expected_value": "enabled",
|
|
"observed_value": "disabled",
|
|
"remediation_hint": "Enable IP forwarding with 'nx9-wg forwarding enable'",
|
|
"status": "warning"
|
|
}
|
|
],
|
|
"overall_status": "warning",
|
|
"subsystem": "forwarding",
|
|
"timestamp": "2026-08-16T10:46:33.056994549"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "firewall_rules_count",
|
|
"diagnostic_message": "Configured nftables packet filtering rules",
|
|
"expected_value": null,
|
|
"observed_value": "0 total (0 active)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "nftables_table_nx9_wg",
|
|
"diagnostic_message": "Dedicated table inet nx9_wg presence in kernel nftables",
|
|
"expected_value": "active",
|
|
"observed_value": "not_loaded",
|
|
"remediation_hint": "Synchronize firewall with 'nx9-wg firewall sync'",
|
|
"status": "warning"
|
|
}
|
|
],
|
|
"overall_status": "warning",
|
|
"subsystem": "firewall",
|
|
"timestamp": "2026-08-16T10:46:33.057044072"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "nat_setting",
|
|
"diagnostic_message": "NAT masquerade setting configured in database",
|
|
"expected_value": null,
|
|
"observed_value": "enabled",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "nat",
|
|
"timestamp": "2026-08-16T10:46:33.057081563"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "client_profile_mobile_recommendation",
|
|
"diagnostic_message": "Recommended MTU for mobile/cellular connections is 1280 to prevent carrier fragmentation",
|
|
"expected_value": "1280 bytes",
|
|
"observed_value": "1280 bytes (keepalive: 25s)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "client_profile_cgnat_recommendation",
|
|
"diagnostic_message": "Recommended MTU for CGNAT connections is 1360 to accommodate carrier-grade NAT encapsulation",
|
|
"expected_value": "1360 bytes",
|
|
"observed_value": "1360 bytes (keepalive: 25s)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "client_profile_wifi_recommendation",
|
|
"diagnostic_message": "Recommended MTU for standard Wi-Fi and wired connections is 1420 bytes",
|
|
"expected_value": "1420 bytes",
|
|
"observed_value": "1420 bytes (keepalive: 25s)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "mtu",
|
|
"timestamp": "2026-08-16T10:46:33.057185478"
|
|
},
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "overall_drift",
|
|
"diagnostic_message": "Discrepancies detected between SQLite desired state and Linux kernel state",
|
|
"expected_value": "zero_drift",
|
|
"observed_value": "1 drift actions pending",
|
|
"remediation_hint": "Execute 'nx9-wg reconcile apply' to synchronize changes",
|
|
"status": "warning"
|
|
},
|
|
{
|
|
"check_name": "drift:forwarding:enable_forwarding",
|
|
"diagnostic_message": "IPv4 forwarding is disabled in kernel sysctl; enable for VPN routing",
|
|
"expected_value": null,
|
|
"observed_value": "ipv4_forward",
|
|
"remediation_hint": "Run 'nx9-wg reconcile apply'",
|
|
"status": "warning"
|
|
}
|
|
],
|
|
"overall_status": "warning",
|
|
"subsystem": "reconciliation",
|
|
"timestamp": "2026-08-16T10:46:33.057552368"
|
|
}
|
|
]
|
|
|
|
>>> Diagnostics: system
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db diagnostics system
|
|
[PASS] Diagnostics: system
|
|
[
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "hostname",
|
|
"diagnostic_message": "System hostname read successfully",
|
|
"expected_value": null,
|
|
"observed_value": "thakares-ideapad",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "os_architecture",
|
|
"diagnostic_message": "Supported target platform",
|
|
"expected_value": "linux-*",
|
|
"observed_value": "linux-x86_64",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "kernel_version",
|
|
"diagnostic_message": "Linux kernel release inspected",
|
|
"expected_value": null,
|
|
"observed_value": "7.1.8-arch1-3",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "memory_status",
|
|
"diagnostic_message": "System memory available",
|
|
"expected_value": null,
|
|
"observed_value": "MemTotal: 28526564 kB",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "sqlite_persistence",
|
|
"diagnostic_message": "SQLite WAL persistence layer is responsive",
|
|
"expected_value": "connected_and_healthy",
|
|
"observed_value": "connected_and_healthy",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "system",
|
|
"timestamp": "2026-08-16T10:46:33.063582958"
|
|
}
|
|
]
|
|
|
|
>>> Diagnostics: network
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db diagnostics network
|
|
[PASS] Diagnostics: network
|
|
[
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "linux_network_interfaces",
|
|
"diagnostic_message": "Network interfaces discovered in kernel",
|
|
"expected_value": null,
|
|
"observed_value": "2 interfaces (lo, wlp2s0)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "dns_nameservers",
|
|
"diagnostic_message": "System DNS nameservers configured",
|
|
"expected_value": null,
|
|
"observed_value": "127.0.0.1",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "network",
|
|
"timestamp": "2026-08-16T10:46:33.068654886"
|
|
}
|
|
]
|
|
|
|
>>> Diagnostics: wan
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db diagnostics wan
|
|
[PASS] Diagnostics: wan
|
|
[
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "default_gateway_route",
|
|
"diagnostic_message": "Default route to WAN/gateway is present",
|
|
"expected_value": "default_gateway_present",
|
|
"observed_value": "default_gateway_present",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "wan",
|
|
"timestamp": "2026-08-16T10:46:33.073128679"
|
|
}
|
|
]
|
|
|
|
>>> Diagnostics: wireguard
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db diagnostics wireguard
|
|
[PASS] Diagnostics: wireguard
|
|
[
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "configured_interfaces",
|
|
"diagnostic_message": "No WireGuard interfaces configured yet",
|
|
"expected_value": null,
|
|
"observed_value": "0 interfaces",
|
|
"remediation_hint": "Create an interface using 'nx9-wg interface create'",
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "wireguard",
|
|
"timestamp": "2026-08-16T10:46:33.077978869"
|
|
}
|
|
]
|
|
|
|
>>> Diagnostics: routing
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db diagnostics routing
|
|
[PASS] Diagnostics: routing
|
|
[
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "configured_routes",
|
|
"diagnostic_message": "Kernel routing rules configured in database",
|
|
"expected_value": null,
|
|
"observed_value": "0 total (0 active)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "routing",
|
|
"timestamp": "2026-08-16T10:46:33.082776662"
|
|
}
|
|
]
|
|
|
|
>>> Diagnostics: forwarding
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db diagnostics forwarding
|
|
[PASS] Diagnostics: forwarding
|
|
[
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "ipv4_forwarding",
|
|
"diagnostic_message": "IPv4 packet forwarding is disabled in sysctl; VPN clients cannot route traffic",
|
|
"expected_value": "enabled",
|
|
"observed_value": "disabled",
|
|
"remediation_hint": "Enable IP forwarding with 'nx9-wg forwarding enable'",
|
|
"status": "warning"
|
|
}
|
|
],
|
|
"overall_status": "warning",
|
|
"subsystem": "forwarding",
|
|
"timestamp": "2026-08-16T10:46:33.087615541"
|
|
}
|
|
]
|
|
|
|
>>> Diagnostics: firewall
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db diagnostics firewall
|
|
[PASS] Diagnostics: firewall
|
|
[
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "firewall_rules_count",
|
|
"diagnostic_message": "Configured nftables packet filtering rules",
|
|
"expected_value": null,
|
|
"observed_value": "0 total (0 active)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "nftables_table_nx9_wg",
|
|
"diagnostic_message": "Dedicated table inet nx9_wg presence in kernel nftables",
|
|
"expected_value": "active",
|
|
"observed_value": "not_loaded",
|
|
"remediation_hint": "Synchronize firewall with 'nx9-wg firewall sync'",
|
|
"status": "warning"
|
|
}
|
|
],
|
|
"overall_status": "warning",
|
|
"subsystem": "firewall",
|
|
"timestamp": "2026-08-16T10:46:33.092628117"
|
|
}
|
|
]
|
|
|
|
>>> Diagnostics: nat
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db diagnostics nat
|
|
[PASS] Diagnostics: nat
|
|
[
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "nat_setting",
|
|
"diagnostic_message": "NAT masquerade setting configured in database",
|
|
"expected_value": null,
|
|
"observed_value": "enabled",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "nat",
|
|
"timestamp": "2026-08-16T10:46:33.098748636"
|
|
}
|
|
]
|
|
|
|
>>> Diagnostics: mtu
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db diagnostics mtu
|
|
[PASS] Diagnostics: mtu
|
|
[
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "client_profile_mobile_recommendation",
|
|
"diagnostic_message": "Recommended MTU for mobile/cellular connections is 1280 to prevent carrier fragmentation",
|
|
"expected_value": "1280 bytes",
|
|
"observed_value": "1280 bytes (keepalive: 25s)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "client_profile_cgnat_recommendation",
|
|
"diagnostic_message": "Recommended MTU for CGNAT connections is 1360 to accommodate carrier-grade NAT encapsulation",
|
|
"expected_value": "1360 bytes",
|
|
"observed_value": "1360 bytes (keepalive: 25s)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
},
|
|
{
|
|
"check_name": "client_profile_wifi_recommendation",
|
|
"diagnostic_message": "Recommended MTU for standard Wi-Fi and wired connections is 1420 bytes",
|
|
"expected_value": "1420 bytes",
|
|
"observed_value": "1420 bytes (keepalive: 25s)",
|
|
"remediation_hint": null,
|
|
"status": "pass"
|
|
}
|
|
],
|
|
"overall_status": "pass",
|
|
"subsystem": "mtu",
|
|
"timestamp": "2026-08-16T10:46:33.104585472"
|
|
}
|
|
]
|
|
|
|
>>> Diagnostics: reconciliation
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db diagnostics reconciliation
|
|
[PASS] Diagnostics: reconciliation
|
|
[
|
|
{
|
|
"checks": [
|
|
{
|
|
"check_name": "overall_drift",
|
|
"diagnostic_message": "Discrepancies detected between SQLite desired state and Linux kernel state",
|
|
"expected_value": "zero_drift",
|
|
"observed_value": "1 drift actions pending",
|
|
"remediation_hint": "Execute 'nx9-wg reconcile apply' to synchronize changes",
|
|
"status": "warning"
|
|
},
|
|
{
|
|
"check_name": "drift:forwarding:enable_forwarding",
|
|
"diagnostic_message": "IPv4 forwarding is disabled in kernel sysctl; enable for VPN routing",
|
|
"expected_value": null,
|
|
"observed_value": "ipv4_forward",
|
|
"remediation_hint": "Run 'nx9-wg reconcile apply'",
|
|
"status": "warning"
|
|
}
|
|
],
|
|
"overall_status": "warning",
|
|
"subsystem": "reconciliation",
|
|
"timestamp": "2026-08-16T10:46:33.109960921"
|
|
}
|
|
]
|
|
[SKIP] Diagnostics: peer — requires LIVE=1 and peer context
|
|
|
|
============================================================================
|
|
21 — Output Format Matrix
|
|
============================================================================
|
|
|
|
>>> Network list — table
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format table network list
|
|
[PASS] Network list — table
|
|
(No items found)
|
|
|
|
>>> Profile list — table
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format table profile list
|
|
[PASS] Profile list — table
|
|
[
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Android cellular client profile with 1280 MTU and 25s keepalive",
|
|
"device": "android",
|
|
"dns": null,
|
|
"id": "android-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Android Mobile",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "other",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Carrier-grade NAT environment profile with 1360 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-cgnat",
|
|
"is_builtin": true,
|
|
"mtu": 1360,
|
|
"name": "Default CGNAT",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Standard mobile carrier profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Default Mobile",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "web",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Standard Web client profile with 1420 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-web",
|
|
"is_builtin": true,
|
|
"mtu": 1420,
|
|
"name": "Default Web",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "wifi",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Standard Wi-Fi wireless profile with 1420 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-wifi",
|
|
"is_builtin": true,
|
|
"mtu": 1420,
|
|
"name": "Default Wi-Fi",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "wired",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "High-throughput wired Ethernet profile with 1420 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-wired",
|
|
"is_builtin": true,
|
|
"mtu": 1420,
|
|
"name": "Default Wired",
|
|
"nat_type": "direct",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Reliance Jio 4G/5G mobile profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "jio-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Jio Mobile",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "jio",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "other",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Starlink satellite CGNAT profile with 1360 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "starlink-cgnat",
|
|
"is_builtin": true,
|
|
"mtu": 1360,
|
|
"name": "Starlink CGNAT",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "starlink",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "T-Mobile US IPv6/CGNAT mobile profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "tmobile-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "T-Mobile Mobile",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "tmobile",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Verizon Wireless mobile profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "verizon-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Verizon Mobile",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "verizon",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Apple iOS cellular profile with 1280 MTU and 25s keepalive",
|
|
"device": "ios",
|
|
"dns": null,
|
|
"id": "ios-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "iOS Mobile",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
}
|
|
]
|
|
|
|
>>> System info — table
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format table system info
|
|
[PASS] System info — table
|
|
arch : x86_64
|
|
config_file : /etc/nx9-wg/config.toml
|
|
data_dir : /tmp/nx9-wg-cli-test.u7uMLB/data
|
|
database_path : /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db
|
|
log_level : info
|
|
os : linux
|
|
reconciliation_interval_secs: 60
|
|
session_expiry_hours : 24
|
|
version : 0.1.0
|
|
|
|
>>> System health — table
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format table system health
|
|
[PASS] System health — table
|
|
database : connected
|
|
status : healthy
|
|
timestamp : 2026-08-16T10:46:33.133881082+00:00
|
|
|
|
>>> Audit list — table
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format table audit list
|
|
[PASS] Audit list — table
|
|
[
|
|
{
|
|
"actor": "admin",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"event_type": "admin_initialized",
|
|
"id": 1,
|
|
"ip_address": null,
|
|
"message": "Administrator initialized via secure random generation",
|
|
"metadata": null,
|
|
"resource_id": "1",
|
|
"resource_type": "admin"
|
|
}
|
|
]
|
|
|
|
>>> Network list — json
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json network list
|
|
[PASS] Network list — json
|
|
[]
|
|
|
|
>>> Profile list — json
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json profile list
|
|
[PASS] Profile list — json
|
|
[
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Android cellular client profile with 1280 MTU and 25s keepalive",
|
|
"device": "android",
|
|
"dns": null,
|
|
"id": "android-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Android Mobile",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "other",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Carrier-grade NAT environment profile with 1360 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-cgnat",
|
|
"is_builtin": true,
|
|
"mtu": 1360,
|
|
"name": "Default CGNAT",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Standard mobile carrier profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Default Mobile",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "web",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Standard Web client profile with 1420 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-web",
|
|
"is_builtin": true,
|
|
"mtu": 1420,
|
|
"name": "Default Web",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "wifi",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Standard Wi-Fi wireless profile with 1420 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-wifi",
|
|
"is_builtin": true,
|
|
"mtu": 1420,
|
|
"name": "Default Wi-Fi",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "wired",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "High-throughput wired Ethernet profile with 1420 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "default-wired",
|
|
"is_builtin": true,
|
|
"mtu": 1420,
|
|
"name": "Default Wired",
|
|
"nat_type": "direct",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Reliance Jio 4G/5G mobile profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "jio-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Jio Mobile",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "jio",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "other",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Starlink satellite CGNAT profile with 1360 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "starlink-cgnat",
|
|
"is_builtin": true,
|
|
"mtu": 1360,
|
|
"name": "Starlink CGNAT",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "starlink",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "T-Mobile US IPv6/CGNAT mobile profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "tmobile-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "T-Mobile Mobile",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "tmobile",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Verizon Wireless mobile profile with 1280 MTU and 25s keepalive",
|
|
"device": null,
|
|
"dns": null,
|
|
"id": "verizon-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "Verizon Mobile",
|
|
"nat_type": "cgnat",
|
|
"persistent_keepalive": 25,
|
|
"provider": "verizon",
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
},
|
|
{
|
|
"connection_type": "mobile",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"description": "Apple iOS cellular profile with 1280 MTU and 25s keepalive",
|
|
"device": "ios",
|
|
"dns": null,
|
|
"id": "ios-mobile",
|
|
"is_builtin": true,
|
|
"mtu": 1280,
|
|
"name": "iOS Mobile",
|
|
"nat_type": "unknown",
|
|
"persistent_keepalive": 25,
|
|
"provider": null,
|
|
"updated_at": "2026-08-16T10:46:32"
|
|
}
|
|
]
|
|
|
|
>>> System info — json
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json system info
|
|
[PASS] System info — json
|
|
{
|
|
"arch": "x86_64",
|
|
"config_file": "/etc/nx9-wg/config.toml",
|
|
"data_dir": "/tmp/nx9-wg-cli-test.u7uMLB/data",
|
|
"database_path": "/tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db",
|
|
"log_level": "info",
|
|
"os": "linux",
|
|
"reconciliation_interval_secs": 60,
|
|
"session_expiry_hours": 24,
|
|
"version": "0.1.0"
|
|
}
|
|
|
|
>>> System health — json
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json system health
|
|
[PASS] System health — json
|
|
{
|
|
"database": "connected",
|
|
"status": "healthy",
|
|
"timestamp": "2026-08-16T10:46:33.161200976+00:00"
|
|
}
|
|
|
|
>>> Audit list — json
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format json audit list
|
|
[PASS] Audit list — json
|
|
[
|
|
{
|
|
"actor": "admin",
|
|
"created_at": "2026-08-16T10:46:32",
|
|
"event_type": "admin_initialized",
|
|
"id": 1,
|
|
"ip_address": null,
|
|
"message": "Administrator initialized via secure random generation",
|
|
"metadata": null,
|
|
"resource_id": "1",
|
|
"resource_type": "admin"
|
|
}
|
|
]
|
|
|
|
>>> Network list — yaml
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format yaml network list
|
|
[PASS] Network list — yaml
|
|
|
|
>>> Profile list — yaml
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format yaml profile list
|
|
[PASS] Profile list — yaml
|
|
-
|
|
connection_type: "mobile"
|
|
created_at: "2026-08-16T10:46:32"
|
|
description: "Android cellular client profile with 1280 MTU and 25s keepalive"
|
|
device: "android"
|
|
dns: null
|
|
id: "android-mobile"
|
|
is_builtin: true
|
|
mtu: 1280
|
|
name: "Android Mobile"
|
|
nat_type: "unknown"
|
|
persistent_keepalive: 25
|
|
provider: null
|
|
updated_at: "2026-08-16T10:46:32"
|
|
-
|
|
connection_type: "other"
|
|
created_at: "2026-08-16T10:46:32"
|
|
description: "Carrier-grade NAT environment profile with 1360 MTU and 25s keepalive"
|
|
device: null
|
|
dns: null
|
|
id: "default-cgnat"
|
|
is_builtin: true
|
|
mtu: 1360
|
|
name: "Default CGNAT"
|
|
nat_type: "cgnat"
|
|
persistent_keepalive: 25
|
|
provider: null
|
|
updated_at: "2026-08-16T10:46:32"
|
|
-
|
|
connection_type: "mobile"
|
|
created_at: "2026-08-16T10:46:32"
|
|
description: "Standard mobile carrier profile with 1280 MTU and 25s keepalive"
|
|
device: null
|
|
dns: null
|
|
id: "default-mobile"
|
|
is_builtin: true
|
|
mtu: 1280
|
|
name: "Default Mobile"
|
|
nat_type: "unknown"
|
|
persistent_keepalive: 25
|
|
provider: null
|
|
updated_at: "2026-08-16T10:46:32"
|
|
-
|
|
connection_type: "web"
|
|
created_at: "2026-08-16T10:46:32"
|
|
description: "Standard Web client profile with 1420 MTU and 25s keepalive"
|
|
device: null
|
|
dns: null
|
|
id: "default-web"
|
|
is_builtin: true
|
|
mtu: 1420
|
|
name: "Default Web"
|
|
nat_type: "unknown"
|
|
persistent_keepalive: 25
|
|
provider: null
|
|
updated_at: "2026-08-16T10:46:32"
|
|
-
|
|
connection_type: "wifi"
|
|
created_at: "2026-08-16T10:46:32"
|
|
description: "Standard Wi-Fi wireless profile with 1420 MTU and 25s keepalive"
|
|
device: null
|
|
dns: null
|
|
id: "default-wifi"
|
|
is_builtin: true
|
|
mtu: 1420
|
|
name: "Default Wi-Fi"
|
|
nat_type: "unknown"
|
|
persistent_keepalive: 25
|
|
provider: null
|
|
updated_at: "2026-08-16T10:46:32"
|
|
-
|
|
connection_type: "wired"
|
|
created_at: "2026-08-16T10:46:32"
|
|
description: "High-throughput wired Ethernet profile with 1420 MTU and 25s keepalive"
|
|
device: null
|
|
dns: null
|
|
id: "default-wired"
|
|
is_builtin: true
|
|
mtu: 1420
|
|
name: "Default Wired"
|
|
nat_type: "direct"
|
|
persistent_keepalive: 25
|
|
provider: null
|
|
updated_at: "2026-08-16T10:46:32"
|
|
-
|
|
connection_type: "mobile"
|
|
created_at: "2026-08-16T10:46:32"
|
|
description: "Reliance Jio 4G/5G mobile profile with 1280 MTU and 25s keepalive"
|
|
device: null
|
|
dns: null
|
|
id: "jio-mobile"
|
|
is_builtin: true
|
|
mtu: 1280
|
|
name: "Jio Mobile"
|
|
nat_type: "cgnat"
|
|
persistent_keepalive: 25
|
|
provider: "jio"
|
|
updated_at: "2026-08-16T10:46:32"
|
|
-
|
|
connection_type: "other"
|
|
created_at: "2026-08-16T10:46:32"
|
|
description: "Starlink satellite CGNAT profile with 1360 MTU and 25s keepalive"
|
|
device: null
|
|
dns: null
|
|
id: "starlink-cgnat"
|
|
is_builtin: true
|
|
mtu: 1360
|
|
name: "Starlink CGNAT"
|
|
nat_type: "cgnat"
|
|
persistent_keepalive: 25
|
|
provider: "starlink"
|
|
updated_at: "2026-08-16T10:46:32"
|
|
-
|
|
connection_type: "mobile"
|
|
created_at: "2026-08-16T10:46:32"
|
|
description: "T-Mobile US IPv6/CGNAT mobile profile with 1280 MTU and 25s keepalive"
|
|
device: null
|
|
dns: null
|
|
id: "tmobile-mobile"
|
|
is_builtin: true
|
|
mtu: 1280
|
|
name: "T-Mobile Mobile"
|
|
nat_type: "cgnat"
|
|
persistent_keepalive: 25
|
|
provider: "tmobile"
|
|
updated_at: "2026-08-16T10:46:32"
|
|
-
|
|
connection_type: "mobile"
|
|
created_at: "2026-08-16T10:46:32"
|
|
description: "Verizon Wireless mobile profile with 1280 MTU and 25s keepalive"
|
|
device: null
|
|
dns: null
|
|
id: "verizon-mobile"
|
|
is_builtin: true
|
|
mtu: 1280
|
|
name: "Verizon Mobile"
|
|
nat_type: "cgnat"
|
|
persistent_keepalive: 25
|
|
provider: "verizon"
|
|
updated_at: "2026-08-16T10:46:32"
|
|
-
|
|
connection_type: "mobile"
|
|
created_at: "2026-08-16T10:46:32"
|
|
description: "Apple iOS cellular profile with 1280 MTU and 25s keepalive"
|
|
device: "ios"
|
|
dns: null
|
|
id: "ios-mobile"
|
|
is_builtin: true
|
|
mtu: 1280
|
|
name: "iOS Mobile"
|
|
nat_type: "unknown"
|
|
persistent_keepalive: 25
|
|
provider: null
|
|
updated_at: "2026-08-16T10:46:32"
|
|
|
|
>>> System info — yaml
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format yaml system info
|
|
[PASS] System info — yaml
|
|
arch: "x86_64"
|
|
config_file: "/etc/nx9-wg/config.toml"
|
|
data_dir: "/tmp/nx9-wg-cli-test.u7uMLB/data"
|
|
database_path: "/tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db"
|
|
log_level: "info"
|
|
os: "linux"
|
|
reconciliation_interval_secs: 60
|
|
session_expiry_hours: 24
|
|
version: "0.1.0"
|
|
|
|
>>> System health — yaml
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format yaml system health
|
|
[PASS] System health — yaml
|
|
database: "connected"
|
|
status: "healthy"
|
|
timestamp: "2026-08-16T10:46:33.188558932+00:00"
|
|
|
|
>>> Audit list — yaml
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format yaml audit list
|
|
[PASS] Audit list — yaml
|
|
-
|
|
actor: "admin"
|
|
created_at: "2026-08-16T10:46:32"
|
|
event_type: "admin_initialized"
|
|
id: 1
|
|
ip_address: null
|
|
message: "Administrator initialized via secure random generation"
|
|
metadata: null
|
|
resource_id: "1"
|
|
resource_type: "admin"
|
|
|
|
>>> Network list — csv
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format csv network list
|
|
[PASS] Network list — csv
|
|
|
|
>>> Profile list — csv
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format csv profile list
|
|
[PASS] Profile list — csv
|
|
connection_type,created_at,description,device,dns,id,is_builtin,mtu,name,nat_type,persistent_keepalive,provider,updated_at
|
|
mobile,2026-08-16T10:46:32,Android cellular client profile with 1280 MTU and 25s keepalive,android,null,android-mobile,true,1280,Android Mobile,unknown,25,null,2026-08-16T10:46:32
|
|
other,2026-08-16T10:46:32,Carrier-grade NAT environment profile with 1360 MTU and 25s keepalive,null,null,default-cgnat,true,1360,Default CGNAT,cgnat,25,null,2026-08-16T10:46:32
|
|
mobile,2026-08-16T10:46:32,Standard mobile carrier profile with 1280 MTU and 25s keepalive,null,null,default-mobile,true,1280,Default Mobile,unknown,25,null,2026-08-16T10:46:32
|
|
web,2026-08-16T10:46:32,Standard Web client profile with 1420 MTU and 25s keepalive,null,null,default-web,true,1420,Default Web,unknown,25,null,2026-08-16T10:46:32
|
|
wifi,2026-08-16T10:46:32,Standard Wi-Fi wireless profile with 1420 MTU and 25s keepalive,null,null,default-wifi,true,1420,Default Wi-Fi,unknown,25,null,2026-08-16T10:46:32
|
|
wired,2026-08-16T10:46:32,High-throughput wired Ethernet profile with 1420 MTU and 25s keepalive,null,null,default-wired,true,1420,Default Wired,direct,25,null,2026-08-16T10:46:32
|
|
mobile,2026-08-16T10:46:32,Reliance Jio 4G/5G mobile profile with 1280 MTU and 25s keepalive,null,null,jio-mobile,true,1280,Jio Mobile,cgnat,25,jio,2026-08-16T10:46:32
|
|
other,2026-08-16T10:46:32,Starlink satellite CGNAT profile with 1360 MTU and 25s keepalive,null,null,starlink-cgnat,true,1360,Starlink CGNAT,cgnat,25,starlink,2026-08-16T10:46:32
|
|
mobile,2026-08-16T10:46:32,T-Mobile US IPv6/CGNAT mobile profile with 1280 MTU and 25s keepalive,null,null,tmobile-mobile,true,1280,T-Mobile Mobile,cgnat,25,tmobile,2026-08-16T10:46:32
|
|
mobile,2026-08-16T10:46:32,Verizon Wireless mobile profile with 1280 MTU and 25s keepalive,null,null,verizon-mobile,true,1280,Verizon Mobile,cgnat,25,verizon,2026-08-16T10:46:32
|
|
mobile,2026-08-16T10:46:32,Apple iOS cellular profile with 1280 MTU and 25s keepalive,ios,null,ios-mobile,true,1280,iOS Mobile,unknown,25,null,2026-08-16T10:46:32
|
|
|
|
>>> System info — csv
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format csv system info
|
|
[PASS] System info — csv
|
|
arch,config_file,data_dir,database_path,log_level,os,reconciliation_interval_secs,session_expiry_hours,version
|
|
x86_64,/etc/nx9-wg/config.toml,/tmp/nx9-wg-cli-test.u7uMLB/data,/tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db,info,linux,60,24,0.1.0
|
|
|
|
>>> System health — csv
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format csv system health
|
|
[PASS] System health — csv
|
|
database,status,timestamp
|
|
connected,healthy,2026-08-16T10:46:33.216139326+00:00
|
|
|
|
>>> Audit list — csv
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --format csv audit list
|
|
[PASS] Audit list — csv
|
|
actor,created_at,event_type,id,ip_address,message,metadata,resource_id,resource_type
|
|
admin,2026-08-16T10:46:32,admin_initialized,1,null,Administrator initialized via secure random generation,null,1,admin
|
|
|
|
============================================================================
|
|
22 — Global CLI Options
|
|
============================================================================
|
|
|
|
>>> Quiet mode
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --quiet system health
|
|
[PASS] Quiet mode
|
|
database : connected
|
|
status : healthy
|
|
timestamp : 2026-08-16T10:46:33.227314621+00:00
|
|
|
|
>>> JSON shortcut
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --json system health
|
|
[PASS] JSON shortcut
|
|
{
|
|
"database": "connected",
|
|
"status": "healthy",
|
|
"timestamp": "2026-08-16T10:46:33.233149022+00:00"
|
|
}
|
|
|
|
>>> Verbose mode
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data --database /tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db --verbose system health
|
|
[PASS] Verbose mode
|
|
database : connected
|
|
status : healthy
|
|
timestamp : 2026-08-16T10:46:33.238155166+00:00
|
|
|
|
============================================================================
|
|
23 — NX9_WG_* Environment Namespace
|
|
============================================================================
|
|
[PASS] NX9_WG_LOG_LEVEL accepted
|
|
|
|
============================================================================
|
|
24 — Explicit Database Path Resolution
|
|
============================================================================
|
|
|
|
>>> Explicit nested database path
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --database /tmp/nx9-wg-cli-test.u7uMLB/explicit/nested/nx9-wg.db system health
|
|
[FAIL] Explicit nested database path (exit=1)
|
|
--- stderr ---
|
|
Error: Sqlx(Database(SqliteError { code: 14, message: "unable to open database file" }))
|
|
[FAIL] Explicit database file created
|
|
|
|
============================================================================
|
|
25 — Data Directory Resolution
|
|
============================================================================
|
|
|
|
>>> Database created from data-dir
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg --data-dir /tmp/nx9-wg-cli-test.u7uMLB/data-only system health
|
|
[PASS] Database created from data-dir
|
|
database : connected
|
|
status : healthy
|
|
timestamp : 2026-08-16T10:46:33.256892811+00:00
|
|
[PASS] Database exists below data-dir: /tmp/nx9-wg-cli-test.u7uMLB/data-only/nx9-wg.db
|
|
|
|
============================================================================
|
|
26 — Source-Level Architecture Safety
|
|
============================================================================
|
|
[PASS] No external subprocess invocation in production Rust
|
|
[PASS] No forbidden technical-debt markers
|
|
[PASS] SQL isolated from application root
|
|
|
|
============================================================================
|
|
27 — Environment Variable Namespace Source Audit
|
|
============================================================================
|
|
[PASS] No suspicious environment namespace references
|
|
|
|
============================================================================
|
|
28 — FINAL VERIFICATION SUMMARY
|
|
============================================================================
|
|
|
|
Binary:
|
|
/mnt/Programs/nx9-wg/target/release/nx9-wg
|
|
|
|
Project:
|
|
/mnt/Programs/nx9-wg
|
|
|
|
Temporary test root:
|
|
/tmp/nx9-wg-cli-test.u7uMLB
|
|
|
|
Test database:
|
|
/tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db
|
|
|
|
LIVE mode:
|
|
0
|
|
|
|
------------------------------------------------------------------------
|
|
PASS : 199
|
|
FAIL : 4
|
|
SKIP : 7
|
|
TOTAL: 210
|
|
------------------------------------------------------------------------
|
|
|
|
RESULT: FAIL
|
|
|
|
One or more verification checks failed.
|
|
|
|
The temporary environment will be preserved for investigation.
|
|
|
|
|
|
============================================================================
|
|
nx9-wg CLI verification finished
|
|
============================================================================
|
|
|
|
RESULT: FAIL
|
|
|
|
PASS : 199
|
|
FAIL : 4
|
|
SKIP : 7
|
|
TOTAL: 210
|
|
|
|
Temporary test data PRESERVED for investigation:
|
|
/tmp/nx9-wg-cli-test.u7uMLB
|
|
|
|
Database:
|
|
/tmp/nx9-wg-cli-test.u7uMLB/data/nx9-wg.db
|
|
|
|
Password file:
|
|
/tmp/nx9-wg-cli-test.u7uMLB/admin-password
|
|
|
|
To inspect:
|
|
ls -la "/tmp/nx9-wg-cli-test.u7uMLB"
|
|
ls -la "/tmp/nx9-wg-cli-test.u7uMLB/data"
|
|
|
|
|