====== Netzwerkmessung ====== 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. ===== ARP-Spoofing ===== 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 -t 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]] ===== Trafficanalyse / Bandbreitenmessung ===== Zur Analyse des Traffics gibt es verschiedene Programme. Einige werden hier vorgestellt. ==== iftop ==== Mit ''iftop'' kann man live die Bandbreitenmessung vornehmen. Das Programm wird wie folgt installiert: apt-get install iftop Aufgerufen wird ''iftop'' einfach mit: iftop {{::iftop-gui.png?200|iftop}} ==== bmon ==== Mit ''bmon'' kann man live die Bandbreitenmessung vornehmen. Das Programm wird wie folgt installiert: apt-get install bmon Aufgerufen wird ''bmon'' einfach mit: bmon {{::bmon-gui.png?200|bmon}} ==== iptraf ==== ''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 {{::iptraf-gui.png?200|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 ==== tcpdump ==== 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 [FILTER] {{::tcpdump-gui.png?200|tcpdump}} **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** * bestimmter Port aber nicht von Quell-/Zielhost tcpdump -i 'port && ! (src host || dst host )' * bestimmter Port von Quell-/Zielhost aber nicht Port 22 tcpdump -i port and src host or dst host and not port 22 * Nur Ping (ICMP) tcpdump -i 'icmp' ==== termshark ==== Mit Termshark kann man mitgeschnittene Dateien von tcpdump oder whireshark öffnen und im Terminal untersuchen. termshark -r ==== ntop ==== 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://:3000]] Das Programm wird wie folgt installiert: apt-get install Gestartet wird ''ntop'' einfach mit: service ntop start {{::ntop-gui.png?200|ntop}} ==== iperf ==== Mit [[https://iperf.fr/|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 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 | | 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 | | run in client mode, connecting to | | -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 | | 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 | ===== WLAN ===== Zur Messung der Signalqualität und -stärke kann man das Tool ''wavemon'' verwenden. apt-get install wavemon ====== Links ====== [[http://www.ubuntugeek.com/bandwidth-monitoring-tools-for-ubuntu-users.html| Diverse Tools]] [[http://service.avm.de/support/de/SKB/FRITZ-Box-6360/514:Geringe-Uebertragungsgeschwindigkeit-bei-WLAN-Verbindungen|WLAN Übertragungsmessung]]