BGP at Home: What Happens When You Peer with Your ISP

How a hobbyist gets their own IP block, an ASN, and a seat at the internet's grown-up table

There is a particular kind of homelabber who is no longer satisfied with port forwarding and dynamic DNS. They want their own IP addresses — a block that belongs to them, that they can announce to the internet themselves, that doesn’t change when they switch ISP and doesn’t sit inside someone else’s allocation. They want, in short, to run BGP. I have done this, and I am here to tell you it is equal parts genuinely useful and gloriously over-engineered for a house.

BGP — the Border Gateway Protocol — is how the internet’s roughly hundred thousand independent networks tell each other “to reach these addresses, send traffic my way”. Each of those networks is an Autonomous System with a number (an ASN). When you “peer with your ISP” you stop being a customer who receives a leased address and become a tiny network announcing your own routes. Let’s talk about what that actually takes.

Advertisement

The technical config is an afternoon. The bureaucracy is the project. To do this for real you need three things, all from a Regional Internet Registry (RIPE, ARIN, APNIC, etc.) usually via a sponsoring LIR:

  • An ASN. Your network’s identity. You’ll be assigned something like AS213xxx.
  • A provider-independent (PI) IP block. IPv4 is effectively exhausted, so realistically this means an IPv6 /48 (or /44). Getting PI IPv4 today is expensive and scarce; IPv6 is the sane path.
  • A transit provider willing to peer with a hobbyist. This is the genuine blocker. Most consumer ISPs will not run BGP with you. You typically need a business circuit, or you tunnel BGP over a service like a hosted VPS with a provider who does offer transit and BGP sessions.

The honest version of “peering with your ISP” for most people is “peering with a friendly transit provider or a VPS host that supports BGP”, because your average residential ISP wants nothing to do with this.

Once you have an ASN, a block, and an upstream willing to talk, the BGP itself is short. I use BIRD on a Linux box; FRR (FRRouting) is the other common choice. Here’s a minimal BIRD 2 config announcing an IPv6 /48 to one upstream:

# /etc/bird/bird.conf
router id 192.0.2.1;

define MY_ASN = 213000;
define MY_PREFIX = 2001:db8:dead::/48;

protocol device { }

protocol static {
    ipv6;
    route MY_PREFIX reject;   # pull-up route so we always have something to announce
}

protocol bgp upstream {
    local as MY_ASN;
    neighbor 2001:db8:ffff::1 as 64500;   # your transit provider's router + ASN
    ipv6 {
        import filter {
            accept;
        };
        export filter {
            if net = MY_PREFIX then accept;
            reject;
        };
    };
}

The export filter is the part you do not get wrong: it ensures you announce only your own prefix and never accidentally re-announce the full table back at your provider, which is the classic way to make the news for causing an outage.

Bring it up and check the session:

$ sudo birdc show protocols all upstream
upstream    BGP        ---        up     14:22:09    Established
  Description:    Transit to AS64500
  Routes:         920431 imported, 1 exported
  Route change stats: received  rejected ...
$ sudo birdc show route count
Total: 920431 of 920431 routes

If you accept a full table, “920431 imported” is the entire IPv6 internet sitting in your router’s RAM. You can also take a default-route-only feed if you don’t need the whole thing — and on a small box, you probably should.

Announcing a prefix is no longer enough; the network expects you to prove you’re allowed to. You create a Route Origin Authorisation (ROA) in your RIR portal stating “AS213000 is authorised to originate 2001:db8:dead::/48”. Without it, RPKI-validating upstreams (most large ones now) will treat your announcement as invalid and drop it. Set the ROA before you announce, then verify with a looking-glass that your prefix is valid.

The benefits are real but specific:

  • Provider independence. Change transit and your addresses come with you. No renumbering.
  • Multi-homing. Announce to two upstreams and you have automatic failover at the IP layer.
  • The reverse-DNS and abuse-contact authority that comes with owning a block — useful if you run mail.

And the costs: annual LIR/RIR fees, a transit arrangement that usually isn’t free, a router that can hold a routing table, and the standing responsibility to not fat-finger an announcement and leak routes.

Is BGP at home worth it? For 99% of self-hosters, no — Tailscale, a VPS, and dynamic DNS solve every real problem you have for a fraction of the cost and risk. But if you want to genuinely understand how the internet routes, value never renumbering again, or run a small ISP-adjacent project, getting an IPv6 /48 and a real ASN is one of the most educational things you can do in networking. Just respect that the moment your prefix is live, a mistake in your export filter is no longer a homelab problem — it’s everyone’s problem. Filter ruthlessly, set your ROAs, and start with IPv6.

Advertisement

Related Content

Advertisement
Smarc
Written by Smarc

Founder and editor of vo.rs. A lifelong tinkerer who self-hosts far more than is sensible, hardens Linux boxes for fun, and prods the latest AI tools to see what they can really do. The how-to guides here are the notes Smarc wishes had existed the first time round.