Ähnliche Dokumente
Guide DynDNS und Portforwarding

Migration von Applikationen zu. IPv6

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

ASA Schnittstelle zu Endian Firewall Hotspot aktivieren. Konfiguration ASA jhotel

Um DynDNS zu konfigurieren, muss ausschließlich folgendes Menü konfiguriert werden:

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Anleitung zur Nutzung des SharePort Utility

Das Leitbild vom Verein WIR

Die Subnetzmaske/Netzwerkmaske

CNAME-Record Verknüpfung einer Subdomain mit einer anderen Subdomain. Ein Alias für einen Domainnamen.

Virtual Private Network

CCNA Exploration Network Fundamentals. Chapter 6 Subnetze

Firewalls für Lexware Info Service konfigurieren

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

1 Mit einem Convision Videoserver über DSL oder ISDN Router ins Internet

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

7. TCP-IP Modell als Rollenspiel

ISA Server 2004 Erstellen einer Webverkettung (Proxy-Chain) - Von Marc Grote

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

ISA Server 2004 Einzelner Netzwerkadapater

Firewalls für Lexware Info Service konfigurieren

Sie müssen sich für diesen Fall mit IHREM Rechner (also zeitgut jk o.ä.) verbinden, nicht mit dem Terminalserver.

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Nicht über uns ohne uns

GITS Steckbriefe Tutorial

Konfiguration Firewall (Zyxel Zywall 10) (von Gruppe Schraubenmeier)

Alle gehören dazu. Vorwort

Transition vom heutigen Internet zu IPv6

Technical Note ewon über DSL & VPN mit einander verbinden

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Anleitung Grundsetup C3 Mail & SMS Gateway V

Uni-Firewall. Absicherung des Überganges vom Hochschulnetz zum Internet am Wingate (Helmut Celina)

Anbinden der Visualisierung GILLES TOUCH (VNC)

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Dieser Artikel beschreibt die Veröffentlichung eines Microsoft SQL Server 2000 über einen ISA Server 2004.

ICS-Addin. Benutzerhandbuch. Version: 1.0

Was ich als Bürgermeister für Lübbecke tun möchte

Anbindung des eibport an das Internet

Man unterscheidet zwischen LAN (Local Area Network) und WAN (Wide Area Network), auch Internet genannt.

RUB-Netzbetreuertreffen RIPE IPv6 PIP OpenVPN WLAN Robin Schröder RUB-NOC

Einführung in die Netzwerktechnik

FL1 Hosting Technische Informationen

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

COMPUTER MULTIMEDIA SERVICE

STARFACE SugarCRM Connector

Kurzanleitung OOVS. Reseller Interface. Allgemein

Anleitung zur Inbetriebnahme einer FHZ2000 mit der homeputer CL-Software

Netzwerkeinstellungen unter Mac OS X

Rechnernetzwerke. Rechnernetze sind Verbünde von einzelnen Computern, die Daten auf elektronischem Weg miteinander austauschen können.

Los geht s. aber Anhand meines Beispiels!

START - SYSTEMSTEUERUNG - SYSTEM - REMOTE

EasyWk DAS Schwimmwettkampfprogramm

FL1 Hosting FAQ. FL1 Hosting FAQ. V1.0 (ersetzt alle früheren Versionen) Gültig ab: 18. Oktober Telecom Liechtenstein AG

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Thema IPv6. Geschichte von IPv6

Was meinen die Leute eigentlich mit: Grexit?

Was ist Sozial-Raum-Orientierung?

Horstbox VoIP. Stefan Dahler. 1. HorstBox Konfiguration. 1.1 Einleitung

Die Bundes-Zentrale für politische Bildung stellt sich vor

Die Post hat eine Umfrage gemacht

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Step by Step Webserver unter Windows Server von Christian Bartl

Black Box erklärt. Subnetzmasken

Übersicht. Was ist FTP? Übertragungsmodi. Sicherheit. Öffentliche FTP-Server. FTP-Software

:: Anleitung Hosting Server 1cloud.ch ::

Kontrollfragen: Internet

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

OP-LOG

Schwachstellenanalyse 2012

Voraussetzung. Anleitung. Gehen Sie auf Start Einstellungen und suchen Sie hier den Eintrag Datenverbindungen oder Verbindungen. Öffnen Sie diesen.

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Referat von Sonja Trotter Klasse: E2IT1 Datum Jan Subnetting

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Voice over IP (VoIP) PING e.v. Weiterbildung Blitzvortrag. Dennis Heitmann

