Host Network Visibility
Host Network Visibility uses the serviceradar-netprobe sidecar to observe
traffic from a ServiceRadar agent host and emit passive device fingerprint
evidence. Phase 1 is limited to passive fingerprinting. DPI, process
attribution, external flow attribution, and remote packet capture are reserved
for later phases.
Current Scope
Phase 1 installs the sidecar binary at:
/usr/local/lib/serviceradar/bin/serviceradar-netprobe
Debian and RPM agent packages set cap_net_raw on that binary during
post-install. Kubernetes deployments keep agent.netprobe.enabled defaulted to
false so the sidecar can be rolled out deliberately after lab validation.
Until your release has completed the sidecar startup validation, treat
netprobe as a lab-only capability. Visibility profiles can be created and
compiled, but production deployments should leave the Helm toggle disabled.
Requirements
- Linux agent hosts only.
- A ServiceRadar agent package or image that includes
serviceradar-netprobe. cap_net_rawon the sidecar binary, orNET_RAWin the agent pod security context for Kubernetes.- Explicit capture interface allowlist. The sidecar refuses
any, wildcard names, and interfaces outside the allowlist. - RBAC permission for visibility profiles:
visibility_profiles:read,visibility_profiles:write, andvisibility_profiles:deleteas appropriate.
Enabling Profiles
- Open Settings > Networks > Discovery > Visibility Profiles.
- Create a profile with a descriptive name and an SRQL target query.
- Set the profile priority. If multiple profiles match a device, the highest priority profile wins.
- Enable the Phase 1 fingerprint protocols you want. TCP and HTTP evidence are the initial practical targets; TLS JA4/JA4S extraction is still pending.
- Set
sample_interval_msto control how often a matching IP/protocol pair may emit a new sample. - Save the profile and confirm the target count is expected.
Example SRQL targets:
in:devices tags.role:database
in:devices hostname:edge-*
in:devices type:Server
Capture Interface Allowlist
Use concrete interface names, such as eth0, ens192, or bond0. Do not use:
any- wildcard values such as
eth* - interface names that do not exist on the agent host
On a Linux host, list interfaces with:
ip -o link show
For a local lab run, a minimal sidecar config looks like:
{
"enabled": true,
"capture_interfaces": ["eth0"]
}
Lab Smoke Test
Use this only on a controlled agent host where passive capture is approved.
sudo getcap /usr/local/lib/serviceradar/bin/serviceradar-netprobe
sudo mkdir -p /run/serviceradar/netprobe
sudo /usr/local/lib/serviceradar/bin/serviceradar-netprobe \
--socket /run/serviceradar/netprobe/ipc.sock \
--config /etc/serviceradar/sidecars/netprobe.json \
--log-format text
In another shell, verify the metrics endpoint:
curl -s http://127.0.0.1:9417/metrics
Useful metrics include:
netprobe_packets_processed_totalnetprobe_packets_dropped_totalnetprobe_events_emitted_total{stream="fingerprint"}netprobe_signature_failures_totalnetprobe_uptime_seconds
Troubleshooting
Sidecar missing or not executable
Check the binary and file capabilities:
ls -l /usr/local/lib/serviceradar/bin/serviceradar-netprobe
sudo getcap /usr/local/lib/serviceradar/bin/serviceradar-netprobe
If cap_net_raw is missing on a package-based install, rerun:
sudo setcap cap_net_raw=+ep /usr/local/lib/serviceradar/bin/serviceradar-netprobe
Interface denied
The sidecar rejects any, wildcard interfaces, and non-allowlisted names. Use
ip -o link show, update the capture allowlist to concrete interface names, and
restart the agent or sidecar.
No fingerprint events
Confirm:
- The visibility profile is enabled.
- The SRQL target count includes the device.
- The canonical device has an IP address.
- The capture interface sees traffic for that device IP.
- The selected protocol is implemented in the current phase.
Repeated restarts
The agent sidecar manager probes health every 5 seconds, restarts with
exponential backoff from 1 second up to 60 seconds, and opens the restart
circuit after 5 restarts in a minute. Check the Agent Detail page for the
netprobe state and last_error, then review agent logs for entries tagged
with sidecar=netprobe.
Privacy
Phase 1 does not perform active probing, TLS interception, or packet payload retention. It does not store full packets, HTTP URIs, DNS query names, or decrypted TLS contents.
Phase 1 may emit:
- Source IP bound to a canonical ServiceRadar device.
- TCP passive fingerprint signatures.
- Selected HTTP header fingerprints, limited to
Server,User-Agent, andAccept-Language. - Timing and profile metadata needed for provenance and rate limiting.
Later phases add DPI, process attribution, external flow attribution, and remote packet capture. Those phases must preserve the same privacy posture: no payload-by-default behavior, explicit profile scoping, and operator-visible audit/provenance for captured evidence.