Nate Sales

Building a lightweight route server for BIRD

January 3, 2021

As I’ve written about previously, I’m a big fan of the BIRD routing daemon project. The idiomatic configuration syntax is a welcome change from the industry standard CLI style config, especially as someone coming from a software development background is concerned.

I’ve written a few utilities that help with using BIRD in production. bcg for configuration automation, and zsh-bird-completions for autocompleting birdc commands in zsh. So naturally, I decided it was time to set up a route server to as well.

I’ve used Hyperglass before as a web based looking glass. It’s incredibly feature rich and comes with a pleasing React-based UI for running queries in a browser. If you’re looking for a multi-router solution with a wealth of supported routing platforms, hyperglass is definitely the answer. It’s also a lot to configure if you don’t need all of its features.

birdrs is a tiny looking glass for BIRD that exposes a restricted interactive shell over SSH. This allows clients to connect and run queries securely (compared to legacy telnet looking glasses).

Getting started on Debian takes just a few commands:

# Add the apt repo, update cache, and install birdrs
echo "deb [trusted=yes] https://repo.natesales.net/apt /"  | sudo tee -a /etc/apt/sources.list.d/natesales.list
sudo apt update
sudo apt install birdrs

# You may also need to generate a SSH key for the server
# ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -o -a 100

# Enable and start the service
sudo systemctl enable --now birdrs

Once birdrs is enabled, it will start a SSH server on port 22 that’s ready to SSH into. Make sure the bird daemon is already running, and that birdc is able to be run by the user running the birdrs process.

For more information, check out the GitHub repo: https://github.com/natesales/birdrs