Windows Netzwerke topologisieren – Linuxstyle

Wenn wir in einem Firmennetz den PCs per DHCP IPs zuweisen, dann kennt nur der DHCP Server die aktuelle Zuordnung aller von Ihm verwalteten Addresseranges und die kann sich dynamisch ändern. Also brauchen wir eine Methode wie wir eine aktuelle Übersicht bekommen.

Windows Netzwerke topologisieren – Linuxstyle

Oh ja.. endlich mal was ohne Corona schreiben, wie ich das vermisst habe 😀

Wir brauchen:

Einen Linux PC
NMAP Scanner
GREP, SED, AWK
nmblookup

nmblookup bekommt man für Fedora im Paket „samba-client“ und nmap natürlich im Paket „nmap„, wer hätte es gedacht 😉

Wir nehmen jetzt mal an, daß wir nur ein Netz haben: 192.168.1.0/24 und, daß Windows RDP offen hat, damit man da auch Remote drauf kann. RDP hat den Port 3389. Das hat den Vorteil, daß wir nur die PCs mit Port 3389 finden müssen:

nmap -n -sS -p 3389 192.168.1.0/24

das sieht dann so aus:

Nmap scan report for 192.168.1.24
Host is up (0.00040s latency).
PORT STATE SERVICE
3389/tcp open ms-wbt-server
MAC Address: A2:54:20:26:3D:7F (Unkown)

Aus der Ausgabe brauchen wir nur die mit offenen RDP Ports, also filtern wir nach „open“, es sei denn, Ihr habt eine Installation bei der das eingedeutscht wurde. Da müßt Ihr selbst ran 😉

nmap -n -sS -p 3389 192.168.1.0/24 | grep -B 3 open

Jetzt habe ich dem ersten grep nach „open“ gesagt, es soll auch die 3 Zeilen vor dem Treffer ausgeben. Dies ist wichtig, weil da die IP drin steht. Als nächstes  filter wir auf die IP Zeile:

nmap -n -sS -p 3389 192.168.1.0/24 | grep -B 3 open | grep „scan report“

und werfen alles außer der IP weg:

nmap -n -sS -p 3389 192.168.1.0/24 | grep -B 3 open | grep „scan report“ | sed -e „s/^.*for //g“

Diese Ausgabe müssen wir um den eigentlichen Befehl so erweitern, daß wir die Informationen vom PC bekommen und das geht mit „nmblookup -A <ip>“:

nmap -n -sS -p 3389 192.168.1.0/24 | grep -B 3 open | grep „scan report“ | sed -e „s/^.*for //g“ | awk ‚{print „nmblookup -A „$1;}’|bash

..Das Ergebnis der Mühe wert..

Das Ergebnis sieht dann so aus:

Looking up status of 192.168.1.2
W10-HEIST <00> – B <ACTIVE>
MOVIE <00> – <GROUP> B <ACTIVE>
W10-HEIST <20> – B <ACTIVE>

MAC Address = 52-54-00-48-D1-17

Looking up status of 192.168.1.87
No reply from 192.168.1.9

Looking up status of 192.168.1.188
AUTOCAD02 <00> – B <ACTIVE>
AUTOCAD02 <20> – B <ACTIVE>
INGENIEURE <00> – <GROUP> B <ACTIVE>

MAC Address = 90-1B-0E-53-5E-07

Jetzt habe ich die IP, den Namen, die Arbeitsgruppe und die Macaddresse von jedem Windows PC mit RDP. Jederzeit aktualisierbar. Live 🙂

Das war Teil 1 der Aufgabe, denn für den Fall, für den ich das so gemacht habe, war das das gewünschte Ergebnis. Wir können aber noch mehr machen. Wir haben die IP und die MAC eines PCs.

Was wäre, wenn man damit die Topologie ermitteln könnte?

Vorweg: Es gibt andere Methoden, z.b. snmp Abfragen am Switch und Router, die sind etabliert und funktionieren. Allerdings ist son snmpwalk abhängig davon was die einzelnen Geräte anbieten, da muß man einiges an Zeit reinstecken, wenn man das selbst bauen will.

Zeit ist aber das richtige Stichwort 🙂 Pakete laufen im Netz abhängig von der Strecke zwischen den PCs unterschiedlich lange. Wie bekomme ich das raus? Richtig mit Ping:

