Praxis TCP/IP Kursnotizen
- Live Script: https://netzwerke.kurs.planexzess.de
- Linuxhotel Lab-Server (Bewertung, Passwort ändern etc): https://lab.linuxhotel.de
- Wiki https://wiki.lab.linuxhotel.de/doku.php?id=tcp-ip:start
- Trainer Stefan Hofmann <sh@planexzess.de>
- Literaturliste
- IBM Redbook TCP/IP Tutorial and Technical Overview (teilweise veraltet)
http://www.redbooks.ibm.com/redbooks/pdfs/gg243376.pdf - TCP/IP Illustrated, Volume 1 2nd Edition - The Protocols
(2 Autoren, überladen, etwas unübersichtlich)
Kevin R. Fall (RIP), W. Richard Stevens
ISBN: 978-0-321-33631-6 - Computer-Netzwerke (deutsch)
Harald Zisler, Rheinwerk-Verlag
ISBN 978-3-8362-8948-1
- IBM Redbook TCP/IP Tutorial and Technical Overview (teilweise veraltet)
- Organisationen und Institutionen
- IEEE - Institute of Electrical and Electronics Engineers
- IETF - Internet Engineering Task Force
Mother of RfCs- https://www.ietf.org
- RfC-Suche: https://www.rfc-editor.org/search/rfc_search_detail.php
- RfCs “htmlized”: https://datatracker.ietf.org/
- ICANN - Internet Corporation for Assigned Names and Numbers
- https://www.icann.org/
- IANA - Internet Assigned Numbers Authority
Jon Postel war die IANA -> RfC 2468
1 Tag 1
Einführung
Praxis
1.1 Hardware. Kernel und L1/L2
- Kernel und Module
lspci | grep -E -i net lspci -s 00:19:0 -v lspci -s 00:19:0 -k lsmod modinfo e1000e
- Abgebildete Interfaces
ifconfig # bitte nicht mehr ip l # ip link show
- ethtool
ethtool enp0s25 # show link state and negotiation ethtool -p enp0s25 # watch the blinken lights ethtool -i enp0s25 # kernel modules and firmware ethtool -S enp0s25 # stats. too much information ethtool -S enp0s25 | egrep "fail|drop|coll|err"
- Adressen
ifconfig enp0s25 # bitte nicht mehr ip ad sh dev enp0s25 # ip addr show dev enp0s25 ip a # shows all ip addr show ip a --br --color # brief and color view ip -s ad sh dev eth0 # with statistics
- localhost Adressen auf dem loopback Device
ip ad sh dev lo
- arp
arp -n # numerisch arp -d <ip> # delete arp -s ... # set static ip -4 n # ip neigh show ip n f all # ip neigh flush all (auch arp)
- ping
ping 127.0.0.1 ping ::1 # loopback/localhost ping 192.168.1.222 # eigene Adressen ping 192.168.1.223 # lokaler Host im eigenen Netz ping 9.9.9.9 # remote Host
1.2 Übungen
- Löschen Sie Ihren
arp-cache - Suchen Sie sich einen Nachbarn Einer bleibt passiv, der andere pingt. Prüfen Sie beide den arp-cache
- Pingen Sie ein entfertes Ziel Prüfen Sie den arp-cache
- Wiederholen Sie das mit einem anderen Ziel Was passiert?
1.2.1 Lösung
arp -n # cache ip -4 neigh show # mit iproute2 ip -4 n # shortcut ip n f all # shortcut for flush all ping 192.168.1.222 # ping lokal ping 9.9.9.9 # ping remote ip -4 neigh show
- Im Arp befinden sich die MAC-Adressen der Teilnehmer.
- Für die externen Adressen finden wir die MAC Adresse des Gateways
1.3 Diagnose und Debugging
- tcpdump
man pcap-filters tcpdump # too much information ;-) tcpdump -i enp0s25 -n # numerisch auf spec. if tcpdump -i enp0s25 -n "arp or icmp or icmp6" # mit PCAP Filter tcpdump -e -i enp0s25 -n "arp or icmp or icmp6" # mit ethernet frames tcpdump -w <file> ... # zur späteren Analyse z.B. wireshark dumpcap ... # moderneres Verfahren ohne Anzeige
- ping
- kann mehr als man denkt
ping 192.168.1.5 ping -f 192.168.1.5 # flood ping ping -R ... # record route ping -s 2000 ... # big packets (fragmentation) ping -s $(1500-28) -M do ... # don't fragmentation ping -i 1 -c 10 ... # interval and count
- traceroute
traceroute www.fm # over UDP traceroute -I www.fm # over ICMP tracepath heise.de # PMTU discovery
- Wireshark
- ist nur das Protokoll-Analyse-Tool
Die Capture-Engine von Wireshark heißt - dumpcap
- kann auch seperat als Capture-Tool installiert werden
- Niemals wireshark auf einen Server installieren!
Praxis
1.4 Adressen
- RfC 1918
- Netzklassen, Netzmasken und CIDR
1.5 Wireshark und tcpdump/dumpcap
1.6 Übung 1
- Capturen Sie zwei pings (
ping -4). Leeren Sie vorher den neigbor cache. - Analysieren Sie mit Hilfe der Display-Filter die Kommunikation
Tipp: arp, icmp- vor allem hinsichtlich Quellen und Zielen
- L2 vs. L3
1.6.1 Lösung
- bei externen Zielen unterscheiden sich die Quellen und Ziele auf L2 und L3
- L2: default gateway
- L3: end-to-end
1.7 Routing
- Kernel Routing Tabelle
netstat -r # obsolet BSD route -n # obsolet IPv6 schlecht ip r
- Adresse setzen
ifconfig enp0s25 10.11.12.13 netmask 255.255.255.0 # keine gute Idee ifconfig enp0s25:0 10.11.12.13/24 # CIDR and alias ip addr add dev enp0s25 10.11.12.13/24 # besser ip addr add dev enp0s25 fd0a:b:affe::25/64 # IPv6 arp -n # kein arp mehr ip neig # aber neighbor
1.8 Übung 2
- Capturen Sie mit wireshark ein traceroute. (ICMP basiert) (
traceroute -I)
(Wer sich langweilt, kann auchtracepathversuchen) - Analysieren Sie mit Hilfe der Display-Filter die Kommunikation
Tipp: arp, icmp, dns - Was ist der Trick?
1.8.1 Lösung
- die TTL wird stufenweise erhöht
- dadurch erzeugen Router eine ICMP-Fehlermeldung
- damit “verraten” sie ihren Standort
- DNS vor und zurück zur Auflösung des Hostnamens
1.9 Diagnose und Debugging
ping google.de ping -c 5 -s $((1500-28)) -M do google.de # mit DF (don't fragment) und MTU 1500 traceroute -I www.fm # ICMP traceroute tracepath www.fm mtr www.fm
2 Tag 2
Praxis
2.1 Routing
- Komplexe Routing Upgebung aufgebaut
- Detaillierte Beschreibung Schritt für Schritt im Wiki
2.1.1 Übung Next-Hop Prinzip
- Analysieren Sie auf der vm, wie weit sie mit dem Ping kommen
- Selbst
- Router-IP (br1)
- Entfernte IP (br0)
- Entfernter Host (neighbor)
- Entfernte VM
- Analysieren Sie gründlich, d.h. benutzen sie Werkzeuge wie
tcpdumpauf dem jeweiligen Interfaces - Was kommt an? Bis wohin?
2.1.2 Übung back-route
- Wiederholen Sie die vorherige Übung.
- Was kommt auf dem Neighbor-Host an? Wie reagiert der entfernte Host?
2.2 NAT und Masquerading
2.2.1 Praxis
- VM1 Masqueraden
- Manuell
- Persistent als Systemdienst
2.2.2 Übung Wireshart
- Lassen Sie ein ping auf der vm laufen gegen ein externes Ziel, z.B. 9.9.9.9
- Capturen Sie auf beiden Interfaces (br0 und br1) das Ping. Analysieren Sie tief und gründlich.
- Ändern Sie ggfs. die Sortierung
2.3 DHCP
- vm1 klonen
- DHCP
- Protokollanalyse DHCP und Einführung L4/UDP
- DHCP mit static Leases
2.4 Organe
2.4.1 IANA https://www.iana.org/
2.4.2 IETF. Mother of RfC
- Datenbank (https://www.ietf.org/standards/rfcs/)
- Suche (https://www.rfc-editor.org/search/rfc_search_detail.php) (htmlied: https://datatracker.ietf.org/)
3 Tag 3
3.1 DNS (v4)
3.1.1 DNS Minimal
- VM1 dnsmasq installieren
# /etc/hosts 127.0.0.1 localhost 172.31.39.1 router.zone39.linuxhotel.de router 172.31.39.101 vm1.zone39.linuxhotel.de vm1 fd0a:384d:1f5e:d0d3::101 vm1.zone39.linuxhotel.de vm1 172.31.39.101 www.zone39.linuxhotel.de www fd0a:384d:1f5e:d0d3::101 www.zone39.linuxhotel.de www 192.168.1.17 debian.zone39.linuxhotel.de debian
host,digtesten
3.2 L4 / Socket Kommunikation
3.2.1 Diagnosetools auf L4
- netstat/ss/lsof
- Ports auflisten
ss -tun # TCP/UDP numerisch ss -tlpn # mit LISTENer und PROGs ss -talpn # a = l + ESTABLISHED lsof +i :22 # Abfrage Port 22
- nc/telnet
- Sockets aufbauen und benutzen
nc -l -p 4444 # generischer Server nc google.de 80 # generischer client
- nmap
- andere Hosts scannen
nmap -sP ... # ping scan nmap -sS ... # SYN (Stealth) scan nmap -A ... # Aggressiv
- DNS Diagnose (Resolver)
- nslookup
- nicht mehr verwenden
- host
- Ersatz
- dig
- Profitool
nslookup google.de # einfache Abfrage nslookup # interaktiv > set type=NS > google.de > ... > google.de nameserver = ns1.google.com. > ... > server ns1.google.com > set type=ANY > google.de > ... > Ctrl+D host google.de dig google.de dig google.de NS dig +multiline +dnssec @ns2.google.com google.de dig -x <reverse>
3.2.2 Wireshark und SSL
- Browser starten mit einer Environment-Variable
SSLKEYLOGFILE
SSLKEYLOGFILE=/tmp/sslkeylog firefox &
- im
WiresharkEinstellungen/Protokolle/TLS. Pfad hinterlegen - Capturen
3.3 IPv6. LLA und ULA
- Prefix, Subnet-ID und Interface-ID
- Verwendung LLA mit Interface-Identifier
- ULA. Statische Konfiguration Wirt + VM1