Nützliche Einzeiler

Ich dachte wir sammeln einfach mal ein paar nützliche Einzeiler. Wenn genug zusammen kommt, würde ich damit gerne unsere Dokumentation etwas füllen. Ich fange einfach mal an:

tcpdump

Ersetzt ggf. -i any durch das Interface, was euch interessiert.

icmp paket too big

tcpdump -i any 'icmp6[icmp6type] == icmp6-packettoobig' -n -q

Nützlich wenn man PMTUD Probleme untersuchen will.

router advertisements RA

tcpdump -i any 'icmp6[icmp6type] == icmp6-routeradvert' -n -vvvv

So kann man untersuchen, welche Netze usw. vom Router announced werden.

ipv6 gre

tcpdump -i any ip6 protochain 47

oder

tcpdump -i any ip6 protochain gre
  • proto 47/proto gre alleine reicht nicht, weil noch ein Destination Options Header (proto 60) eingeschoben ist
    • im tcpdump: DSTOPT GREv0
  • protochain 47 sucht in allen IPv6 Headers nach Protokoll 47/gre

Babel

tcpdump -i any ip6 and udp port 6696 -n

Nützlich um zu sehen, ob wirklich überhaupt Babelpakete übertragen werden oder ankommen.


bird

watch birdc show babel neighbors
Every 2s: birdc show babel neighbors               2024-06-22 21:34:22

BIRD 2.13.1 ready.
babel1:
IP address                Interface  Metric Routes Hellos Expires Auth
fe80::1234                eth4.203      192   1469     16   2.118 No
fe80::5678                eth3.106      320   1469     16   3.551 No

Damit kann man einfach alle Peerings beobachten, ob Babelpakete hängen bleiben, Metriken usw.

2 „Gefällt mir“

Babel announcements

Mit folgenden Befehlen kann man herausfinden, welche Routen bird in das Babelnetz announced:

IPv6

birdc show route table fff6 where source != RTS_BABEL

IPv4

birdc show route table fff4 where source != RTS_BABEL

Zu deutsch:

Zeig mir alle Routen außer die, die du aus dem Babelnetz gelernt hast.

Das beinhaltet gefilterte Routen aus der fff Routingtabelle mit proto static und Adressen von den Interfaces.

2 „Gefällt mir“

ssh socks proxy

Mit der OpenSSH Client Option -D kann ein SOCKS Proxy gestartet werden, der dann z.B. von einem Browser genutzt werden kann, um TCP Verbindungen vom entfernten System zu starten.

Das kann z.B. praktisch sein, um einen öffentlich erreichbaren Server als Jump Host für den Zugriff auf ein ausschließlich lokal erreichbares Webinterface zu nutzen.

ssh

ssh -D 8081 user@server.de

chromium

Wenn hier ein --user-data-dir angegeben wird, dann kann eine eigene Chromium-Instanz gestartet werden, die parallel zum „normalen“ Chromium genutzt werden kann.

/usr/bin/chromium --temp-profile --user-data-dir=tmp/chrome --proxy-server=socks://localhost:8081 --proxy-bypass-list="<-loopback>"

Damit das ganze aus dem Application Launcher nutzbar wird, kann die chromium.desktop Datei nach ~/.local/share/applications kopiert und die darin enthaltenen Exec= und Name= entsprechend angepasst werden.

1 „Gefällt mir“

Babel RouterID

Ich habe keinen direkten weg aus bird die RouterID zu kitzeln und habe das hier zusammengebaut:

birdc show babel entries | awk '{ if ($3 == 0) { print $2 }}' | sort -u

show babel entries zeigt die babel-interne Tabelle an. In der zweiten Spalte ist die RouterID und in der dritten Spalte die Metrik. Routen mit der Metrik 0 kommen vermutlich vom eigenen Protokoll.

Damit kann man auch gezielt schauen, ob ein Router vom seqno Bug in bird betroffen ist, indem man nach der eigenen RouterID auf https://rmon.bareminimum.eu/ sucht.