A journey in the pursuit of excellence

Mein Leben in der IT. Jeder Arbeitstag eine Berg- und Talfahrt. Heute mal wieder ein Ausblick von der Bergspitze über die Täler:

“The key to pursuing excellence is to embrace an organic, long-term learning process. Usually, growth comes at the expense of previous comfort or safety.”
― Josh Waitzkin, The Art of Learning: A Journey in the Pursuit of Excellence

Gefunden habe ich das Zitat bei Frau Naysan Saran. Gesucht hatte ich ein Fundstück auf Ihrer Website – wieder einmal: wie man präzise und mit wenig Aufwand unter Linux multiple Dateien durchsucht und dort Ersetzungen vornimmt (eine der vielzähligen Möglichkeiten):

$ grep -rl "old_string" . | xargs sed -i 's/old_string/new_string/g'

Danke dafür!

Hinweise:

  • grep benötigt zur Maskierung („Escapen“) mit dem Backslash „\“ im Suchstring die Option „-E“ (ERE – Extended Regular Expression)
  • der Backslash „\“ zum Maskieren („Escapen“) ist u.a. auch bei runden Klammern im String-Parameter von sed notwendig
  • mit dem Parameter –no-messages wird zusätzlich die Ausgabe von Fehlern im o.g. grep-Befehl unterdrückt

Sind sehr viele Dateien betroffen, lohnt es sich vom zeitlichen Aufwand erheblich, ein find davor zu schalten, z.B.:

$ find . -type f -name "*.php" | xargs grep -El --no-messages "header \(\"HTTP" | xargs sed -Ei 's/header \(\"HTTP/header\(\"HTTP/g'

Zum Thema tar-Archiv und bestmöglicher Kompression mit lzma2:

$ XZ_OPT=-9 tar -xvJf xz_file_name.tar.xz

oder einfach nur komprimieren:

$ xz -zv file_name

und dekomprimieren:

$ xz -d file_name.tar.xz

Hinweis: komprimierte Archive lassen sich mit

$ tar --diff --file=archive.tar.xz -C folder_name

nicht mit den Dateien bzw. Ordnern im Dateisystem vergleichen, das komprimierte Archiv kann dementsprechend auch nicht upgedatet werden. Bei einem 40GB-Archiv, in dem 59GB in 40090 Dateien

find /verzeichnis -type f | wc -l

unterteilt in  3339 Ordnern

find /verzeichnis -type d | wc -l

stecken, dauert das Dekomprimieren zum Abgleich auf einem ollen Server schon mal einige Zeit. Um diese zu messen, setzt man einfach ein time vor das Programm.

Der Vergleich selbst geht dann mit:

$ tar -dvf archive.tar
(aus dem Ordner heraus, mit dem verglichen werden soll)

Und das Faust’sche daran, wie üblich: ich bin mehr der Meer-Typ.

Das „Hyper Text Coffee Pot Control Protocol“…

Das HTCPCP/1.0 vom 1. April 1998 hat einen Nachfolger in RFC 7168 vom 1. April 2014. Die Entwicklung des Internets auf Siebenmeilenstiefeln. In Hobbes‘ Internet Timeline ist der erste am Netz der Netze angeschlossene Toaster bereits für 1990 dokumentiert.

In den Neunzigern des letzten Jahrhunderts waren Siemens, Mercedes, Bosch und die meisten anderen, die immer noch die „Liste der größten Unternehmen in Deutschland“ (laut Wikipedia) anführen, auch global bedeutende Firmen. Das hat sich aber drastisch geändert, in der Forbes-Liste darf man jetzt länger suchen…

Top 10 Firmen der Welt - ein Vergleich

Migration IPv4 zu IPv6

Ziel: Abschaltung von IPv4

