Network pings and other utilities
NetSonar is a network diagnostics and monitoring tool for probing hosts and services with ICMP, TCP, UDP, TLS, DNS, NTP, HTTP, WebSocket, SSH, SMTP, IMAP, MQTT, STUN, and SIP. It provides protocol-aware latency checks, live single-service and multi-service response-time charts, network-interface inspection and configuration, and internet speed testing. Designed for administrators and developers needing lightweight, cross-platform network analysis.
winget install -e --id PTRTECH.NetSonarInvoke-RestMethod https://raw.githubusercontent.com/sn4k3/NetSonar/main/scripts/install-netsonar.ps1 | Invoke-Expression[ "$(command -v apt)" -a -z "$(command -v curl)" ] && sudo apt-get install -y curl
[ "$(command -v dnf)" -a -z "$(command -v curl)" ] && sudo dnf install -y curl
[ "$(command -v pacman)" -a -z "$(command -v curl)" ] && sudo pacman -S curl
[ "$(command -v zypper)" -a -z "$(command -v curl)" ] && sudo zypper install -y curl
bash -c "$(curl -fsSL https://raw.githubusercontent.com/sn4k3/NetSonar/main/scripts/install-netsonar.sh)"bash -c "$(curl -fsSL https://raw.githubusercontent.com/sn4k3/NetSonar/main/scripts/install-netsonar.sh)"# Replace x.x.x by the version you want to install
bash -c "$(curl -fsSL https://raw.githubusercontent.com/sn4k3/NetSonar/main/scripts/install-netsonar.sh)" -- x.x.xNetSonar follows the system language by default and falls back to English when the system language is not supported. The following languages are available:
| Language | Native name | Culture |
|---|---|---|
| German | Deutsch | de |
| English | English | en |
| Spanish | español | es |
| French | français | fr |
| Italian | italiano | it |
| Japanese | 日本語 | ja |
| Korean | 한국어 | ko |
| Dutch | Nederlands (Nederland) | nl-NL |
| Polish | polski | pl |
| Portuguese (Brazil) | português (Brasil) | pt-BR |
| Portuguese (Portugal) | português (Portugal) | pt-PT |
| Russian | русский | ru |
| Turkish | Türkçe | tr |
| Chinese (Simplified) | 中文(简体) | zh-Hans |
Choose the highest-level protocol that represents the service you need to monitor. An ICMP reply only confirms that a host answers echo requests, while a protocol-aware probe also confirms that the expected application is responding correctly.
After selecting a protocol in the Add Ping Services dialog, enter its target in the format shown below.
| Protocol | Target and default | What NetSonar checks | Choose it when |
|---|---|---|---|
| ICMP | router.local or 192.168.1.1; no port |
Sends an ICMP echo request and measures its reply. Payload size, TTL, and the Don't Fragment option are configurable where the operating system supports them. | You need basic host reachability or path latency. A failed probe does not necessarily mean the host is offline because firewalls commonly block ICMP. |
| TCP | host:port; port required |
Opens a TCP connection and reports success when the connection is established. An optional payload can be sent, but no application response is validated. | You only need to know whether a TCP port accepts connections, or NetSonar has no protocol-specific probe for the service. |
| UDP | host:port; port required |
Sends the configured payload and waits for a reply from the remote endpoint. Sending alone is not considered success. | The service uses a request/reply UDP protocol. Do not use it for services that normally send no response to an arbitrary payload. |
| TLS | host or host:port; default 443/TCP |
Performs an SNI-aware TLS handshake using the operating system's certificate trust and hostname validation, then reports the negotiated TLS version. | You need to validate TLS independently of an application protocol, including certificate trust, hostname, and validity failures. |
| DNS | host or host:port; default 53/UDP |
Queries the server for the A record of example.com and validates the transaction ID, response flags and code, echoed question, and answer count. |
You need to confirm that a DNS resolver can answer a real DNS query, rather than only checking whether its host is reachable. |
| NTP | host or host:port; default 123/UDP |
Sends an NTP client request and validates the response mode, version, synchronization state, stratum, timestamps, and request correlation. | You need to confirm that a time server is synchronized and returning valid NTP responses. |
| HTTP | http://host/path or https://host/path; HTTP is assumed if the scheme is omitted |
Sends a GET request and completes after receiving the response headers without downloading the body. HTTP success status codes are treated as successful probes. | You need to validate a website, API route, reverse proxy, or TLS-enabled HTTPS endpoint. |
| WebSocket | ws://host/path or wss://host/path; defaults 80 and 443 |
Performs the WebSocket HTTP upgrade and requires the connection to reach the Open state. Paths, custom ports, and TLS through wss:// are supported. |
You need to validate a WebSocket endpoint rather than only its underlying HTTP or TCP listener. |
| SSH | host or host:port; default 22/TCP |
Sends a NetSonar SSH 2.0 identification, tolerates permitted server pre-banner lines, and requires a valid SSH-2.0- server identification. It does not authenticate or start key exchange. |
You need to confirm that an SSH 2.0 service is responding instead of only checking whether port 22 is open. |
| SMTP | host or host:port; default 25/TCP |
Connects and validates a complete single-line or multiline SMTP 220 greeting. It does not start TLS or authenticate. |
You need to confirm that a plain SMTP listener is ready. Custom ports such as 587 work when the server sends its greeting before STARTTLS. |
| IMAP | host or host:port; defaults 143/TCP, with implicit TLS on 993/TCP |
Requires an OK or PREAUTH greeting, sends a tagged CAPABILITY command, and validates both the capability data and successful tagged completion. Port 993 negotiates TLS with certificate and hostname validation before the IMAP exchange. It does not issue STARTTLS or authenticate. |
You need to validate a cleartext or implicit-TLS IMAP listener without accessing a mailbox. |
| MQTT | host or host:port; default 1883/TCP |
Sends an MQTT 3.1.1 CONNECT packet with a randomized client ID and clean session, then requires an accepted CONNACK response. It does not use TLS or credentials. | You need to validate an anonymous, plain-TCP MQTT broker. Brokers that require authentication correctly reject this probe. |
| STUN | host or host:port; default 3478/UDP |
Sends a Binding request and validates the response type, declared length, magic cookie, transactio |
No open issues yet, or sync has not completed.