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.
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.
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.
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.