Thema: networking
-
Einen DNS-Eintrag mit Rückwegabsicherung ändern: TTL absenken, Umschaltung und Prüfung
Eine DNS-Änderung erreicht Nutzer nur so schnell, wie die alte TTL in den Caches abläuft; deshalb die TTL eine volle alte TTL-Periode vor der Änderung absenken, das alte Ziel weiterlaufen lassen, bis das neue überall bestätigt ist, und berücksichtigen, dass Resolver veraltete Daten ausliefern dürfen, wenn die autoritativen Server nicht erreichbar sind, wie es RFC 8767 zulässt.
-
Der TLS-1.3-Handshake im Überblick
TLS 1.3 handelt Schlüssel in einem einzigen Roundtrip aus: Das ClientHello trägt bereits einen Key Share, das ServerHello antwortet mit seinem eigenen, und alles danach, einschliesslich des Zertifikats, ist verschlüsselt. Resumption nutzt Pre-Shared Keys aus Session-Tickets; 0-RTT Early Data ist optional und wiederholbar (replayfähig).
-
MTU, Fragmentierung und Path-MTU-Discovery
Ethernet trägt IP-Pakete mit 1500 Byte, Tunnel und PPPoE tragen weniger, und IPv6-Router fragmentieren nie. Path-MTU-Discovery hängt von ICMP-Meldungen des Typs Packet Too Big ab; werden diese gefiltert, verschwinden grosse Pakete spurlos, während kleine durchkommen – das klassische Schwarze Loch, das sich mit MSS-Clamping oder Sondierung auf der Packetization-Schicht umgehen lässt.
-
DNS-Einträge, von denen ein Webdienst abhängt
A, AAAA und CNAME bilden Namen auf Adressen ab, MX leitet E-Mails, TXT trägt Verifizierungen und Richtlinien, CAA schränkt Zertifizierungsstellen ein, NS delegiert Zonen; vor und nach Änderungen die massgeblichen Antworten prüfen, nicht nur einen zwischengespeicherten Resolver.
-
Heim-Internetdurchsatz wiederholbar messen: ein Protokoll mit festem Pfad und festem Zeitplan
Ein vorgeschlagenes Protokoll für eine Reihe von Durchsatz- und Latenzmessungen im Haushalt: Gerät, kabelgebundener oder drahtloser Pfad, Testwerkzeug und Server konstant halten, drei aufeinanderfolgende Tests in drei festen täglichen Zeitfenstern über zwei Wochen durchführen, Verbindungsanzahl und Haushaltsaktivität bei jedem Lauf protokollieren, und RFC 6349s Bandbreiten-Latenz-Produkt sowie den Unterschied zwischen einzelner und mehrfacher Verbindung als Gründe dafür heranziehen, warum Werkzeugeinstellungen die Zahl verändern; es wird nichts über einen Anbieter behauptet.
-
HTTP/1.1, HTTP/2 und HTTP/3: die Unterschiede, die ein Betriebsteam bemerkt
HTTP/1.1 sendet pro TCP-Verbindung eine Anfrage nach der anderen in Textrahmung; HTTP/2 multiplext binäre Streams über eine TLS-Verbindung mit HPACK-Kompression, stockt aber weiterhin bei TCP-Verlust; HTTP/3 läuft über QUIC auf UDP, beseitigt das Head-of-Line-Blocking auf Transportebene und wird über Alt-Svc oder HTTPS-DNS-Einträge entdeckt.
-
SSH-Tunnel: lokale, entfernte und dynamische Portweiterleitung
ssh -L legt einen entfernten Dienst auf einem lokalen Port offen, -R legt einen lokalen Dienst auf dem entfernten Host offen, -D stellt einen SOCKS-Proxy bereit, und -J springt über eine Bastion; diese mit -N kombinieren, an localhost binden und ExitOnForwardFailure setzen, damit eine nicht einrichtbare Weiterleitung keine still nutzlose Sitzung hinterlässt.
-
Wie lange nutzten Clients nach einer DNS-Änderung weiter die alte Adresse, und welche Resolver oder Clients ignorierten die TTL?
Offene Frage: RFC 1035 definiert die TTL als das Zeitintervall, in dem ein Eintrag gecacht werden darf, bevor die Quelle erneut konsultiert wird, und RFC 8767 erlaubt Resolvern, veraltete Daten weiterzuverwenden, wenn autoritative Server nicht erreichbar sind; wie lange hielt nach einer echten Eintragsänderung mit gesenkter TTL der Verkehr zur alten Adresse an, und welche Resolver, Bibliotheken oder langlebigen Prozesse waren für den Ausläufer verantwortlich?
-
Tries für Präfix-Lookups: Autovervollständigung und Longest-Prefix-Matching
Ein Trie speichert Strings mit einem Knoten pro gemeinsamem Präfix, sodass die Kosten eines Lookups nur von der Schlüssellänge abhängen, unabhängig davon, wie viele Schlüssel existieren; alle Schlüssel mit einem Präfix bilden einen Teilbaum, und das längste gespeicherte Präfix einer Anfrage lässt sich in einem einzigen Durchlauf finden; für Autovervollständigung und Routing einsetzen, und zuerst mit einem sortierten Array vergleichen.
-
Timeouts, Wiederholungen und Backoff mit Jitter
Jeder entfernte Aufruf braucht ein Timeout; Wiederholungsversuche müssen begrenzt sein, dürfen nur auf idempotente oder durch einen Idempotenzschlüssel geschützte Operationen angewendet werden und werden mit exponentiellem Backoff plus Jitter gestaffelt, um synchronisierte Wiederholungsstürme zu vermeiden.
-
Ein minimales nftables-Regelwerk für einen einzelnen Server
Eine einzige inet-Tabelle mit einer Input-Chain, die standardmässig verwirft, etablierten und verwandten Verkehr sowie Loopback zulässt, die vom Stack benötigten ICMP-Typen und die aufgeführten Dienst-Ports akzeptiert; vor dem Laden mit nft -c -f geprüft und mit einem zeitgesteuerten Rollback geladen, damit ein Fehler nicht aussperrt.
-
HTTP-Keep-Alive und Verbindungswiederverwendung: Pools, Idle-Timeouts und das Wettrennen um die veraltete Verbindung
HTTP/1.1 hält eine Verbindung für weitere Anfragen offen, sofern kein Connection: close gesendet wird, was ab der zweiten Anfrage jeweils einen TCP- und TLS-Handshake einspart; der Client muss über die Lebensdauer des Prozesses einen Pool führen, jeden Antwort-Body lesen und sein Idle-Timeout unter dem des Servers ansetzen, damit er keine bereits vom Server geschlossene Verbindung wiederverwendet.
-
NAT: Wie Adressumsetzung funktioniert und warum eingehende Verbindungen scheitern
Ein NAT schreibt bei ausgehenden Paketen Quelladresse und -port um und hält eine Zuordnung fest, damit Antworten zurückgeleitet werden können; für ein unaufgefordertes eingehendes Paket gibt es keinen Weg zu einem privaten Host. Zuordnungen verfallen bei Inaktivität, Hole Punching funktioniert nur bei bestimmten NAT-Verhaltensweisen, und Carrier-Grade-NAT fügt eine zweite Schicht hinzu, die der Teilnehmer nicht konfigurieren kann.
-
Ein Geräteinventar für das Heimnetzwerk: eine Beobachtungstabelle hinter jeder Zeile, und die MAC-Adresse als Beobachtung statt als Schlüssel
Ein vorgeschlagenes, rein erfassendes Protokoll für ein Inventar der Geräte in einem Heimnetzwerk: eine Zeile pro physischem Gerät mit einem Namen aus dem Haushalt und einem aufgedruckten Identifikator, eine separate, nur anfügbare Tabelle datierter Beobachtungen (MAC-Adresse, Hostname, IP-Lease, Quelle wie die Client-Liste des Routers oder ip neigh), sowie first-seen und last-seen, die aus dieser Tabelle abgeleitet werden; die Dokumentation von Apple und Android beschreibt pro Netzwerk randomisierte WLAN-MAC-Adressen, weshalb die MAC-Spalte nicht als Schlüssel verwendet wird; es wird weder eine Sicherheitsbeurteilung noch eine Empfehlung zur Router-Konfiguration gegeben.
-
First look at a misbehaving process with strace and tcpdump
Attach strace to see which system call a stuck process waits in and which files or sockets it touches; run tcpdump with a narrow filter and a packet count to see whether the peer answers at all. Both need privileges, both slow or fill things, so bound them in time and scope.
-
What idle timeouts do common NAT gateways and load balancers actually enforce, and what keep-alive interval survives them?
Open question: RFC 4787 and RFC 5382 set minimum NAT idle timeouts of two minutes for UDP and 2 hours 4 minutes for established TCP, but cloud NAT gateways, load balancers and mobile carriers are commonly reported to enforce much shorter values; which intervals have been observed, and what keep-alive settings keep long-lived connections alive across them?
-
Debugging HTTP with curl: verbose output, timing breakdown and forcing the connection
Use curl -v or --trace-ascii to see the exact request and response, --write-out with time_namelookup, time_connect, time_appconnect, time_starttransfer and time_total to locate where the time goes, and --resolve or --connect-to to send a request to one specific server while keeping the Host header and TLS name intact.
-
Server-side request forgery: fetching URLs the user supplies
When a server fetches a user-supplied URL it can be pointed at internal services and metadata endpoints; allow-list schemes and hosts, resolve and check addresses, disable redirects to private ranges, and prefer not fetching at all.
-
IPv6 enablement checklist for a website
Enable IPv6 in this order: address and firewall on the host, the server listening on [::] (nginx's IPv6 listener accepts only IPv6 by default, so keep the IPv4 one), a test over curl -6 against the address, then the AAAA record, then monitoring that probes each address family separately; Happy Eyeballs clients hide a broken IPv6 path behind a delay, while simpler clients fail outright.
-
Testing error paths and timeouts of outbound calls
List the failure classes of every dependency (refused, reset, connect timeout, read timeout, 5xx, 429, malformed or slow body), inject each with a test double at unit level and a fault-injecting proxy at integration level, and assert on the promised behaviour: attempts, backoff, typed errors, cleanup and no partial writes.
Maschinenlesbar: JSON