Dieser Artikel befasst sich mit der Netzwerkmessung mit Linux. Folgende Fragen werden hier behandelt.
Wie kann ich Netzwerkmessungen mit einem Linux-Client machen und analysieren? Wie kann ich Netzwerktraffic mitschneiden?
Wenn mann einen managebaren Switch hat, dann kann man „Port-Mirroring“ betreiben. Hierbei wird der Traffic eines Ports auf einen anderen Port gespiegelt.
Das an dem Spiegelport angeschlossene Gerät kann dann den gesamten Traffic des gespiegelten Ports einsehen.
Wenn ein solcher Switch nicht vorhanden ist, dann behilft man sich mit Softwaretools.
Mit ARP-Spoofing kann der Netzwerktraffic für einen Netzwerkclient abgefangen werden
Hier gibt sich der Linux-Client als ein anderer Netzwerkclient aus.
ARP-Spoofing unter Linux kann z.B. mit dem Programm arpspoof
realisiert werden. Es befindet sich im Paket „dsniff“.
Installiert wird dies wie folgt:
apt-get install dsniff
arpspoof sendet kontinuierlich gefälschte ARP-Pakete an ein Target oder ein Netz und gibt dem/denen vor ein anderer Host zu sein.
So kann man das ganze starten:
arpspoof -i <INTERFACE> -t <TARGET> <HOST>
Wenn hier das Target weggelassen wird, dann sendet man per Broadcast im ges. Netzwerk.
Damit das Mitschneiden des Traffics für den zu spoofenden Client transparent ist, aktiviert man das weiterleiten des Traffics an diesen. Sonst verwirft der Linux-Client den Traffic und der zu spoofende Client erhält nichts.
Temporär kann dies, mit sofortiger Wirkung, so erfolgen:
echo 1 > /proc/sys/net/ipv4/ip_forward
Wenn das Weiterleiten immer erfolgen soll, dann entkommentiert man folgende Zeile (einfach die „#“, am Anfang, entfernen).
vi /etc/sysctl.conf
#net.ipv4.ip_forward=1
Danach muss der Rechner allerdings neugestartet werden.
Quelle: http://www.irongeek.com/i.php?page=security/arpspoof
Zur Analyse des Traffics gibt es verschiedene Programme. Einige werden hier vorgestellt.
Mit iftop
kann man live die Bandbreitenmessung vornehmen.
Das Programm wird wie folgt installiert:
apt-get install iftop
Aufgerufen wird iftop
einfach mit:
iftop
Mit bmon
kann man live die Bandbreitenmessung vornehmen.
Das Programm wird wie folgt installiert:
apt-get install bmon
Aufgerufen wird bmon
einfach mit:
bmon
iptraf
ist ein IP LAN Monitor. Hier werden verschiedene Statistiken ausgegeben.
Dies ist ein Tool zur Echtzeitmessung.
Das Programm wird wie folgt installiert:
apt-get install iptraf
Aufgerufen wird iptraf
einfach mit:
iptraf
Auf Host „A“ folgendes starten
nc -l -v 1234
Auf Host „B“ in einem Terminal dies ausführen
dd if=/dev/zero bs=1024k count=1024 | nc host/ip 1234
und auf dem zweitem Terminal iftraf starten
Mit tcpdump
lässt sich der Traffic einer Schnittstelle mitscheiden.
Das Programm wird wie folgt installiert:
apt-get install tcpdump
Aufgerufen wird tcpdump
einfach mit:
tcpdump -i <INTERFACENAME> [FILTER]
Einige Filter (Quelle: https://wiki.ubuntuusers.de/tcpdump/)
Option | Werte | Bedeutung |
---|---|---|
host | IP-Adresse (oder auch Hostname) | Es werden nur Pakete mitgeschnitten, die entweder als Quelle oder als Ziel die angegebene IP-Adresse besitzen. Anstelle einer IP-Adresse kann auch ein Hostname angegeben werden (aber nur, wenn nicht das -n Flag (s.o.) benutzt wird). |
net | Netzwerk-Bereich in CIDR-Schreibweise | Es werden nur Pakete mitgeschnitten, die entweder als Quelle oder als Ziel eine IP-Adresse aus dem angegebenen Netzwerkbereich besitzen |
port | eine Zahl von 0 bis 65535 | Schneidet Pakete mit, die entweder auf Quell- oder auf Ziel-Seite den angegebenen Port besitzen |
portrange | 0-65535 | Schneidet Pakete mit, die entweder auf Quell- oder auf Ziel-Seite einen Port in dem angegebenen Portbereich besitzen |
src | host, net, port oder portrange | Es werden nur Pakete mitgeschnitten, die als Quelle den angegebenen Wert besitzen |
dst | host, net, port oder portrange | Es werden nur Pakete mitgeschnitten, die als Ziel den angegebenen Wert besitzen |
proto | ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp und udp | Netzwerkprotokoll, in dem Pakete mitgeschnitten werden sollen |
Beispiele
tcpdump -i <INTERFACE> 'port <PORT_NUMBER> && ! (src host <IP_OR_HOST> || dst host <IP_OR_HOST>)'
tcpdump -i <INTERFACE> port <PORT_NUMBER> and src host <IP_OR_HOST> or dst host <IP_OR_HOST> and not port 22
tcpdump -i <INTERFACE> 'icmp'
Mit Termshark kann man mitgeschnittene Dateien von tcpdump oder whireshark öffnen und im Terminal untersuchen.
termshark -r <DATEI>
Mit ntop
kann der Netzwerktraffic über längere Zeit aufgenommen und später grafisch darstellt werden.
Man erreicht die Oberfläche von ntop
über eine Webseite http://<HOST>:3000
Das Programm wird wie folgt installiert:
apt-get install
Gestartet wird ntop
einfach mit:
service ntop start
Mit ipferf kann man eine Bandbreitenmessung von einen Windows-Client zu einem anderen Windows-client machen.
Dazu führt man folgende Befehle in der CMD aus:
*Server
iperf -s
Client2
iperf -c <IP_ODER_DNS_NAME_VON_CLIENT1>
Hier die möglichen Parameter aus der Hilfe von iperf 3.0.7:
( Die Angaben [KMG] sind die möglichen Größenbezeichnungen für kilo-, mega-, oder giga-)
Parameter | zusätzl. Angaben | Beschreibung |
---|---|---|
Server or Client | ||
-p, –port | # | server port to listen on/connect to |
-f, –format | [kmgKMG] | format to report: Kbits, Mbits, KBytes, MBytes |
-i, –interval | # | seconds between periodic bandwidth reports |
-F, –file name | xmit/recv the specified file | |
-A, –affinity n/n,m | set CPU affinity | |
-B, –bind | <host> | bind to a specific interface |
-V, –verbose | more detailed output | |
-J, –json | output in JSON format | |
-d, –debug | emit debugging output | |
-v, –version | show version information and quit | |
-h, –help | show this message and quit | |
Server specific | ||
-s, –server | run in server mode | |
-D, –daemon | run the server as a daemon | |
Client specific | ||
-c, –client | <host> | run in client mode, connecting to <host> |
-u, –udp | use UDP rather than TCP | |
-b, –bandwidth | #[KMG][/#] | target bandwidth in bits/sec (0 for unlimited) default 1 Mbit/sec for UDP, unlimited for TCP) (optional slash and packet count for burst mode) |
-t, –time | # | time in seconds to transmit for (default 10 secs) |
-n, –bytes | #[KMG] | number of bytes to transmit (instead of -t) |
-k, –blockcount | #[KMG] | number of blocks (packets) to transmit (instead of -t or -n) |
-l, –len | #[KMG] | length of buffer to read or write (default 128 KB for TCP, 8 KB for UDP) |
-P, –parallel | # | number of parallel client streams to run |
-R, –reverse | run in reverse mode (server sends, client receives) | |
-w, –window | #[KMG] | TCP window size (socket buffer size) |
-C, –linux-congestion | <algo> | set TCP congestion control algorithm (Linux only) |
-M, –set-mss | # | set TCP maximum segment size (MTU - 40 bytes) |
-N, –nodelay | set TCP no delay, disabling Nagle's Algorithm | |
-4, –version4 | only use IPv4 | |
-6, –version6 | only use IPv6 | |
-S, –tos N | set the IP 'type of service' | |
-L, –flowlabel N | set the IPv6 flow label (only supported on Linux) | |
-Z, –zerocopy | use a 'zero copy' method of sending data | |
-O, –omit N | omit the first n seconds | |
-T, –title str | prefix every output line with this string | |
–get-server-output | get results from server |
Zur Messung der Signalqualität und -stärke kann man das Tool wavemon
verwenden.
apt-get install wavemon