v4gwd

Host implementations of draft-vanmook-intarea-ipv6-resolved-gateway — IPv4 on IPv6-only segments via gateway 192.0.0.11, resolved from the IPv6 neighbor cache instead of ARP.

A stock host on a sentinel segment often already works (draft §5.3): it accepts the off-subnet /32 gateway and resolves it by ARP, which the router answers. The packages below add the draft's §4 guarantees — the host resolves 192.0.0.11 from Neighbor Discovery, never ARP, and follows the live IPv6 default router — which is what lets the gateway stop answering ARP.

Which one?

PlatformPackageWhen
Linuxv4gwd (.deb/.rpm) General-purpose. Any distro with systemd; pure Python user-space daemon.
Linuxsystemd-networkd Hosts already on networkd wanting the behaviour native and in-process, no extra daemon.
FreeBSDv4gwd FreeBSD 13.1+; uses the in-kernel RFC 5549 data plane.
macOSv4gwd-arp macOS (Apple Silicon). Static-neighbor realization.
Windowsv4gwd.ps1 Windows 10/11. PowerShell daemon; static-neighbor realization.

Linux ≥ 5.2 and FreeBSD carry IPv4-route-with-IPv6-next-hop (RFC 5549) in the kernel; macOS, Windows, and pre-5.2 Linux reach identical on-wire behaviour by pinning 192.0.0.11 to the router's link-layer address. The Linux daemon picks the right mode from the running kernel automatically.

Linux — v4gwd (.deb / .rpm)

Portable user-space daemon (Python + pyroute2). Installing enables and starts v4gwd.service; it manages every ethernet interface and stays inert until a DHCPv4 server hands out 192.0.0.11. Architecture-independent.

Debian / Ubuntu

wget https://remcovanmook.github.io/v4-with-v6-nh/v4gwd.deb
sudo apt install ./v4gwd.deb

Fedora / RHEL

wget https://remcovanmook.github.io/v4-with-v6-nh/v4gwd.rpm
sudo dnf install ./v4gwd.rpm

Files: v4gwd.deb · v4gwd.rpm · details

Linux — systemd-networkd (patched)

Native alternative for hosts already using networkd: DHCPv4 client and Neighbor Discovery in one process, enabled per-link with [DHCPv4] UseIPv6ResolvedGateway=yes — no separate daemon. These are the stock package rebuilt with the patch; a later system upgrade replaces them with the unpatched binary, so reinstall (or rebuild) afterwards.

Fedora 44 (aarch64 / x86_64)

curl -LO https://remcovanmook.github.io/v4-with-v6-nh/systemd-networkd-259.7-1.fc44.$(uname -m).rpm
sudo rpm -Uvh --force systemd-networkd-259.7-1.fc44.$(uname -m).rpm

Ubuntu 26.04 / Debian (arm64 / amd64)

curl -LO https://remcovanmook.github.io/v4-with-v6-nh/systemd_259.5-0ubuntu3_$(dpkg --print-architecture).deb
sudo dpkg -i systemd_259.5-0ubuntu3_$(dpkg --print-architecture).deb

Files: fc44.aarch64.rpm · fc44.x86_64.rpm · ubuntu3_arm64.deb · ubuntu3_amd64.deb · details

FreeBSD — v4gwd

Single-file C daemon for FreeBSD 13.1+, using the in-kernel RFC 5549 data plane. Wire it to dhclient-exit-hooks / rc.d per the docs.

fetch https://remcovanmook.github.io/v4-with-v6-nh/v4gwd-freebsd-$(uname -m)
install -m 755 v4gwd-freebsd-$(uname -m) /usr/local/sbin/v4gwd

Files: v4gwd-freebsd-amd64 · v4gwd-freebsd-arm64 · details

macOS — v4gwd-arp

C daemon that follows the IPv6 default router and holds a static ARP entry for 192.0.0.11. macOS has no in-kernel RFC 5549, so it uses the static-neighbor realization. Apple Silicon binary; on Intel, build from source (make). Unsigned — run via sudo.

curl -LO https://remcovanmook.github.io/v4-with-v6-nh/v4gwd-arp-macos-arm64
sudo install -m 755 v4gwd-arp-macos-arm64 /usr/local/sbin/v4gwd-arp

File: v4gwd-arp-macos-arm64 · details

Windows — v4gwd.ps1

Single-file PowerShell daemon on the in-box NetTCPIP cmdlets; pins 192.0.0.11 to the IPv6 router's MAC and follows it. A native C service variant (IP Helper API) is in the repo. Run from an elevated PowerShell; see the docs to install it as a boot-time SYSTEM task.

Invoke-WebRequest https://remcovanmook.github.io/v4-with-v6-nh/v4gwd.ps1 -OutFile v4gwd.ps1
powershell -ExecutionPolicy Bypass -File v4gwd.ps1 -Interface Ethernet

File: v4gwd.ps1 · details