Praxis TCP/IP Kursnotizen

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. intern
    • D.h. auf einen Rechner im eigenen LAN-Segment
  2. extern
    • auf eine externe Adresse

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 auch tracepath versuchen)
  • 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

  1. Bridges
  2. VMs einrichten
  3. Netzwerkkonfiguration mit systemd-networkd
  4. Dynamisches Routing mit frr ospfd

2.1.1 Übung Next-Hop Prinzip

  • Analysieren Sie auf der vm, wie weit sie mit dem Ping kommen
    1. Selbst
    2. Router-IP (br1)
    3. Entfernte IP (br0)
    4. Entfernter Host (neighbor)
    5. Entfernte VM
  • Analysieren Sie gründlich, d.h. benutzen sie Werkzeuge wie tcpdump auf 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

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, dig testen

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 Wireshark Einstellungen/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

3.4 Automatische Adresskonfiguration