My Hobby BGP Network: AS218248

Gavin Phratsachack · operator, AS218248 · Minnesota, USA - hosted in Düsseldorf, Germany

AS218248 is my hobby BGP network: a single-operator autonomous system I run from Minnesota, USA, to learn how the internet’s routing actually works — not in a lab, but on the real global routing table. It announces one IPv6 prefix, 2a0c:b641:fa0::/44, and it carries real services: authoritative DNS, an NTP/NTS time server, and my own mail. Everything here runs on one small VPS in Düsseldorf — this page is about that box and the network on it.

The box

The whole network is a single virtual server, gnpk-as, hosted by Servperso in Düsseldorf and operated from Eden Prairie, Minnesota.

OSDebian 13
CPU3 vCPU
RAM4.00 GiB
Disk15 GB bootdisk, growing to 20 GB
HostProxmox VM 400 (GP-AS218248), node host6-de
RouterBIRD 2.17.5

The VPS was upgraded in place on Nov 10, 2026 from 2 vCPU / 2 GB to the Advanced plan (3 vCPU, 4 GB); the bootdisk grow to 20 GB is still pending. A 2 GB swapfile was added Nov 9, 2026.

Interfaces

ens18Servperso — 45.154.99.220/27, gateway 45.154.99.222; IPv6 2a0c:b640:10::6:220/112, gateway 2a0c:b640:10::6:ffff
ens19Pixinko transit
ens20LocIX Düsseldorf — 1 Gbps port, 185.1.155.205, 2a0c:b641:701:0:a5:21:8248:1
ens21Former Servperso IX interface — now the ixFabric GRETAP tunnel (BGP-E-17983), 1 Gbps port

Services on this box

One box, five services — each with its own page:

BGPBIRD — transit, peering, and route filtering (this page)
DNSNSD — authoritative DNS, DNSSEC, DANE (DNS page)
Timechrony — NTP Pool + NTS server (NTP page)
MailPostfix + Dovecot + OpenDKIM (Email page)
Webnginx — this site, static pages, HTTPS-only
Routing securityRPKI validation + RIPE Atlas probe (Routing page)

The peering policy and exchange details are on the peering page, and the step-by-step of getting the ASN is on the ASN page.

Getting the ASN

The network started in October 2026 with a Servperso ASN + VPS bundle: a RIPE autonomous system number (AS218248), a sponsoring arrangement, and a virtual server in Düsseldorf to run it on. The prefix came with the setup — 2a0c:b641:fa0::/44 — and the first BGP sessions came up on Oct 29, 2026, when the /44 became visible globally. The full step-by-step is on the ASN page.

Transit: two providers, one prefix

AS218248 buys transit from two providers: Servperso (AS34872) and Pixinko (AS210233), both established since Oct 29, 2026. A quirk worth knowing if you’re reading paths: Servperso’s sibling ASN, AS208210, also appears in real paths toward my network, and my ASPA record lists all three providers (AS34872, AS210233, AS208210) so path validation reflects how the routing actually looks. Servperso sends a default route only on its session; the full table comes from elsewhere.

Neither transit supports BFD, so there is no BFD anywhere in this network — failover is plain BGP convergence, and that’s fine at this scale.

Peering: LocIX and ixFabric

Transit alone would be a stub network with extra steps, so AS218248 also peers at two internet exchanges in Düsseldorf:

Peering policy is open — details, communities and contact info are on the peering page and in PeeringDB (net 44063). Geolocation for the /44 is published as a geofeed (RFC 8805) and referenced from the RIPE inet6num object, so geolocation databases place the prefix in Düsseldorf, Germany.

Route security

A hobby network is no excuse for sloppy routing hygiene. The /44 is covered by an RPKI ROA — tightened on Nov 9, 2026 to exactly 2a0c:b641:fa0::/44 with max-length 44, verified valid in RIPEstat. ASPA records publish my provider set for path validation, and every BGP session exports only my own prefix. A MANRS Network Operator application (Actions 1, 3 and 4) is drafted and in progress.

The other side — validating what I accept — is on the Routing page: BIRD checks routes learned from the route servers and bilateral peers against the global RPKI data and rejects invalid origins, with Routinator serving RTR to BIRD on localhost, and a RIPE Atlas probe (ID 1018873) on the network to observe the filtering.

The ops console

The box is run from a tmux session with one window per service — 1:bgp 2:dns 3:mail 4:ntp 5:web 6:term — saved with tmux-resurrect and continuum, with a status bar script (~/.tmux/net-status.sh) showing BGP, RPKI, DNS, MX, web and NTP state at a glance. The console is the Proxmox serial port over xterm.js, where copy-paste works, and the shell is fish.

Why run a hobby AS at all?

Because there is no substitute for operating the real thing — watching your own prefix propagate, or debugging a GRETAP tunnel that passes traffic but not what you expected, is the education. If you’re thinking about your own ASN, the step-by-step is on the ASN page.