Files
start-os/core
Aiden McClelland f46cdc6ee5 fix: correct hairpin NAT rules and bind hairpin check to gateway interface
The POSTROUTING MASQUERADE rules in forward-port failed to handle two
hairpin scenarios:

1. Host-to-target hairpin (OUTPUT DNAT): when sip is a WAN IP (tunnel
   case), the old rule matched `-s sip` but the actual source of
   locally-originated packets is a local interface IP, not the WAN IP.
   Fix: use `-m addrtype --src-type LOCAL -m conntrack --ctorigdst sip`
   to match any local source while tying the rule to the specific sip.

2. Same-subnet self-hairpin (PREROUTING DNAT): when a WireGuard peer
   connects to itself via the tunnel's public IP, traffic is DNAT'd back
   to the peer. Without MASQUERADE the response takes a loopback shortcut,
   bypassing the tunnel server's conntrack and breaking NAT reversal.
   Fix: add `-s dip/dprefix -d dip` to masquerade same-subnet traffic,
   which also subsumes the old bridge_subnet rule.

Also bind the hairpin detection socket to the gateway interface and local
IP for consistency with the echoip client.
2026-03-30 11:52:53 -06:00
..
2025-12-22 13:39:38 -07:00
2025-12-31 11:30:57 -07:00
2025-11-07 10:12:05 +00:00
2025-12-22 13:39:38 -07:00

StartOS Backend

Structure

  • startos: This contains the core library for StartOS that supports building startbox.
  • helpers: This contains utility functions used across both startos and js-engine
  • models: This contains types that are shared across startos, js-engine, and helpers

Artifacts

The StartOS backend is packed into a single binary startbox that is symlinked under several different names for different behavior:

  • startd: This is the main daemon of StartOS
  • start-cli: This is a CLI tool that will allow you to issue commands to startd and control it similarly to the UI
  • start-sdk: This is a CLI tool that aids in building and packaging services you wish to deploy to StartOS

Documentation