That's a great idea. I'll add a tooltip over some of the less obvious fields describing what they are.
> Is there any way at all to do this for IPv6?
Indeed! It's supported natively, so if you have an IPv6 address you should see it automatically. Here's an example <https://ip.guide/2600::>
> If the IP is associated with hostnames that would be nice to know.
I dig that idea, I'll have to think of the best way to pull that data while keeping the app stateless and fast.
Reverse DNS lookups are usually pretty quick:
```shell
> time dig +short -x 2600:dead::beef
customer.my-isp.net.
dig +short -x 2600:dead::beef 0.00s user 0.01s system 1% cpu 0.882 total
```https://news.ycombinator.com/formatdoc
"Text after a blank line that is indented by two or more spaces is reproduced verbatim. (This is intended for code.)"
I spend all day writing markdown and fenced blocks with type-hint is muscle memory at this point
Same, I've always wondered how do websites like this get their information.
At a 30,000ft view, the site works by building an in-memory routing table at boot time that has an entry for every route on the internet and which ASN (autonomous system number) announces it. From there, it stitches together data on the organization that the ASN belongs to, and geolocation data, and then exposes it in the API/UI. Under the hood it's using a treebitmap[1] data structure, which means that it can do _very_ fast lookups when given a particular ip address or ip address range.
Zooming in a little more, the main data source is MRT dumps from the RIPE RIS project[2]. There are a number of routers that RIPE (one of the 5 regional internet registries that hand out ASNs and IPs) that rely on network operators to share their view of every route on the internet. These routers are probably some of the most well-connected routers in the world. For the purposes of this service, MRT dumps are effectively a point-in-time snapshot of the routing table of that router. IP Guide parses that file, rebuilds it in memory, and attaches other relevant data to each IP range (also known as a "prefix").
This allows the service to stay fast and stateless, which was one of the main things I was trying to optimize for when building it.
[1]: https://blog.apnic.net/2021/06/04/storing-and-retrieving-ip-... [2]: https://ris.ripe.net/docs/10_routecollectors.html
Is there any way at all to do this for IPv6?
Additional info that would be helpful would be if this is hosted by one of the big tech companies (i.e. is it on AWS, Azure, etc), though maybe that will show up in the network info?
If the IP is associated with hostnames that would be nice to know. Not sure how much of a one-stop shop you want to be :)