Migrationstechniken:

  • Dualstack: beide Welten laufen nebeneinander, mehr „Admin-Overhead“
  • Tunneltechnologien (IPv6 in IPv4 oder umgekehrt, Insellösungen)
  • Tunnelbroker (falls Provider überhaupt kein IPv6 unterstützt, eher Home-Office)
  • 6to4 (Internet-Tunnel, Präfix: 2002::/16)
  • 6rd, Nachfolge von 6to4, Vorteil: beim Client  (Provider-Tunnel, im Internet nativ, Präfix: vom Provider abhängig)
  • ISATAP (Intranet-Tunnel, kein Präfix, aber IPv4-Adresse hinten angehängt
  • Teredo (NAT-Tunnel für Internet, Präfix: 2001::/32, also 2001:0::)
  • DSLite (Provider-Technologie, Zugangsnetz ist IPv6)
  • Translationstechnologien (IPv6 zu IPv4 oder umgekehrt)
  • NAT-PT (veraltet, zu komplex und fehleranfällig)
  • NAT64/DNS64 (aktuell genutzt, Funktionalität getrennt)
  • 464XLAT (für IPv4-only-Applikationen)

Quelle: Eric Amberg / Vorbereitung auf das Examen CompTIA Network+

DNS für IPv6

Der DNS (Domain Name Service) unter IPv6

  • DNS (Domain Name System) löst DNS-Namen (FQDNs) in IP-Adressen auf (sowohl bei IPv4 als auch bei IPv6)
  • DNS gewinnt bei IPv6 noch an Bedeutung (IPv6-Adressen nicht auf Lesbarkeit ausgelegt)
  • Die traditionellen DNS-Dienste können um IPv6-Funktionen erweitert werden. Es sind keine neuen Dienste notwendig
  • RFC 3596 definiert IPv6-Erweiterungen im Domain Name System (AAAA und IP6.ARPA)
  • Hosts erhalten in den Forward-Lookup-Zonen parallel Einträge für IPv4 und IPv6
  • Es müssen nur die IPv6-Adressen ergänzt werden, alle anderen Ressource Records verweisen auf Namen
  • DNS-Resolver (Clients) müssen Anfragen auf AAAA-Einträge stellen können
  • Die meisten DNS-Resolver fragen A und AAAA-Einträge an, wenn der Dualstack aktiv ist
  • Ist sowohl eine IPv6- als auch eine IPv4-Adresse vorhanden, wird in der Regel die IPv6-Adresse gewählt
  • DNS-Server, die IPv6-Namensauflösung bereitstellen, müssen nicht selbst über IPv6 erreichbar sein

AAAA (Quad-A)
Neuer RR (ResourceRecord) für IPv6-Namensauflösung
Forward Lookup-Namensauflösung: DNS-Name in IPv6-Adresse:

<Name>           IN AAAA           <IPv6-Adresse>

Beispiel:

server1           IN AAAA           2001:db8:affe:1::1

IP6.ARPA
Neue Domain für Reverse Lookup-Namensauflösungen:
IPv6-Adresse in DNS-Name

Die IPv6-Adresse wird von rechts nach links dargestellt, 4 Bits bilden eine Subdomain-Ebene, keine Kürzungen!

Beispiel:

Adresse: 2001:db8:2::affe:dead:beaf
(voll ausgeschrieben: 2001:0db8:0002:0000:0000:affe:dead:beef)

PTR-Eintrag:

f.e.e.b.d.a.e.d.e.f.f.a.0.0.0.0.0.0.0.0.2.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa

DHCPv6

IPv6-Adressverteilung:

Die IPv6-Konfiguration von Hosts kann folgendermaßen erfolgen:
manuell: alle Eigenschaften werden vom Administrator per Skript oder direkt auf dem System durchgeführt
– per SLAAC (Stateless Address Autoconfiguration): Präfixe und Standardgateway werden durch Router-Advertisements geliefert
– der Host bildet sich durch verschiedene Varianten seine eigene, eindeutige IPv6-Adresse (EUI-64, Randomized Identifier, Privacy Extensions nach RFC 4941)
– optional können zusätzliche Informationen per DHCPv6 bezogen werden (z.B. DNS-Suffix, DNS-Server, SIP-Server, etc.)
– per Stateful Address Autoconfiguration: Die Konfiguration erfolgt vollständig (soweit möglich) durch DHCPv6

IPv6-Adressverteilung durch DHCPv6:

– DHCPv6 ist ein eigener Dienst und nicht mit DHCP (implizit: DHCPv4) kompatibel
– Die verwendeten Ports sind 546/udp (Client) und 547/udp (Server)
– DHCPv6 ist in RFC 3315 standardisiert und muss stateless und stateful unterstützen
– Wie unter DHCPv4 kann ein DHCP Relay Agent eingesetzt werden
– DHCPv6-Server werden auf der Multicast-Adresse FF02::1:2
(All_DHCP_Relay_Agents_and_Servers) angesprochen

DHCPv6 Nachrichtentypen:

DHCPv6-Nachrichtentypen

Stateless DHCPv6

 

 

Stateless DHCPv6 – der Client erhält das Präfix und das Standardgateway über RA, das O-Flag ist gesetzt

 

 

Stateful DHCPv6

 

 

 

 

Stateful DHCPv6 – der Client erhält nur das Standardgateway über RA, das M-Flag ist gesetzt

IPv6 Autoconfiguration

Ein weiteres, neues und grundlegendes Konzept in IPv6: Autoconfiguration.

Varianten:
Stateful Address Autoconfiguration: der Knoten ermittelt seine IPv6-Konfiguration durch DHCPv6. Es wird kein Standardgateway zugewiesen!
SLAAC (Stateless Address Autoconfiguration): der Knoten erhält seine IPv6-Konfiguration über Router Advertisements und – optional – zusätzlich über DHCPv6

Adresszustände:
Tentative (vorläufig): Adresse wird gerade per DAD (Duplicate Address Detection) geprüft und ist noch nicht freigegeben
Preferred (bevorzugt): Eindeutigkeit wurde bestätigt, Adresse kann uneingeschränkt genutzt werden
Deprecated (überholt): Adresse ist noch gültig, wird aber nicht mehr für neue Kommunikation verwendet. Eingehende Kommunikation kann noch statt finden
Valid (gültig): übergeordnet für Preferred und Deprecated
Invalid (ungültig): Adresse ist keinem Interface zugewiesen und darf nicht genutzt werden

IPv6 Adresszustände

Das Präfix der Adresse kommt vom Router Advertisement (aus RFC 4861):

IPv6 Router Advertisement

Die Interface-ID (letzten 64 Bit der IPv6-Adresse) muss der Knoten im Rahmen der Autoconfiguration selbst bestimmen:

Möglichkeit 1.)
IEEE EUI-64, festgelegt in RFC 4291, auch „modifiziertes EUI-64 Adressformat“; EUI-64 bildet aus der MAC-Adresse eine 64 Bit lange Interface-ID:
IPv6-Adresse Interface-ID

Möglichkeit 2.)
als Alternative, um keine MAC-Adressen z.B. ins Internet preisgeben zu müssen: Privacy Extensions festgelegt in RFC 4941
– Privacy Extensions sind temporäre Adressen
– werden nach einem Zufallsalgorithmus gebildet
– werden nach Ablauf ihrer Gültigkeit automatisch neu erstellt
– die Gültigkeit der IPv6-Adresse geht aus dem Router Advertisement hervor

Möglichkeit 3.)
MS-Extrawurst: Windows generiert eine immer gleiche Interface-ID, die MAC-Adresse ist dabei nicht wie in EUI-64 ersichtlich

Bei Linux-Systemen hängt es von der Distribution ab, ob EUI-64 oder Privacy Extensions zum Einsatz kommen.

IPv6 Neighbor Discovery

Ein neues, grundlegendes Konzept in IPv6: ND (Neighbor Discovery) bzw. NDP (Neighbor Discovery Protocol). ND kombiniert Layer-2-Adress-Resolution (ersetzt ARP), Router Discovery und Redirect-Informationen

Neighbor Discovery wird für folgende Zwecke von IPv6-Knoten genutzt:
– zur Ermittlung von Link Layer-Adressen („MAC-Adressen“), ARP gibt es in IPv6 nicht mehr
– zur Ermittlung doppelter IP-Adressen (DAD, Duplicate Address Detection Test)
– zur Überwachung der erreichbaren und nicht erreichbaren Nachbarn
– zur Feststellung von Link Layer Adressänderungen
– zur Auffindung von Routern am selben Link
– zur Ermittlung von Netzwerkpräfixen, Routen und anderen Konfigurationsinformationen
– zur Autokonfiguration von IPv6-Adressen

Durch Festlegung weiterer Optionsfelder variabler Größe im TLV-Format (Type, Length, Value) können ND-Nachrichten fast beliebige Informationen transportieren

Neighbor Discovery Nachrichtenformat:

Neighbor Discovery Nachrichtenformat

Anzeigen der IPv6 Neighbor MAC-Tabelle auf dem jeweiligen Host z.B. mit

$ ip -6 neigh show

bzw.

> netsh int ipv6 sh neigh

ICMPv6

Das ICMP (Internet Control Message Protocol) dient der Übermittlung von Fehler- und Statusmeldungen, sowohl unter IPv4 als auch unter IPv6.

Vergleich zwischen ICMP und ICMPv6:

ICMP (ist implizit ICMPv4):
– ist optional
– Typen und Codes sind willkürlich gewählt
– Protocol-Wert: 1
– Aufgaben: Fehler- und Statusmeldungen

ICMPv6:
– ist obligatorisch
– die Typen und Codes sind getrennt in Fehler- und Statusmeldungen
– Next Header-Wert: 58
– Aufgaben: Fehler- und Statusmeldungen, Neighbor Discovery und Autoconfiguration, Multicast Listener Discovery, Mobile IPv6-Unterstützung

Wichtige Nachrichtentypen:

– Fehlermeldungen:CMPv6 Fehlermeldungen– Statusmeldungen:ICMPv6 Statusmeldungen

IPv6-Adressen

I.) der Adressbereich

Adressbereich von IPv4: 32 Bit => 2³² Adressen (abzügl. Broadcast, Netzwerkadresse etc.), entspricht ca. 4 Milliarden Adressen

Adressbereich von IPv6: 128 Bit => 2¹²⁸ Adressen
in der Theorie: „viermal so lang wie IPv4“ => 340 mit 36 Nullen: genug, „um jedem Sandkorn der Erde mehrere IPv6-Adressen zuzweisen; jeder Quadratmeter der Erde könnte 655 Trilliarden IPv6-Adressen erhalten
in der Praxis: das Präfix bei IPv6 beträgt grundsätzlich /64, der linke Teil (das Präfix) ist der Netzanteil und nur der rechte Teil, die zweiten 64 Bits, gehören den Hosts

„IPv6-Adressen“ weiterlesen