Giter VIP home page Giter VIP logo

rap's Introduction

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.

rap's People

Contributors

iaean avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.