Skip to content

HopOS v1.5.4 — hairpin

Choose a tag to compare

@xinix00 xinix00 released this 27 Jul 13:12

Hairpin NAT. Publish ports outward, let DNS pick the host — and when that host happens to be your own node, the switch takes the shortcut. A slot dialing the node IP on a published port is redirected internally: DNAT + masquerade in a single pass over the two existing tables (no new state), delivered ring-to-ring — not a byte leaves the NIC. Reply recognition is unambiguous: only a neighbour slot can carry the node IP as a destination (masquerade replies arrive via the uplink). Covered both ways by hairpin_test.

This retires the last-but-one deliberate KISS gap from day one; the remaining one (node IP from inside for unpublished ports) stays — node services live on 10.100.0.1.


Prebuilt, signed boot images — https://gethop.org/hopos/ for the 5-minute quickstart.

  • BOOTAA64.EFI — any UEFI arm64 box: copy to EFI/BOOT/ on a FAT USB stick, add hopos.cfg
  • hopos-rpi5.zip — Raspberry Pi 5: unzip onto the SD bootfs
  • hopos-rpi4.zip — Raspberry Pi 4: unzip onto the SD bootfs
  • *-headless — the same images built with GUI=0: not a disabled GUI but zero GUI code linked. For UEFI, rename BOOTAA64-headless.EFI to BOOTAA64.EFI on the stick.

Verify: ssh-keygen -Y verify -f allowed_signers -I hello@gethop.org -n gethop-release -s SHA256SUMS.sig < SHA256SUMS && shasum -a 256 -c SHA256SUMS