Skip to content

iaean/rap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 

Repository files navigation

Raspberry Pi RIPE Atlas Probe

You can join the RIPE Atlas project with your own probe based on Raspberry Pi now, because the RIPE NCC folks start providing their stuff as software.

Hardware used:

Software used:

After obtaining and assembling the hardware it's just a 15 minutes project...

  • Download CentOS-Userland-7-aarch64-RaspberryPI-Minimal-4-2009-sda.raw.xz from CentOS
  • Burn the image with Etcher to the SDX
  • Boot your PI with the SDX and DHCP enabled plugged Ethernet
  • Obtain your PI IP and configure the PI via cloud-init
export PI=192.168.47.11

git clone https://github.com/iaean/rap/; cd rap

# install cloud-init
ssh -l root $PI -- yum -y install cloud-init # password: centos

# review, edit, adjust, apply cloud.cfg
scp cloud.cfg root@$PI:/etc/cloud/cloud.cfg.d/10_defaults.cfg # password: centos

# cloud-init reboot
ssh -l root $PI -- reboot # password: centos

# wait until: The system is finally up...
ssh -l pi $PI -- cat /var/atlas-probe/etc/probe_key.pub

# root access is disabled
ssh -l pi $PI -- sudo reboot
  • Create your RIPE NCC account
  • Register your probe with key /var/atlas-probe/etc/probe_key.pub
  • Start Configure your RIPE Atlas probe(s) and measurements
    • Maybe you don't wanna publicly share your probe as enabled by default
# docker is already there
ssh -l pi $PI -- docker run hello-world

# run a speedtest
ssh -l pi $PI -- speedtest --accept-license --accept-gdpr --selection-details
  • Atlas can provide a DNS for your probe. Disabled by default.
    Maybe you wanna use the feature and also forward a port on your CPE to SSH to enable remote login.

Notes

  • RIPE NCC provides CentOS RPM packages for x86_64 only. The software is based on busybox. We had to (cross-)compile and package for our Raspberry Pi target architecture. RPM is provided.

  • Linux driver for Microchip 7800 USB Ethernet (lan78xx) on RasPi 3B+ has bugs with proper carrier handling in /sys/class/net/eth0/carrier when cable is connected (#2937, #3939). This impacts all proper userland network management. Touching the device with ethtool when kernel spuriously reports NO_CARRIER can probably solve the issue. That's why we go with NetworkManager.

  • Wifi and bluetooth is disabled to potentially save some milliwatt. Ordinary USB ports on your CPE are unfortunately not sufficient to provide stable power.

  • Regarding docker...

    • You are on Pi. You are on linux/arm*. Unfortunately Multi-arch images are not standard today:
      WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested.
      Open an issue with the feature request to support Multi-arch builds to the maintainers of your favorite docker project.
    • We are running dockerd with --userland-proxy=false to improve IPv6 security.

Todo

  • join outbound inband tunneling services like inlets or WireGuard
  • dockerize the Atlas stuff
  • chrooted restricted shell for remote logins
  • integrate BNetzA breitbandmessung.de
  • integrate Ookla speedtest.net
  • local webserver
  • automate Atlas probe registration
  • HTTP webhook based trap sink

Contribution

All your contributions are welcome. So, don't hesitate to fork and send your pull requests.