Actual host services
TCP listeners and server-style bound UDP sockets become the policy baseline.
Standalone Linux · local control plane · no cluster required
A standalone Linux server has a live service state and a separate firewall state. When an operator has to keep both aligned by hand, stopped services leave holes and new services break until someone remembers another rule.
Auto XDP is a local reconciliation controller. It discovers the host's actual exposure, combines it with explicit exceptions, and keeps the effective policy converged as services change.
TCP listeners and server-style bound UDP sockets become the policy baseline.
Fast events update state quickly. A full discovery pass repairs missed events and map drift.
Native XDP first, generic XDP next, synchronized nftables when XDP cannot attach.
The same socket discovery and reconciliation control plane drives every enforcement path. Losing native XDP support reduces acceleration, not protection.
Preferred XDP-hook enforcement for unwanted ingress before the normal networking stack handles it.
Compatibility path that preserves the XDP policy model when native attachment is unavailable.
The same reconciler applies the effective policy instead of making operators maintain a second ruleset.
One policy. Multiple enforcement backends.
The deeper implementation exists to preserve policy continuity through reloads, missed events, backend changes, return traffic, and constrained single-host environments.
When XDP is available, unwanted ingress is rejected at the XDP hook before it is passed into the normal kernel networking stack.
XDP_DROPFast socket events update policy quickly, while an independent full discovery pass repairs missed events and map drift.
event + timerHuman-friendly /etc/auto_xdp/config.toml. Configure rate limits, trusted CIDRs, ACL rules, tunnels. SIGHUP hot-reload.
Loadable BPF slot handlers for GRE, ESP, SCTP, or custom protocols. axdp slot load gre or point at your own .o file.
proto-41 (SIT) traffic accepted only from configured sit4_endpoints. All other proto-41 sources dropped at line rate.
TCP SYN creates tracked state. TC egress records outbound flows so return traffic passes without reopening port holes.
tc egressSYN and UDP rate limits keyed per source IP, configurable by process name or IANA service. Aggregate caps available.
anti-brute-forceWhen XDP cannot attach, the same control plane drives a synchronized nftables ruleset. Policy automation keeps working.
graceful degradationTerminal control for everything: axdp stats · axdp acl add · axdp trust · axdp slot load · axdp under-attack on · axdp log-level
The operator view exposes the reconciler's result: active backend, discovered services, policy limits, packet decisions, and the state that keeps legitimate return traffic moving.
Use /etc/auto_xdp/config.toml for permanent ports, trusted CIDRs, ACL rules, discovery exclusions,
and rate limits. The reconciler combines these overlays with actual listening sockets.
# daemon behaviour
[daemon]
log_level = "warning"
preferred_backend = "auto" # auto · xdp · nftables
# port auto-discovery filters
[discovery]
exclude_loopback = true
exclude_bind_cidrs = ["10.0.0.0/8"] # skip private-only listeners
exclude_ports = [5432, 6379] # keep DB/cache off the public whitelist new
# ports always whitelisted regardless of discovery
[permanent_ports]
tcp = [22, 443]
udp = [53, 51820]
# IPs that bypass rate limits and the SYN whitelist check
[trusted_ips]
"203.0.113.5/32" = "monitoring"
"2001:db8::/32" = "office-v6"
# explicit per-CIDR port allowances (TCP or UDP)
[[acl]]
proto = "tcp"
cidr = "198.51.100.0/24"
ports = [5432, 6379]
# XDP data-path tunables
[xdp.runtime]
default_tcp_syn_rate = 100 # SYNs/s per source (normal mode)
icmp_burst_packets = 100
udp_global_byte_rate_mbps = 997
The userspace reconciler observes host state and writes one effective policy. XDP and TC enforce and track traffic at the kernel boundary, while pinned BPF maps connect the control plane to the dataplane. The architecture is local: one server, one daemon, no central controller.
Most host firewalls start from manually declared rules; Auto XDP starts from observed service state and continuously reconciles enforcement to match it.
Control plane & pipeline: install → userspace reconciler → BPF maps → kernel enforcement
The xdp_port_sync daemon watches actual listening sockets. When a process binds a public
port, the effective policy follows it. When the process stops listening, that exposure disappears.
Interactive demonstration: the events below are simulated UI data, not the visitor's host.
Auto XDP is intentionally a local host firewall, not a replacement for upstream mitigation or multi-user authorization.
XDP only filters traffic that reaches the NIC. If upstream bandwidth is saturated, use provider-side scrubbing or a protected host.
A public or wildcard listener is treated as an explicit request for exposure. Use trusted hosts or configure discovery exclusions for stronger separation.
It is designed for one Linux server, one local daemon, and local kernel state without an API server or datastore.
In a real public-internet test, XDP reduced target softirq CPU from 85.9% to 3.0% under an approximately 367k PPS / 188 Mbps UDP flood. Performance is an enforcement advantage, not the product thesis.
modprobe pktgen on the attacker, configure a 64-byte UDP flood
(pkt_size 64, clone_skb 100, count 10000000),
and compare top softirq usage with sudo axdp watch showing
live counter deltas on the target. This measures host-side filtering; it does not mitigate
upstream bandwidth saturation.
Standalone servers are constantly scanned and probed. Traditional firewalls work, but their static policy can drift from the services the host is actually running. A new service needs a remembered rule. A stopped service needs a remembered cleanup.
Auto XDP starts from a different premise: the host already knows which services it is exposing. When a process binds a public port, policy should converge. When it stops listening, that exposure should disappear without a second manual ruleset.
Auto XDP is an automatically reconciled host firewall for standalone Linux servers.
XDP is the preferred acceleration layer, while generic XDP and nftables provide
safer compatibility paths when the preferred backend is unavailable.
Auto XDP is built in the open for people operating real Linux hosts: VPSes, cloud instances, homelab nodes, and small public servers. The repository is the source of truth for releases, implementation, tests, and the next contribution.
Use, inspect, fork, and improve the project under the Mozilla Public License 2.0.
Tagged releases have landed across five consecutive months. Follow the trail, then inspect the changelog and CI-backed repository history.