Gefahren aus dem Internet 1 Grundwissen April 2010

mit ssh auf Router connecten

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Anleitung über den Umgang mit Schildern

Diese Anleitung erläutert die Einrichtung des Active Directory Modus im DNS-343.

Bilder Schärfen und Rauschen entfernen

Application Layer Active Network

Gezielt über Folien hinweg springen

Anlegen eines virtuellen http Server unter Exchange 2003 mittels HOSTNAME

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

Netzwerk. Um den Hostnamen angezeigt zu bekommen $ hostname $ hostname -f Um den Hostnamen zu ändern $ hostname <neuerhostname>

Catherina Lange, Heimbeiräte und Werkstatträte-Tagung, November

WordPress lokal mit Xaamp installieren

ISA Server 2004 Erstellen eines neuen Netzwerkes - Von Marc Grote

Regeln für das Qualitäts-Siegel

IEEE 802.1x Authentifizierung. IEEE 802.1x Authentifizierung IACBOX.COM. Version Deutsch

Scharl 2010 Dokument ist Urheberrechtlich geschützt. Port Forwarding via PuTTY und SSH. Was ist Port forwarding?

Transkript:

IPv6 und Perl

Überblick IPv6 == Internet Protokoll Version 6 Vortrag enthält kurze Intro zu IPv6 zeigt Probleme bei der Migration unabhängig von Perl geht auf den Stand der Unterstützung durch Perl ein und zeigt Möglichkeiten, wie man den aktuellen Stand verbessern kann

Hintergrund arbeite bei GeNUA mbh (Hochsicherheitsfirewalls u.a.) 05/2008 Internetaktionsplan der EU pusht IPv6 05/2008 "IVBB Nachfolger soll auch IPv6 verwenden" wir stellen die Firewalls für den IVBB her die Application Level Gateways auf diesen Firewalls sind i.a in Perl geschrieben "IPv6 Blog: Perl considered harmful"

Warum IPv6? IPv4 Adressen werden knapp, da nur 32-bit IPv6 bringt 128-bit statt 32-bit Adressierung ausreichend, das alles (Computer, Handy, MP3-Player, Kafeemaschine...) eine weltweit eindeutige Adresse bekommt kein NAT mehr nötig keine Workarounds mehr für P2P, VoIP,.. mehr nötig

Wo muss es unterstützt werden

Wo muss es unterstützt werden OSI Layer >=3 Routing Protokolle DNS Betriebssystem Kernel und Tools Socket API Protokolle wie FTP, SIP, H.323... Firewalls, Router, Telefone... Anwendungen (Browser, Webserver, MUA, MTA...)...

Inkompatibilitäten zu IPv4 binäre Darstellung 128-bit statt 32-bit andere Textdarstellung der Adressen verschiedene Textdarstellungen für gleiche Adresse (verkürzte Darstellungen, z.b. 0:0:0:0:0:0:0:1 gleich ::1) einiges komplexer aber auch konsistenter: vieles, was Add-On zu IPv4 war ist jetzt im Protokoll integriert (Autokonfiguration, Unicast, Multicast, IPSec...) Link steht nicht gleich nach ifconfig zur Verfügung (Kollisionskontrolle)...

Migration von IPv4 zu IPv6

Parallelbetrieb IPv4/IPv6 wohin verbindet man, wenn Hostname als IPv4 (A) und auch IPv6 (AAAA) auflöst IPv6 im Tunnel geht andere Routen als IPv4 Host evtl. über IPv4 aber nicht über IPv6 erreichbar

DNS im Mischbetrieb manche DNS Server antworten auf AAAA Anfragen NXDOMAIN wenn es keine IPv6, aber IPv4 Adressen gibt: US-Cert VU#714121 PerlMonks: "ftp.perl.org not found". böse Spielchen mit AAAA und A records und searchdomains in /etc/resolv.conf searchdomain Eintrag.local DNS Server für.local liefert AAAA Adressen für *.local lookup paypal.com liefert nicht A Record für paypal.com, sondern: lookup AAAA:paypal.com -> keine Records lookup AAAA:paypal.com.local -> Erfolg

Textdarstellung anders als IPv4 gleiche Adresse kann auf verschiedene Weise ausgedrückt werden mapped IPv4, d.h. IPv4 kann innerhalb von IPv6 Adresse ausgedrückt werden: 10.0.3.4 ::FFFF:10.0.3.4 ::FFFF:a00:304 0:0:0:0:0:ffff:a00:304 Kombination von IP und Port in verschiedenen Anwendungen verschieden umgesetzt. Bei IPv4 i.a IP:Port, bei IPv6 mal [IP6]:Port, mal IP6.Port. Probleme, wenn ':' als Seperator zwischen IP und anderen IPs oder Port o.a. genommen wurde (zb bei exim)...