# ping -c 20 192.168.1.25
PING 192.168.1.25 (192.168.1.25) 56(84) bytes of data.
64 bytes from 192.168.1.25: icmp_seq=1 ttl=64 time=0.215 ms
64 bytes from 192.168.1.25: icmp_seq=2 ttl=64 time=0.195 ms
64 bytes from 192.168.1.25: icmp_seq=3 ttl=64 time=0.209 ms
64 bytes from 192.168.1.25: icmp_seq=4 ttl=64 time=0.204 ms
64 bytes from 192.168.1.25: icmp_seq=5 ttl=64 time=0.166 ms
64 bytes from 192.168.1.25: icmp_seq=6 ttl=64 time=0.204 ms
64 bytes from 192.168.1.25: icmp_seq=7 ttl=64 time=0.253 ms
64 bytes from 192.168.1.25: icmp_seq=8 ttl=64 time=0.158 ms
64 bytes from 192.168.1.25: icmp_seq=9 ttl=64 time=0.200 ms
64 bytes from 192.168.1.25: icmp_seq=10 ttl=64 time=0.184 ms
64 bytes from 192.168.1.25: icmp_seq=11 ttl=64 time=0.199 ms
64 bytes from 192.168.1.25: icmp_seq=12 ttl=64 time=0.249 ms
64 bytes from 192.168.1.25: icmp_seq=13 ttl=64 time=0.264 ms
64 bytes from 192.168.1.25: icmp_seq=14 ttl=64 time=0.225 ms
64 bytes from 192.168.1.25: icmp_seq=15 ttl=64 time=0.297 ms
64 bytes from 192.168.1.25: icmp_seq=16 ttl=64 time=0.255 ms
64 bytes from 192.168.1.25: icmp_seq=17 ttl=64 time=0.290 ms
64 bytes from 192.168.1.25: icmp_seq=18 ttl=64 time=0.328 ms
64 bytes from 192.168.1.25: icmp_seq=19 ttl=64 time=0.212 ms
64 bytes from 192.168.1.25: icmp_seq=20 ttl=64 time=0.229 ms

— 192.168.1.25 ping statistics —
20 packets transmitted, 20 received, 0% packet loss, time 19360ms
rtt min/avg/max/mdev = 0.158/0.226/0.328/0.047 ms

Wenn wir also statt nmblookup ping einbauen, können wir jeden dieser Pcs messen:

nmap -n -sS -p 3389 192.168.1.0/24 | grep -B 3 open | grep „scan report“ | sed -e „s/^.*for //g“ | awk ‚{print „ping -c 20 „$1;}’|bash | grep -E „(statistics|rtt)“ | sed -e „s/— //g“ -e „s/ ping.*$//g“ -e „s/rtt //“ -e „s/\/max\/mdev = /:/g“ -e „s/\//:/g“ | awk -F „:“ ‚{print $1″=“$3″ „$2″=“$4;}‘ | sed -e „s/= =//“

da kommt sowas bei raus:

192.168.1.21
min=0.624 avg=0.851

Wert ermittelt, jetzt muß er bewertet werden..

Jetzt kann man sich überlegen, inwieweit Ihr dem MIN Wert traut, denn der ist stark vom Netzwerkverkehr abhängig, wo hingegen avg so etwas bedingt ausbügelt. Man sollte die Messung zu verschiedenen Zeiten wiederholen und dann die Ergebnisse zusammenrechnen. Für diese Prinzipdarstellung reichts auch erstmal so 😉

Wir können aus den MIN-Daten folgendes ermitteln: Alle PCs mit der gleichen Antwortzeit sind gleich weit weg, oder der antwortende PC ist ne alte Krücke 😉 Gleich weit weg bedeutet in Wirklichkeit: diese PCs könnten in einem Zimmer stehen, aber die könnten auch in verschiedenen Zimmern stehen, die über gleich lange Kabel angeschlossen sind. Das ist der Knackpunkt.

Üblich ist, daß im Serverraum ein Patchfeld ist, von dem die Kabel in die einzelnen Regionen des Gebäudes abzweigen. Der Vorteil dabei ist der Datendurchsatz und das man PortSense benutzen kann, der Nachteil, daß viel mehr Kabel gezogen werden, als nötig wären.

Datenaustausch in einem Netzwerk

Jetzt überlegen wir mal, welchen Test wir noch machen können… hmm.. IP.. Name… MACAdressse… MACAdresse… hey, wir haben eine MACAdresse vom PC direkt.. vergleichen wir die doch mal mit dem was im Arptable steht 😀

Erstmal erklären: Der Datenaustausch findet in einem Netz nicht zwischen IPs statt, sondern zwischen MAC Adressen. Das sind die Adressen der Netzwerkkarten die da zum Einsatz kommen. Haben wir eine direkte Verbindung zu dem Austauschpartner, hat die IP im Arpcache die gleiche Macadresse wie die per nmblookup mitgeteilt wurde. Im ARP Cache, erreichbar über den Befehl apr, bekommen wir die für die Kommunikation zur IP genutzte Mac auf dieser Seite der Verbindung:

Looking up status of 192.168.1.51

MAC Address = B1-6E-FF-D3-42-B4

# arp |grep 1.51
192.168.1.51 ether b1:6e:ff:d3:42:b4 C eth0

Ist da aber ein anderes Gerät dazwischen ( z.B. Router ), dann hat das Arpcache bei uns eine andere MAC als das Gerät uns per nmblookup mitgeteilt hat. Hinweis: Switche geben Ihre eigenen MAcs nicht preis, die sind transparent was das betrifft. Ein Router könnte jetzt also ein Netzumsetzer, eine Bridge, Tunnel oder ähnliches sein:

Looking up status of 192.168.1.51

