Awesome
ripe-ncc-hackathon-2017
change_delta.py
This script scans a json file that contains Atlas measurements, and calculates the delta between the first time an SOA serial was seen and when it was first seen for each (authoritative) server that returned that data to a probe.
Definitions
If a dns probe failed (missing ['result'] key or missing ['result']['answers'] key), the serial was not seen.
If a probe result contains a high lts value (which documents the Last time seen), the serial was not seen.
Output
{"dst_first_appeared": 1492560020, "serial": 2017041801, "serial_first_appeared": 1492560020, "dst": "198.41.0.4", "delta": 0}
{"dst_first_appeared": 1492577930, "serial": 2017041900, "serial_first_appeared": 1492577930, "dst": "198.41.0.4", "delta": 0}
{"dst_first_appeared": 1492592252, "serial": 2017041901, "serial_first_appeared": 1492592252, "dst": "198.41.0.4", "delta": 0}
This output then can be ingested in elasticsearch to show results.
What do these fields mean
serial: The serial in question dst_first_appeared: The time this serial appeared on this dst. serial_first_appeared: The first time this serial appeared on any dst dst: The thestination server that included the soa in the answer. delta: The difference between first time the serial was ever seen and seen for this dst.
New probe #1 in atlas
We setup a new probe in atlas that monitors the SOA record on levington25.com on amir.ns.cloudflare.com (anycast address).
https://atlas.ripe.net/measurements/8311800/
New probe #2 in atlas
This monitors the SOA for townsend101.com on amir.ns.cloudflare.com
https://atlas.ripe.net/measurements/8311819/
Visualisation
Shane thinks this is a good way to show the life and death of a serial:
>--------- Time ---->
Serial 2017032901: |---------|
Serial 2017032902: |-----------|
Serial 20170330: |----|
Serial 2017033001: |-----------|
Serial 2017033002: |-----------|
Running madprops
You need to set up elasticsearch mapping template:
$ curl -X PUT http://localhost:9200/_template/madprops -d @madprops.mapping
You may need some dependencies:
$ pip install --user elasticsearch
$ pip install --user dnslib
Then you can run the command:
$ ./madprops.py -h
usage: madprops.py [-h] [--start START] [--stop STOP] [--test TEST]
[--interval INTERVAL] [--tag TAG] [--index INDEX]
optional arguments:
-h, --help show this help message and exit
--start START
--stop STOP
--test TEST
--interval INTERVAL
--tag TAG
--index INDEX