Bogon IP ranges, free with an account.
The IPv4 and IPv6 ranges reserved for private networking, loopback, documentation, testing and other special uses, which should never appear as a source or destination on the public internet. Each range is named, and the file is rebuilt daily.
Schema at a glance.
See documentation →The schema and metadata are in the docs. It is published as CSVGZ and MMDB. For each range and the RFC that reserves it, see Bogon IP address ranges.
| start_ip | end_ip | name |
|---|---|---|
| 10.0.0.0 | 10.255.255.255 | Private-Use |
| 100.64.0.0 | 100.127.255.255 | Shared Address Space |
| 192.0.2.0 | 192.0.2.255 | Documentation (TEST-NET-1) |
| 2001:db8:: | 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff | Documentation |
| fc00:: | fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | Unique-Local |
Downloading it from code.
Database API reference →One call gets you the current Bogon IP build. Every official client wraps it three ways: straight to disk, a time-limited link you hand to your own runner, or bytes in memory, and checksums() returns the published digests to verify it against.
download()downloadUrl()downloadBytes()metadata()checksums()import osfrom internetdata import InternetDataclient = InternetData(os.environ["INTERNETDATA_API_KEY"])# what is in today's build, without moving the filemeta = client.database.metadata("bogon_ip_v1")client.database.download("bogon_ip_v1", "mmdb", "./bogon_ip_v1.mmdb")sums = client.database.checksums("bogon_ip_v1", "mmdb")print(meta.updated, meta.entries, sums["sha256"])
Getting your hands on it.
Free with an account, and the file is yours: teams join Bogon IP against the traffic, logs and routing data they already hold, inside their own infrastructure.
Traffic filtering
A packet sourced from a bogon range on the public internet is typically misconfigured or spoofed: drop it or flag it at the edge.
Log hygiene
Tell private and reserved addresses apart from real ones before they reach an allowlist, a report or a model.
An official client for every major language.
All SDKs on GitHub →Twelve official clients for the languages you ship in, each wrapping the database endpoints: list what you're licensed for, poll a build, follow the download redirect and verify what landed. Install commands are in the docs.
What is a bogon?
An address that should never appear on the public internet: private networks, loopback, documentation, multicast and other reserved space.
Where does the list come from?
From IANA's special-purpose address registries, the IPv6 space outside 2000::/3, and the 6to4 and Teredo forms of each IPv4 bogon. It's published as mslmio/bogon-ip on GitHub, and the Bogon IP address ranges page lists every range with the RFC behind it.
Why filter them?
A packet sourced from a bogon range on the public internet is misconfigured or spoofed, so it can be dropped or flagged at the edge.
How often is it rebuilt?
Daily. The metadata call answers when the current build landed and how many rows it holds, before you fetch it.
Which formats does a build ship in?
Gzipped CSV and MMDB, both cut from the same build. The MMDB opens in any MaxMind DB reader.
Is it really free?
Yes. Create an account and download it from the console, or with your API key from the API or any official client. It's licensed under CC BY-SA 4.0: credit InternetData and share what you build from it under the same license.
Is there a lookup API?
No. You download Bogon IP and query it in your own systems, so nothing is metered and no address leaves them. Each build comes from the database API, or to your webhook or your own storage.
What if a row looks wrong?
Send it to us and we'll tell you what we hold on it, when we last saw it and how. Corrections land in the next build.