Welche Prefixe liefert welches AS – Teil 3

In den Teilen 1 und 2 habe ich per whois und per IRRToolset nach Prefixen eines AS oder eines AS-Sets gesucht. Ich will diese Information nutzen, um automatische Filterlisten für einen bird Routeserver zu bauen. Ein Kollege hat mich mit der Nase auf bgpq3 gestupst. Man muss es zwar auch selbst kompilieren, aber ./configure; make; make install funktionierte anstandslos auf meinem Debian.

Das Programm wird weiter aktiv entwickelt, im Gegensatz zu dem IRRToolset, und es ist deutlich schneller. Hinter meiner DSL-Leitung braucht das IRRToolset für das Zusammensammeln aller Prefixe von dem befreundeten Provider TNG (AS-TNG) geschlagene 1 Minute und 8 Sekunden und das bgpq3 nur 2 Sekunden. Wir haben also einen Gewinner.

Der Routeserver läuft mit der Software bird. Auch wenn es nicht schwer ist, selbst aus einer Liste an Prefixen eine Access-Liste zusammenzubauen, so bietet bgpq3 doch die Möglichkeit neben IOS, Junos und sogar JSON eben auch bird Access-Listen direkt auszugeben. Das spart Arbeit. Und so sieht es dann aus:

# bgpq3 -b -l allnet  AS-LWL
allnet = [
    31.24.144.0/21,
    31.209.80.0/20,
    37.72.144.0/21,
    37.72.144.0/22,
    37.72.144.0/24,
    37.72.145.0/24,
    37.72.146.0/24,
    37.72.147.0/24,
    37.72.148.0/22,
    37.72.148.0/24,
    37.72.149.0/24,
    37.72.150.0/24,
    37.72.151.0/24,
    46.19.88.0/21,
    46.19.88.0/22,
    46.19.88.0/24,
    46.19.89.0/24,
    46.19.90.0/24,
    46.19.91.0/24,
    46.19.92.0/22,
    46.19.92.0/24,
    46.19.93.0/24,
    46.19.94.0/24,
    46.19.95.0/24,
    87.253.189.0/24,
    91.202.40.0/22,
    95.47.96.0/24,
    109.69.64.0/21,
    152.143.0.0/16,
    185.52.160.0/22,
    185.55.116.0/22,
    185.55.116.0/23,
    185.55.116.0/24,
    185.55.117.0/24,
    185.55.118.0/24,
    185.76.188.0/22,
    185.76.188.0/23,
    193.47.147.0/24,
    195.191.196.0/23
];
Welche Prefixe liefert welches AS – Teil 3

Welche Prefixe liefert welches AS – Teil 2

Mit der -i origin Abfrage vom letzten Post gibt es zu viele Einschränkungen. Das funktioniert nur mit der RIPE und andere IRR haben eine andere whois-Syntax und um ein ganzes AS-set rekursiv aufzulösen, muss ich unter Umständen viele, viele Male den Befehl anwenden. Das zu automatisieren, hat natürlich schon mal jemand gemacht. Das ISC hat mit dem IRRToolset ein eben solches herausgebracht. Ich habe es mir heruntergeladen und unter Debian 7 kompiliert. Dafür müssen ein paar Pakete installiert werden:

apt-get install make g++ bison flex

Danach kann man es wie üblich mit ./configure; make; make install kompilieren und installieren. Drei Programme werden installiert: peval, rpslcheck, rtconfig

Mit peval kann man rekursiv AS-Sets durchsuchen. Hier wieder ein Beispiel mit dem AS meines Arbeitgebers:

% peval 'afi ipv4, ipv6 AS-LWL'