MAC Address = B1-6E-FF-D3-42-B4

# arp |grep 1.51
192.168.1.51 ether  A0:43:3d:3A:13:45 C eth0

Wenn man jetzt also mehrere IPs mit der gleichen MAC hat, weiß man, daß die zusammen auf entweder einer Hardware laufen, dann wären die Pingzeiten alle gleich, oder die laufen alle durch einen Router/Tunnel und haben unterschiedliche Laufzeiten, dann stehen die hinter dem Router an verschiedenen Stellen.

Andere Ergebiskombinationen

Jetzt gibts noch die Kombi, daß die Laufzeit für einige IP gleich ist, die Mac auch, aber die Mac noch bei anderen IPs auftaucht, die andere Laufzeiten haben, dann sind die IPs mit gleicher Laufzeit auch auf einer anderen Hardware hinter so einem Router platziert und der Rest steht irgendwo anders.

Wenn man nur von einem Standort aus scannt, bekommt man möglicherweise einen falschen Eindruck, weil wir die „Welt“ nur zweidimensional sehen. Wenn unserer erstes Zwischengerät seine MAC anzeigt, könnten da noch einige andere hinter liegen, die wir nicht mehr sehen können. Deswegen ist eine automatische Topologie zumindest mit dieser simplen Methode hier, bei komplexen Setups nicht ausreichend genau.

Das war natürlich jetzt nur eine theoretische Überlegung, ich hatte ja gesagt, daß es da etablierte Methoden gibt. Wann könnte das also noch mal wichtig sein? z.B. wenn man mit LAHA Audio zeitgleich ans Ziel streamen will: Multi-Netzwerk-Lautsprecher mit Linux

Hier wäre, wenn wir es schon eingebaut hätten, die Laufzeit eine wichtige Komponente, damit die Streams alle zeitgleich zu hören sind. Vielleicht baue ich das ja mal ein. Ich habe gerade erst AndroidStudio wieder zum Leben erwecken können 😀

Anmerkungen:

Alle MACs sind frei erfunden. Je nach Aufgabenstellung kann man auch andere Ports als Scankriterium für Nmap oder gleich einen PING-Scan benutzen. NMAP gibt u.U. einen aufgelösten Domainnamen zurück:

Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-19 13:14 CEST
Nmap scan report for android-501a417bc9ee518.fritz.box (192.168.0.39)
Host is up (0.090s latency).

PORT STATE SERVICE
445/tcp closed microsoft-ds
MAC Address: 6C:F1:76:2D:3B:AA (Samsung Electronics)

da müßt Ihr die SED Anweisungen entsprechend ändern oder nmap die „-n“ Option verpassen, sonst passieren skurille Dinge :DD

 

Netzwerktools: Iptraf, ifstat, vnstat, Ping & Pong

Im Artikel über Bandbreitenmessungen in der Konsole habe ich Euch ja angedroht, daß es eine Fortsetzung gibt 🙂

Fangen wir mal mit der einfachsten Fragestellung im Netzwerk an:

Habe ich überhaupt ein Netz ?

Dazu fragen wir den Netzwerkstack( ab jetzt nur noch TCP/IP Stack) von Linux mit „ip link“, ob wir überhaupt eine aktive Netzwerkkarte haben, wie man sich denken kann, wird das ohne Netzwerkkarte ein Problem.

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 40:66:3e:21:1a:76 brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:0a:cf:07 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:0a:cf:07 brd ff:ff:ff:ff:ff:ff

Wir erhalten eine Liste aller nützlichen Interface (Netzwerkadapter) mit Ihrem jeweiligen Status.

Das hier als 1 bezeichnete Interface heißt „lo“ und ist das Loopback Device besser bekannt mit seiner StandardIP 127.0.0.1 . Es ist von außen nicht erreichbar und nur für intere Zwecke da. Ein Unixrechner ohne 127.0.0.1 ist mir nicht bekannt 😉 Das Loopback Device wird für diverse Zwecke gebraucht u.a. das mounten von Truecryptcontainern und Netzwerktunneln.

An zweiter Stelle kommt in unserer Liste das „enp2s0“ früher mal als „eth0“ bezeichnet. Heute kommen die Bezeichnungen vom Kernel und zwar nicht direkt zufällig, aber meisten eine Zusammenstelung aus Devicenamen und Ports des Chips der für das Interface verantwortlich ist. Es kann bei jedem anders aussehen, wenn es Lust hat. Man kann es über den „udevd“ auch wieder in eth0 ummünzen, wenn es einem den Aufwand Wert ist.

Für uns ist es das wichtigste Interface, denn es stellt unsere Netzwerkkarte dar. Der „State UP“ meint, daß es „up and running“ ist, also eingeschaltet und funktioniert und das ist genau was wir wollen.

CHECK: Karte vorhanden und aktiv.

Schauen wir uns das Interface genauer an. Dazu brauchen wir „ifconfig“ , es geht auch mit „ip“, aber warum sich quälen 😉