Textform wird verwendet in... PFL Regeln Zugriffslisten (z.b. squid ACLs) Konfiguration (z.b. Listenadresse) URLs (proto://host/) innerhalb der Protokolle, z.b. SIP: SDP gibt Adressen an zum Transport der Mediadaten Mail: user@[ip] FTP: PORT,EPRT... geben Adressen für Datenverbindung an DNS: A und AAAA Records X509 Zertifikaten...

Perl spezifische Intro

CORE keinerlei Unterstützung durch CORE Module gethost* liefern was libc/libresolv liefert, d.h nur IPv4 stattdessen muss getaddrinfo genutzt werden, welches aber nicht im CORE ist

Module Basis ist Socket API, d.h Socket6 und darauf aufbauend IO::Socket::INET6 Net::DNS unterstützt AAAA records viele Module benutzen explizit IO::Socket::INET (Net::SMTP, Net::FTP, LWP...) und sind daher nicht IPv6 fähig diverse andere Module unterstützen IPv6, aber fraglich in welcher Qualität d.h. schlechtes out of the box Erlebnis :-((

ist nur Perl so schlecht? siehe IPv6 Blog: "IPv6 Support in Programming Languages" Python, Java, Ruby: kein spezielles IPv6 API - ist im normalen Socket API mit drin (so sollte es sein) PHP - ähnlich schlimm wie Perl

im weiteren... Benutzung von Socket6, IO::Socket::INET6 SSL und IPv6 Net::DNS Net::SMTP, Net::POP3... LWP Net::FTP Arbeiten mit Textdarstellung...: NetAddr::IP, Net::IP...

Socket6, IO::Socket::INET6 API analog zu Socket, IO::Socket::INET kann mit IPv6 (AF_INET6) und IPv4 (AF_INET) umgehen getaddrinfo statt gethostbyname inet_pton löst im Gegensatz zu inet_aton keine Adressen auf Grob abwärtskompatibel zu Socket/IO::Socket::INET, kann auch IPv4 IO::Socket::INET6->new( 'ipv6.google.com' ); # IP6 IO::Socket::INET6->new( 'www.google.com' ); # IP4 aktiv geplegt, stabil, aber immermal auch kleinere Bugfixes

SSL und IPv6 ich bin Maintainer von IO::Socket::SSL bisher: entweder von IO::Socket::INET oder von IO::Socket::INET6 abgeleitet use IO::Socket::SSL use IO::Socket::SSL 'inet6' Sowas führt zu Problemen, da die Entscheidung bzgl IPv6 dann vom aufrufenden Programm/Modul getroffen werden muss: "Perl considered harmful" seit v1.17 (10/08): wenn IO::Socket::INET6 wird es per Default genutzt evtl. Probleme, wenn AAAA Record geliefert, aber keine IPv6 Verbindung möglich

Net::DNS kann mit AAAA Records umgehen kann auch IPv6 Resolver ansprechen funktioniert i.a. ohne Probleme kleinere Bugs durch nicht eindeutige Textdarstellung von IPv6 beim Erstellen und Verarbeiten eigener Net::DNS::Packet's

Net::SMTP, Net::POP3,... direkt von IO::Socket::INET abgeleitet funktionieren also nicht mit IPv6 mögliche Lösung: @ISA hinterrücks anpassen: @Net::SMTP::ISA = qw(net::cmd IO::Socket::INET6) Alternative: INET.pm auf INET6.pm patchen use Net::INET6Glue::INET_is_INET6

Net::INET6Glue::INET_is_INET6 macht IO::Socket::INET == IO::Socket::INET6 durch Kopie der Symboltabelle Module, die direkt IO::Socket::INET Objekte erstellen (LWP) oder davon abgeleitet sind (Net::SMTP) werden damit IPv6 fähig......sofern sie nicht versuchen die (IPv4-)Adressen zu interpretieren oder tief in die Innereien von IO::Socket::INET einzugreifen

LWP benutzt für http direkt IO::Socket::INET mit Net::INET6Glue::INET_is_INET6 kann es auch IPv6 use Net::INET6Glue::INET_is_INET6; use LWP::Simple; print get( 'ipv6.google.com' ); # IPv6 print get( 'www.google.com' ); # IPv4 für https wird vielleicht IO::Socket::SSL genutzt, dort wird IPv6 unterstützt. Force IO::Socket::SSL: use Net::SSLGlue::LWP ftp via Net::FTP (siehe später)

Net::FTP ist ebenfalls von IO::Socket::INET abgeleitet Net::INET6Glue::INET_is_INET6 kümmert sich nur um Kontrollverbindung und Datenverbindung IP:Port der Datenverbindung werden bei IPv6 mittels EPTR und EPSV statt PORT und PASV ausgehandelt diese Kommandos werden von Net::FTP nicht unterstützt

Net::INET6Glue::FTP lädt Net::INET6Glue::INET_is_INET6 fügt EPRT und EPSV Kommandos zu Net::FTP hinzu patched pasv() und port() sodaß bei IPv6 Verbindungen EPSV und EPRT genutzt werden patched _dataconn(), sodaß die von EPSV gewonnenen Infos genutzt werden und damit geht es dann use Net::INET6Glue::FTP; my $ftp = Net::FTP->new( '[::1]:1121' ); fragiles Vorgehen, daher fest verdrahtet auf bestimmte Version von Net::FTP

Arbeiten mit der Textdarstellung

Gültigkeit bei IPv4 kam man noch mit einer Regex für den Syntaxcheck davon, bei IPv6 nicht mehr. $valid_ip6 = eval { Socket6::inet_pton(...) }

Vergleich Stringvergleich reicht nicht, da IPv6 auch eine verkürzte Representation zuläßt. $equal = inet_pton($a) eq inet_pton($b)

IP:Port IPv6 enthält Doppelpunkte, d.h das einfache split() am Doppelpunkt funktioniert nicht mehr. Stattdessen muss man komplexere Syntax unterstützen: ip4 ip4:port ip6 [ip6]:port nicht trivial, siehe IO::Socket::INET6::_sock_info kein Modul bekannt, was einem diese Aufgabe abnimmt

Module für Textdarstellung NetAddr::IP bietet viele Funktionen zur Arbeit mit IPv4 und IPv6 Adressen Vergleich incl. Netzmaske Rechnen mit Adressen Umwandlung zwischen Text und Binärdarstellung liefert Broadcast Adresse, Netzwerkmaske... arbeitet mit Operator overloading :( Net::IP auch, aber scheint nicht mehr gepflegt zu werden (letzte Version 2006) weniger Funktionalität als NetAddr::IP

weitere Module AnyEvent::Socket scheint mit IPv6 im Hinterkopf entwickelt zu sein und behandelt es transparent aber mit welchem Aufwand: kein Socket6 und viel Aufwand um packing für sockaddr_in und Konstante AF_INET6 für jedes Betriebssystem zu ermitteln POE scheint ebenfalls IPv6 zu supporten. Viel nahezu gleicher Code für IPv4 und IPv6 um Unterschiede im Interface (inet_aton vs. inet_pton, gethostbyname vs. getaddrinfo etc) zu umgehen Danga::Socket (Basis Perlbal) scheint einige Gedanken an IPv6 verwendet zu haben aber zumindest local_ip_string() verwendet explizit inet_ntoa(), welches auf IPv6 nicht geht

weitere Module Net::SNMP unterstützt IPv4 und IPv6 man muss aber wohl explizit übergeben, wenn man IPv6 benutzen will (keine automatische Bestimmung anhand der Adresse) Net::SIP muss IPv6 Adressen in Textform innnerhalb der SDP Pakete verarbeiten Code ist dafür da, aber nicht getestet Mail::SPF, Mail::SPF::Iterator SPF Standard beinhaltet IPv6 Unterstützung dank der guten SPF Testsuite sollten beide Module das können

Zusammenfassung kein Support für IPv6 im Perl Core aber es ist möglich mit IPv6 in Perl zu arbeiten wobei komfortabel wird das nur mit unschönen Hacks (mit evtl. unerwünschten Nebenwirkungen) ansonsten muss man überall explizit checken ob IPv6 Module verfügbar und diese bei Bedarf explizit nutzen besser wäre nahezu transparenter IPv6 Support im CORE, analog zu Python...

weitere Resourcen PerlMonks Diskussion zum Forcieren von INET6 in vorhandene Module "Living with IPv6" Blog IPv6 support in Squid erst in squid3.1 (d.h. noch kein IPv6 in aktuellem Squid Web Proxy): Überblick über IPv6 in Samba

Danke!