({195.191.196.0/23, 193.47.147.0/24, 185.76.188.0/22, 185.76.188.0/23, 185.55.116.0/22, 185.55.118.0/24, 185.55.116.0/23, 185.55.116.0/24, 185.55.117.0/24, 185.52.160.0/22, 152.143.0.0/16, 109.69.64.0/21, 95.47.96.0/24, 91.202.40.0/22, 87.253.189.0/24, 46.19.88.0/21, 46.19.88.0/22, 46.19.92.0/22, 46.19.88.0/24, 46.19.89.0/24, 46.19.90.0/24, 46.19.91.0/24, 46.19.92.0/24, 46.19.93.0/24, 46.19.94.0/24, 46.19.95.0/24, 37.72.144.0/21, 37.72.144.0/22, 37.72.148.0/22, 37.72.144.0/24, 37.72.145.0/24, 37.72.146.0/24, 37.72.147.0/24, 37.72.148.0/24, 37.72.149.0/24, 37.72.150.0/24, 37.72.151.0/24, 31.209.80.0/20, 31.24.144.0/21}) OR ({2a04:ec40:ff28::/48, 2a04:ec40:ff29::/48, 2a04:ec40:ff20::/48, 2a04:ec40:ff21::/48, 2a04:ec40:ff22::/48, 2a04:ec40:ff23::/48, 2a04:ec40:ff24::/48, 2a04:ec40:ff25::/48, 2a04:ec40:ff26::/48, 2a04:ec40:ff27::/48, 2a04:ec40:ff18::/48, 2a04:ec40:ff19::/48, 2a04:ec40:ff14::/48, 2a04:ec40:ff15::/48, 2a04:ec40:ff16::/48, 2a04:ec40:ff17::/48, 2a04:ec40:ff12::/48, 2a04:ec40:ff13::/48, 2a04:ec40:ff10::/48, 2a04:ec40:ff09::/48, 2a04:ec40:ff04::/48, 2a04:ec40:ff05::/48, 2a04:ec40:ff06::/48, 2a04:ec40:ff07::/48, 2a04:ec40:ff02::/48, 2a04:ec40:ff03::/48, 2a04:ec40:ff01::/48, 2a02:2918::/32, 2a02:2918:adad::/48, 2a02:16d0::/32, 2a00:c380::/32, 2001:67c:1b43::/48})

Wie man sieht, ist das Ergebnis deutlich länger als eine einfache whois-Abfrage nach dem AS. Das liegt daran, dass nun rekursiv alle Prefixe von allen im AS-set definierten AS mit ausgegeben werden.

Mit rpslcheck hat man einen erweiterten whois-client, einfach mal ausprobieren. Das Programm rtconfig wiederum ist sehr spannend. Es kann Konfigurationen für Cisco und Juniper-Geräte generieren. Ich muss mir das mal genauer anschauen. Aber ehrlich gesagt, bei so wichtigen Geräten im Netz will ich lieber selbst die Konfig schreiben und das nicht einem Script überlassen.

Welche Prefixe liefert welches AS – Teil 2

Serielles Terminal

Um einen Router oder Switch seriell zu konfigurieren, braucht man einen physikalischen seriellen Port (DB-9) oder einen USB-Seriell Umsetzer. Mein Lieblingsprogramm dafür ist minicom. Aber auf meinem Mac habe ich kein minicom und auch auf Ubuntu oder Debian muss man es erst nach installieren. Ersatzweise gibt es das Programm „screen“, das nicht nur virtuelle Terminalfenster verwalten kann, sondern auch einen seriellen Port nutzen kann.

Erst muss man das serielle Interface finden. Ein fest eingebautes ist unter Linux üblicherweise /dev/ttyS0

Das entsprechende Device für einen USB-Seriell-Adapter auf einem Mac findet man so:

eliyah% ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port	/dev/tty.usbserial-A600beiz
/dev/tty.Bluetooth-Modem
eliyah%

Jetzt ruft man einfach screen mit dem Device als Parameter auf. Die Default-Einstellung ist 9600 8-N-1:

screen /dev/tty.usbserial-A600beiz

Andere Geschwindigkeiten kann man einfach dahinter schreiben, also etwa so:

screen /dev/tty.usbserial-A600beiz 19200

Mehr dazu hier.

Aus screen kommt man mit Ctrl-a,Ctrl-\ wieder raus. Auf dem Mac mit deutscher Tastatur ist Ctrl-\ eine kleine Herausforderung. Man drückt: ctrl-alt-shift-7

Serielles Terminal

NAT und Cisco

Hier will ich nicht erklären, wie man NAT auf einer Cisco konfiguriert. Aber ein paar Dinge suche ich immer wieder und daher schreibe ich sie hier auf:

  • Port forwarding mit statischer IP
ip nat inside source static tcp [int. IP] [int. Port] [ext. IP] [ext. Port] extendable
  • Port forwarding mit dynamischer IP auf Dialer1
ip nat inside source static tcp [int. IP] [int. Port] interface Dialer1 [ext. Port]
  • exposed host (alle Ports auf eine interne IP)
ip nat inside source static [int. IP] interface Dialer1

und damit Telnet von aussen auf den Router noch geht (wenn gewünscht):

ip nat inside source static tcp [int. Router-IP] 23 [ext. IP] 23 extendable
NAT und Cisco