$ ifconfig enp2s0
enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.123.234  netmask 255.255.0.0  broadcast 192.168.255.255
        inet6 fe80::4315:7eff:ee23:0b15  prefixlen 64  scopeid 0x20<link>
        ether 40:66:3e:21:1a:76 txqueuelen 1000  (Ethernet)
        RX packets 368476  bytes 109880955 (104.7 MiB)
        RX errors 0  dropped 3  overruns 0  frame 0
        TX packets 499987  bytes 598240703 (570.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Dieser Anzeige können wir entnehmen, daß unsere IP 192.168.123.234 ist, unsere Netzwerkmaske 255.255.0.0 und wie unsere MAC Adresse lautet: 40:66:3e:21:1a:76 . Das ist konkret nicht wichtig, aber wenn Ihr mal Probleme habt einen Rechner im LAN zu erreichen, ist die MACADRESSE der Netzwerkkarte extrem wichtig.

Wie man auch sehen kann, gibt es eine IPv6 Adresse, aber die ist quasi fiktiv, weil nicht es gar nicht konfiguriert ist.

CHECK: Wir haben eine IP Adresse auf der Netzwerkkarte und eine korrekt Netzwerkmaske!

Nun prüfen wir noch, ob die Netzwerkkarte überhaupt irgendwo angeschlossen ist ( Klar geht das von Innen) :

$ ethtool enp2s0 | grep -i detected
    Link detected: yes

Stände da jetzt „no“ , wäre kein Kabel drin, bzw. die Gegenstelle z.B. Router / Switch usw. nicht eingeschaltet.

CHECK: Link detected! Die  Karte ist mit einer anderen Netzwerkkarte über ein Kabel verbunden!

Ping & Pong ?

Mit dem Befehl Ping kann man alle Rechner im LAN „anpingen“, also anstupsen,  die im gleichen Netzwerksegment liegen. Dies meint, daß Sie in der Netzwerkmaske unserer Netzwerkkarte ihre IP Adresse haben UND selbst eine Netzwerkmaske haben, die unsere IP einschliesst. Wie man das berechnet, könnt Ihr im Netz nachlesen.

Für das Beispiel oben war die Netzwerkmaske 255.255.0.0 was meint : mußgenaustimmen.mußgenaustimmen.egal.egal , womit 192.168.0.0 -> 192.168.255.255 abgedeckt sind. Also pinge ich jetzt mal meinen Router an:

$ ping 192.168.123.1
PING 192.168.123.1 (192.168.123.1) 56(84) bytes of data.
64 bytes from 192.168.123.1: icmp_seq=1 ttl=64 time=0.428 ms
64 bytes from 192.168.123.1: icmp_seq=2 ttl=64 time=0.332 ms
64 bytes from 192.168.123.1: icmp_seq=3 ttl=64 time=0.333 ms
64 bytes from 192.168.123.1: icmp_seq=4 ttl=64 time=0.324 ms
64 bytes from 192.168.123.1: icmp_seq=5 ttl=64 time=0.354 ms
64 bytes from 192.168.123.1: icmp_seq=6 ttl=64 time=0.406 ms

Wunderbar, er antwortet UND es kommt nicht zu Aussetzern bei der Sequenznummer, das würde nämlich ein Durchsatzproblem im Netz anzeigen. Die Zeitangabe bezeichnet die Laufzeit des Pakets das wir losgeschickt haben, bis wir eine Antwort darauf hatten. Es gilt: Je kleiner, je besser.  Wenn Zeiten vereinzelt nach oben Ausreisser haben, ist was im Netz los und der Durchsatz stimmt nicht. Das könnte dann z.b. „fremde“ Datenströme im LAN anzeigen oder einen ausgelasteten Prozesser ( auf der Gegenseite ) anzeigen. Da gibt es leider einiges an Möglichkeiten.

CHECK: Der Router ist erreichbar!

Traceroute

Wir gehen mal davon aus, daß der Router ok ist und die DSL Strecke auch. Jetzt will man aber z.b. testen, ob es auf der Strecke zum Lieblingsserver ein Problem gibt. Da ist Traceroute bzw. ein Derivat davon namens MTR Eurer Freund.

                             Packets               Pings
 Host                      Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 192.168.123.1           0.0%     3   16.0  10.8   0.4  16.0   9.0
    217.0.119.85
 2. 217.0.119.85            0.0%     3   15.7  15.8  15.7  16.1   0.0
 3. 217.0.65.250            0.0%     3   16.0  15.8  15.6  16.0   0.0
 4. 217.239.45.194          0.0%     2   21.5  21.7  21.5  21.9   0.0
 5. cr01.h.as24679.net      0.0%     2   33.0  33.0  33.0  33.0   0.0
 6. ar13.h.as24679.net      0.0%     2   48.1  40.6  33.0  48.1  10.7
 7. s120.resellerdesktop.de 0.0%     2   33.2  33.2  33.2  33.3   0.0

Die Loss Spalte zeigt hier 0.0% für „Alles OK “ an. Steht hier mehr als nur 0.0 , deutet das auf Probleme beim Datentransport von Paketen an dieser Stelle im Netz hin.

Hinweis: Jeder Rechner auf dieser Welt hat einen eigenen Weg zum Ziel. Wie Bergbäche zu Flüssen werden, so werden auch einzelne Benutzer eines DSL Anbieter vom Bach zum Fluß nur um am Ende in einen großen Teich zu fliessen. Deswegen kann es für den einen PC zu einem Problem kommen, wo sein Nachbar oder irgendwer anders kein Problem hat einen Server zu erreichen. Das ist NORMAL! Glaubt einem beim Telefonsupport zwar keiner, ist aber trotzdem so 🙂

CHECK: Der Server ist erreichbar ohne Paketverluste!

Wenn der Euch jetzt für Webanfragen nicht antwortet, will oder kann er vielleicht grade nicht . Jedenfalls liegt das nicht mehr in Eurer Hand.

Datenströme erfassen mit TCPDump

Ab hier müssen wir wieder ROOT User auf unserem Rechner werden, sonst klappt das nicht.

TCPDump kann Datenströme von der Netzwerkkarte abgreifen und anzeigen bzw. auf die Platte schreiben. Diverse Filter erlauben es, nur das zu sehen, was einen Interessiert. Hier im Beispiel den Aufruf von meinem Blog:

# tcpdump -n  host s120.resellerdesktop.de and port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
14:37:22.112794 IP 192.168.123.234.40802 > 83.246.80.133.http: Flags [S], seq 325157599, win 29200, options [mss 1460,sackOK,TS val 18499715 ecr 0,nop,wscale 7], length 0
14:37:22.146706 IP 83.246.80.133.http > 192.168.123.234.40802: Flags [S.], seq 2632340454, ack 325157600, win 28960, options [mss 1452,sackOK,TS val 3762553727 ecr 18499715,nop,wscale 7], length 0
14:37:22.146779 IP 192.168.123.234.40802 > 83.246.80.133.http: Flags [.], ack 1, win 229, options [nop,nop,TS val 18499749 ecr 3762553727], length 0
14:37:22.146854 IP 192.168.123.234.40802 > 83.246.80.133.http: Flags [P.], seq 1:97, ack 1, win 229, options [nop,nop,TS val 18499749 ecr 3762553727], length 96: HTTP: GET / HTTP/1.1
14:37:22.180314 IP 83.246.80.133.http > 192.168.123.234.40802: Flags [.], ack 97, win 227, options [nop,nop,TS val 3762553761 ecr 18499749], length 0
14:37:22.181118 IP 83.246.80.133.http > 192.168.123.234.40802: Flags [P.], seq 1:456, ack 97, win 227, options [nop,nop,TS val 3762553762 ecr 18499749], length 455: HTTP: HTTP/1.1 302 Found
14:37:22.181170 IP 192.168.123.234.40802 > 83.246.80.133.http: Flags [.], ack 456, win 237, options [nop,nop,TS val 18499783 ecr 3762553762], length 0
14:37:22.181429 IP 192.168.123.234.40802 > 83.246.80.133.http: Flags [F.], seq 97, ack 456, win 237, options [nop,nop,TS val 18499784 ecr 3762553762], length 0
14:37:22.214648 IP 83.246.80.133.http > 192.168.123.234.40802: Flags [F.], seq 456, ack 98, win 227, options [nop,nop,TS val 3762553796 ecr 18499784], length 0
14:37:22.214705 IP 192.168.123.234.40802 > 83.246.80.133.http: Flags [.], ack 457, win 237, options [nop,nop,TS val 18499817 ecr 3762553796], length 0

Die Uhrzeit mit Microsekunden dürfte noch erkennbar sein, dann folgt das Protokoll „IP“ (ja, gibt noch mehr) , es folgt die QuellIP mit Port und das Ziel mit Port und was danach kommt, sprengt den Rahmen des Artikels, aber so sieht eine Datenübertragung wirklich aus 🙂

Wenn wir jetzt mal sehen wollen, was da übertragen wird, schalten wir mit „-X“ den Inhalt ein:

# tcpdump -n -X  host s120.resellerdesktop.de and port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
14:44:15.222244 IP 192.168.123.234.40968 > 83.246.80.133.http: Flags [S], seq 2086838668, win 29200, options [mss 1460,sackOK,TS val 18912825 ecr 0,nop,wscale 7], length 0
    0x0000:  4500 003c 37b5 4000 4006 9dc1 c0a8 79EA  E..<7.@.@......"
    0x0010:  53f6 5085 a008 0050 7c62 a18c 0000 0000  S.P....P|b......
    0x0020:  a002 7210 1b09 0000 0204 05b4 0402 080a  ..r.............
    0x0030:  0120 9639 0000 0000 0103 0307            ...9........
14:44:15.256813 IP 83.246.80.133.http > 192.168.123.234.40968: Flags [S.], seq 4282242486, ack 2086838669, win 28960, options [mss 1452,sackOK,TS val 3762966832 ecr 18912825,nop,wscale 7], length 0
    0x0000:  4500 003c 0000 4000 3a06 db76 53f6 5085  E..<..@.:..vS.P.
    0x0010:  c0a8 79EA 0050 a008 ff3d d5b6 7c62 a18d  ...".P...=..|b..
    0x0020:  a012 7120 1580 0000 0204 05ac 0402 080a  ..q.............
    0x0030:  e04a 5130 0120 9639 0103 0307            .JQ0...9....
14:44:15.256889 IP 192.168.123.234.40968 > 83.246.80.133.http: Flags [.], ack 1, win 229, options [nop,nop,TS val 18912859 ecr 3762966832], length 0
    0x0000:  4500 0034 37b6 4000 4006 9dc8 c0a8 79EA  E..47.@.@......"
    0x0010:  53f6 5085 a008 0050 7c62 a18d ff3d d5b7  S.P....P|b...=..
    0x0020:  8010 00e5 b45d 0000 0101 080a 0120 965b  .....].........[
    0x0030:  e04a 5130                                .JQ0
14:44:15.256968 IP 192.168.123.234.40968 > 83.246.80.133.http: Flags [P.], seq 1:97, ack 1, win 229, options [nop,nop,TS val 18912859 ecr 3762966832], length 96: HTTP: GET / HTTP/1.1
    0x0000:  4500 0094 37b7 4000 4006 9d67 c0a8 79EA  E...7.@.@..g..."
    0x0010:  53f6 5085 a008 0050 7c62 a18d ff3d d5b7  S.P....P|b...=..
    0x0020:  8018 00e5 48d2 0000 0101 080a 0120 965b  ....H..........[
    0x0030:  e04a 5130 4745 5420 2f20 4854 5450 2f31  .JQ0GET./.HTTP/1
    0x0040:  2e31 0d0a 486f 7374 3a20 6d61 7269 7573  .1..Host:.marius
    0x0050:  2e62 6c6f 6767 742d 696e 2d62 7261 756e  .bloggt-in-braun
    0x0060:  7363 6877 6569 672e 6465 0d0a 5573 6572  schweig.de..User
    0x0070:  2d41 6765 6e74 3a20 6375 726c 2f37 2e34  -Agent:.curl/7.4
    0x0080:  332e 300d 0a41 6363 6570 743a 202a 2f2a  3.0..Accept:.*/*
    0x0090:  0d0a 0d0a                                ....
14:44:15.290765 IP 83.246.80.133.http > 192.168.123.234.40968: Flags [.], ack 97, win 227, options [nop,nop,TS val 3762966867 ecr 18912859], length 0
    0x0000:  4500 0034 84e4 4000 3a06 569a 53f6 5085  E..4..@.:.V.S.P.
    0x0010:  c0a8 79EA 0050 a008 ff3d d5b7 7c62 a1ed  ...".P...=..|b..
    0x0020:  8010 00e3 b3dc 0000 0101 080a e04a 5153  .............JQS
    0x0030:  0120 965b                                ...[
14:44:15.292457 IP 83.246.80.133.http > 192.168.123.234.40968: Flags [P.], seq 1:456, ack 97, win 227, options [nop,nop,TS val 3762966868 ecr 18912859], length 455: HTTP: HTTP/1.1 302 Found
    0x0000:  4500 01fb 84e5 4000 3a06 54d2 53f6 5085  E.....@.:.T.S.P.
    0x0010:  c0a8 79EA 0050 a008 ff3d d5b7 7c62 a1ed  ...".P...=..|b..
    0x0020:  8018 00e3 8e37 0000 0101 080a e04a 5154  .....7.......JQT
    0x0030:  0120 965b 4854 5450 2f31 2e31 2033 3032  ...[HTTP/1.1.302
    0x0040:  2046 6f75 6e64 0d0a 4461 7465 3a20 5765  .Found..Date:.We
    0x0050:  642c 2032 3120 5365 7020 3230 3136 2031  d,.21.Sep.2016.1
    0x0060:  323a 3434 3a31 3420 474d 540d 0a53 6572  2:44:14.GMT..Ser
    0x0070:  7665 723a 2041 7061 6368 652f 322e 342e  ver:.Apache/2.4.
    0x0080:  3138 2028 4665 646f 7261 2920 4f70 656e  18.(Fedora).Open
    0x0090:  5353 4c2f 312e 302e 316b 2d66 6970 730d  SSL/1.0.1k-fips.
    0x00a0:  0a4c 6f63 6174 696f 6e3a 2068 7474 7073  .Location:.https
    0x00b0:  3a2f 2f6d 6172 6975 732e 626c 6f67 6774  ://marius.bloggt
    0x00c0:  2d69 6e2d 6272 6175 6e73 6368 7765 6967  -in-braunschweig
    0x00d0:  2e64 652f 0d0a 436f 6e74 656e 742d 4c65  .de/..Content-Le
    0x00e0:  6e67 7468 3a20 3232 350d 0a43 6f6e 7465  ngth:.225..Conte
    0x00f0:  6e74 2d54 7970 653a 2074 6578 742f 6874  nt-Type:.text/ht
    0x0100:  6d6c 3b20 6368 6172 7365 743d 6973 6f2d  ml;.charset=iso-
    0x0110:  3838 3539 2d31 0d0a 0d0a 3c21 444f 4354  8859-1....<!DOCT
    0x0120:  5950 4520 4854 4d4c 2050 5542 4c49 4320  YPE.HTML.PUBLIC.
    0x0130:  222d 2f2f 4945 5446 2f2f 4454 4420 4854  "-//IETF//DTD.HT
    0x0140:  4d4c 2032 2e30 2f2f 454e 223e 0a3c 6874  ML.2.0//EN">.<ht
    0x0150:  6d6c 3e3c 6865 6164 3e0a 3c74 6974 6c65  ml><head>.<title
    0x0160:  3e33 3032 2046 6f75 6e64 3c2f 7469 746c  >302.Found</titl
    0x0170:  653e 0a3c 2f68 6561 643e 3c62 6f64 793e  e>.</head><body>
    0x0180:  0a3c 6831 3e46 6f75 6e64 3c2f 6831 3e0a  .<h1>Found</h1>.
    0x0190:  3c70 3e54 6865 2064 6f63 756d 656e 7420  <p>The.document.
    0x01a0:  6861 7320 6d6f 7665 6420 3c61 2068 7265  has.moved.<a.hre
    0x01b0:  663d 2268 7474 7073 3a2f 2f6d 6172 6975  f="https://mariu
    0x01c0:  732e 626c 6f67 6774 2d69 6e2d 6272 6175  s.bloggt-in-brau
    0x01d0:  6e73 6368 7765 6967 2e64 652f 223e 6865  nschweig.de/">he
    0x01e0:  7265 3c2f 613e 2e3c 2f70 3e0a 3c2f 626f  re</a>.</p>.</bo
    0x01f0:  6479 3e3c 2f68 746d 6c3e 0a              dy></html>.
14:44:15.292474 IP 192.168.123.234.40968 > 83.246.80.133.http: Flags [.], ack 456, win 237, options [nop,nop,TS val 18912895 ecr 3762966868], length 0
    0x0000:  4500 0034 37b8 4000 4006 9dc6 c0a8 79EA  E..47.@.@......"
    0x0010:  53f6 5085 a008 0050 7c62 a1ed ff3d d77e  S.P....P|b...=.~
    0x0020:  8010 00ed b1e6 0000 0101 080a 0120 967f  ................
    0x0030:  e04a 5154                                .JQT
14:44:15.292764 IP 192.168.123.234.40968 > 83.246.80.133.http: Flags [F.], seq 97, ack 456, win 237, options [nop,nop,TS val 18912895 ecr 3762966868], length 0
    0x0000:  4500 0034 37b9 4000 4006 9dc5 c0a8 79EA  E..47.@.@......"
    0x0010:  53f6 5085 a008 0050 7c62 a1ed ff3d d77e  S.P....P|b...=.~
    0x0020:  8011 00ed b1e5 0000 0101 080a 0120 967f  ................
    0x0030:  e04a 5154                                .JQT
14:44:15.326737 IP 83.246.80.133.http > 192.168.123.234.40968: Flags [F.], seq 456, ack 98, win 227, options [nop,nop,TS val 3762966903 ecr 18912895], length 0
    0x0000:  4500 0034 84e6 4000 3a06 5698 53f6 5085  E..4..@.:.V.S.P.
    0x0010:  c0a8 79EA 0050 a008 ff3d d77e 7c62 a1ee  ...".P...=.~|b..
    0x0020:  8011 00e3 b1cb 0000 0101 080a e04a 5177  .............JQw
    0x0030:  0120 967f                                ....
14:44:15.326802 IP 192.168.123.234.40968 > 83.246.80.133.http: Flags [.], ack 457, win 237, options [nop,nop,TS val 18912929 ecr 3762966903], length 0
    0x0000:  4500 0034 37ba 4000 4006 9dc4 c0a8 79EA  E..47.@.@......"
    0x0010:  53f6 5085 a008 0050 7c62 a1ee ff3d d77f  S.P....P|b...=..
    0x0020:  8010 00ed b19f 0000 0101 080a 0120 96a1  ................
    0x0030:  e04a 5177                                .JQw

Alles was man nicht in Klartext lesen kann, sind meistens Optionen innerhalb des IP Datenpakets. Im obigen Fall handelt es sich eindeutig um TCP Datenverkehr. Wer sich dafür interessiert: hier gibt es mehr

Wie man in dem Dump oben sehen kann, wird HTTP in Klartext übermittelt. Damit keine geheimen Daten verloren gehen, wurde HTTPS erfunden. Wer sich die Mühe macht und den Datensalat oben zusammen setzt, wird das hier sehen:

HTTP/1.1 302 Found
Date: Wed, 21 Sep 2016 12:44:14 GMT
Server: Apache/2.4.18 (Fedora) OpenSSL/1.0.1k-fips
Location: https://marius.bloggt-in-braunschweig.de/
Content-Length: 225
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://marius.bloggt-in-braunschweig.de/">here</a>.</p>
</body></html>

Genau, daß ist einfach die Umleitung von HTTP auf HTTPS.

TCPDump kommt immer dann zum Einsatz, wenn man sehen will, was wirklich über die Leitung gegangen ist. Der Browser behauptet zwar, daß X=U ist, aber sagte das auch der Server so ? 😀

Zurück zu den lokalen Tools: iptraf-ng

IPtraf ist eine wahre Schatzkiste an unterschiedlichen Funktionen. Es zeigt live an, „wer mit wem redet“, Statistiken über die Häufigkeit von Paketen und wer vielviel Daten transportiert hat. Alles zu erklären sprengt genau wie bei TCPDump den Rahmen. Da es mit einem grafischen Interface in der Konsole daher kommt, ist es extrem leicht zu bedienen.

Daher einfach installiere und ausprobieren.

bildschirmfoto-vom-2016-09-21-15-02-44Durchsatzstatistik mit : ifstat

Wer nur eine kleine Statistik braucht, der kann einfach ifstat fragen :

# ifstat
ifstat: history is stale, ignoring it.
#2212.1804289383 sampling_interval=2 time_const=60
Interface        RX Pkts/Rate    TX Pkts/Rate    RX Data/Rate    TX Data/Rate  
                 RX Errs/Drop    TX Errs/Drop    RX Over/Rate    TX Coll/Rate  
lo                   276 0           276 0          8674 0          8674 0      
                       0 0             0 0             0 0             0 0      
enp2s0            392203 2        521196 1       121730K 449     601935K 244    
                       0 3             0 0             0 0             0 0      
virbr0                 0 0             0 0             0 0             0 0      
                       0 0             0 0             0 0             0 0

Statistiken mit : vnstat

Auch mit vnstat kann man Statistiken zu seinem Interface abrufen. Allerdings müssen die erst gesammelt werden, was bedeutet, daß man zwei Aufrüfe benutzen muß:

# vnstat -u -i enp2s0
# vnstat -i enp2s0
Database updated: Wed Sep 21 17:01:50 2016

   enp2s0 since 09/21/16

          rx:  1.35 MiB      tx:  1.20 MiB      total:  2.55 MiB

   monthly
                     rx      | Statistiken mit : vnstat    tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       Sep '16      1.35 MiB |    1.20 MiB |    2.55 MiB |    0.01 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated         1 MiB |       1 MiB |       2 MiB |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
         today      1.35 MiB |    1.20 MiB |    2.55 MiB |    0.34 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated         1 MiB |       1 MiB |       2 MiB |

Dafür ist das keine Momentaufnahme, sondern ein wohl definierter Zeitraum. Damit lassen sich also Feststellungen machen, wieviel Traffic eine Anwendung verursacht hat. Natürlich nur, wenn nichts anderes stört.

Womit wir beim Schluß des Artikels wären und der Frage, ob da noch mehr existiert ?

Ja, das tut es. Will man z.b. sein Heimatnetzwerk verlassen, muß man dem Rechner gesagt haben, welcher andere Computer dem eigenen PC die Pakete abnehmen soll, um sie ins Internet weiter zu leiten. Dies geschieht über die Route, welche man mit dem Befehl route sehen und manipulieren kann.  Da die meisten von Euch nicht in der Konsole arbeiten werden, sondern dem Gnome/Cinnamon im Netzwerkmanager gesagt haben, was er tun soll, schauen wir uns nur schnell die Ausgabe an und verzichten heute auf die Manipulation:

# route -n
Kernel IP Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.121.1   0.0.0.0         UG    100    0        0 enp2s0
192.168.121.0   0.0.0.0         255.255.0.0     U     100    0        0 enp2s0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

Was man sieht sind alle verfügabren Netze und das ist ein Netz mehr als wir erwarten würden. Das Netzwerk 192.168.122.0, was man aufgrund der Netzmaske als ein Class-C Netz /24 identifizieren kann, wird von der Virtualisierung benutzt. Das wären z.B. VirtualBox oder das schon bei Fedora vorhandene Boxen Tool.

Das andere 192.168.121.0 Netzwerk, ist das normale LAN Netz (meines PCs) Bei Euch wird das anders aussehen.

Das Ziel 0.0.0.0 ist „Der Rest der Welt“ und wird vom Rechner mit der IP 192.168.121.1  „geroutet“. Den nennt man deswegen auch Gateway, nämlich Gateway in ein anderes Netzwerk. Man kann in einem LAN mehrere Gateways haben, man muß als nur in dieser Routentabelle dafür sorgen, daß jedes Zielnetzwerk mit seinem Gateway eingetragen ist. Dazu gehört auch, daß das Gateway mit einem Bein (und korrekter IP und Netzwerkmaske ) in eigenen LAN steht.

Damit soll es für heute genug sein.

Update um 9:09 Uhr :

Auch dieser Beitrag wurde von WordPress entgegen des Planungstermins, nicht angezeigt.