First publication of this article on 2 November 2019
I created a bot to answer BGP queries over the fediverse (decentralized social network, best known implementation being Mastodon). What for? Well, mostly for the fun, but also because I need from time to time to find out the origin AS for an IP address or prefix, and I don't have a direct access to a DFZ router. This article is to document this project.
The idea was originally suggested during my lightning talk at RIPE 76 meeting in Marseille.
First, how to use it. Once you have a
Fediverse account (for Mastodon, see
), you
write to https://joinmastodon.org/
@bgp@botsin.space
. You just tell it
the IP address (or IP prefix) you want to know about and it
replies with the actually announced prefix and the origin
AS. There are also links to the RIPE Stat
service, for more details. Here is an example, with the answer:
The bot replies with the same level of confidentiality as the query. So, if you want the request to be private, use the "direct" mode. Note that the bot itself is very indiscreet: it logs everything, and I read it. So, your direct messages will be private only from third parties, not from the bot administrator.
If you are a command-line fan, you can use the madonctl tool to send the query to the bot:
% madonctl toot "@bgp@botsin.space 2a01:e34:ec2a:94a0::4"
You can even make a shell function:
# Definition (in a startup file) whichasn() { madonctl toot --visibility direct "@bgp@botsin.space $1" } # Usage % whichasn 2001:67c:2218:e::51:41
You can also, instead of an IP address, just send "info" and the bot will reply with details about the number of prefixes and AS it knows.
There is also a more classical (non-fediverse) Web interface, at
https://bgp.bortzmeyer.org/IPADDRESS
. For
instance, with curl :
% curl https://bgp.bortzmeyer.org/159.89.230.222 159.89.224.0/20 1406
Note that, unlike the fediverse interface, the Web interface is not really necessary, you could use other online services such as RIPE Stat. Here is an example with RIPE Stat (we use jq to parse the resulting JSON):
% curl -s https://stat.ripe.net/data/routing-status/data.json\?resource=185.49.140.0 | jq .data.resource "185.49.140.0/22"
Now, the implementation of the bot. (You can get all the files
at
.)
The code is derived from my DNS
bot so I won't repeat here most of the stuff, only the
BGP-specific things.https://framagit.org/bortzmeyer/fediverse-bgp-bot/
The bot backend could call directly the RIPE stat API mentioned above. But there is a limit in the number of requests and, if the bot is popular, it could be blacklisted. Same thing for other online services. Hence my choice of getting the raw RIS dumps. Parsing them and serving them to the bot is done by the WhichASN daemon.
Other useful services and readings for the BGP fans:
whois.cymru.com
or whois.bgpmon.net
.Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)