icmp_custom

command module
v1.0.20260916-6a6f65b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 16, 2026 License: GPL-3.0 Imports: 16 Imported by: 0

README

icmp_custom

An encrypted v2 tunnel over ICMP Echo, delivered as a Go library and a CLI. Application records travel verbatim as ICMP Echo Request/Reply payloads, with authentication (PSK + forward-secret Noise_NK), reliable delivery (ARQ), adaptive MTU search, pacing and rate limiting built in.

  • Library API: see LIBRARY.md — injectable transports, ProtectFD (Android VpnService exemption), TargetDialer (DialContext-style forwarding), the logging interface with a global level knob, events and stats.
  • Protocol & architecture: the design document (DESIGN_ICMP.md) lives in the local docs/ directory and is not distributed with the repository.

Platforms

Platform Carrier Role Privilege
Linux SOCK_RAW ICMPv4+v6 (dual-stack) server + client CAP_NET_RAW
Android unprivileged ping socket (SOCK_DGRAM + IPPROTO_ICMP) client ping_group_range
Windows / macOS / others explicit refusal (ErrTransportUnsupported) — —

Build

go build -trimpath -o icmp_custom .        # local build
./scripts/build.sh v0.1.0                  # 12-target cross build + archives + checksums

CLI

icmp_custom server -config server.json
icmp_custom client -config client.json
icmp_custom gen-config    # generate keys and config templates
icmp_custom gen-icmp-rules

Tests & CI

go test ./...          # full suite (fake carrier, runs without root)
go test -race ./...
go test -bench . ./tunnel/

CI (.github/workflows/ci.yml): gofmt/vet → 3-OS test matrix (race + coverage) → benchmark smoke → cross builds (including android/arm64) → the Android emulator job runs the ping-socket carrier tests on a real Android kernel. Pushing a v* tag builds and publishes a release automatically (release.yml).

License

GPL-3.0

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package tunnel implements the icmp_custom v2 tunnel protocol: an authenticated, reliable, multiplexed channel carried over ICMP Echo Request/Reply.
Package tunnel implements the icmp_custom v2 tunnel protocol: an authenticated, reliable, multiplexed channel carried over ICMP Echo Request/Reply.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL