RDBMS | MongoDB |
---|---|
Database | Database |
Table | Collection |
Row | Document |
Column | Field |
Table Join | Embedded Documents |
Primary Key | Primary Key |
Aggregation | Aggregation Pipeline |
Kategorie: Elektronische Datenverarbeitung
Unterkategorien und Themen rund um die elektronische Datenverarbeitung und Informationstechnologie
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…
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:
Stateless DHCPv6 – der Client erhält das Präfix und das Standardgateway über RA, das O-Flag ist gesetzt
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
Das Präfix der Adresse kommt vom Router Advertisement (aus RFC 4861):
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:
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:
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:
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