Ich hab im Heimnetzwerk ein IPv6-fähiges Endgerät (NAS) mit FTP-Server. IM Heimnetz kann ich auch per IPv6 eine FTP-Verbindung zu dem Teil herstellen. Ob das auch von außerhalb geht weiß ich primär erst mal nicht da mir ein zweiter IPv6-Anschluss zum Testen fehlt...
Ist ja schnell geändert: SixXS
Aber eines krieg ich derzeit auf jeden Fall nicht hin: Per IPv4 über's Internet auf den IPv6 FTP zugreifen. Der Port 21 ist in der Fritzbox für die Interface-ID des NAS freigegeben
und auch offen (subnetonline IPv6 Portscan).
Gibt's ne Möglichkeit, mit einer IPv4 zu einem IPv6-FTP zu connecten? Ich dachte eigentlich, dafür gibt's Tunnelbroker wie Teredo die schon automatisch von Windows benutzt werden. Irgendeine Idee?
FTP ist das denkbar ungeeignetste Protokoll, um damit erste Gehversuche zu machen
Man muß nämlich noch unterscheiden zwischen aktivem FTP und passivem FTP:
Beim aktiven FTP initiiert der Client eine Verbindung von seinem Port N (TCP Port > 1024) zum FTP Control Port (TCP Port 21), der Server initiiert für Dateitransfers dann eine Verbindung von seiner Seite aus über seinen Datenport (TCP Port 20) an den Port N+1 des Client-Rechners.
Port 20 serverseitig können wir bei unserer SOHO-Hardware vernachlässigen, da ist ConnTrack voreingestellt, die ACK-Pakete des/der Client(s) kommen also auch ohne explizite Freigabe wieder beim Server an. Problematischer ist aber, daß der Client selber ebenfalls Portfreigaben braucht um mit aktivem FTP umgehen zu können, nämlich im Idealfall einen ganzen Port-Bereich.
Aktives FTP spielt von daher für öffentlich erreichbare FTP-Server keine große Rolle, da der Konfigurationsaufwand auf der Client-Seite im Endeffekt höher ist als auf der Server-Seite. Und von DS-lite-Anschlüssen wäre zu IPv4-FTP-Servern aktives FTP gar nicht möglich, da der Client gar keine Ports öffentlich erreichbar machen kann.
Beim passiven FTP gehen beide Verbindungen vom Client aus und sind damit auch ohne clientseitige Portfreigaben möglich. Der Client kontaktiert den Server über den FTP Control Port (TCP Port 21) und teilt dem Server mit, daß er passives FTP wünscht (Kommando PASV). Daraufhin öffnet der Server einen Datenport für diese Verbindung (TCP Port > 1024) und teilt dem Client die Port-Nummer mit. Der Client kann dann seinerseits eine Verbindung zu diesem Datenport aufnehmen.
Da der Konfigurationsaufwand hierfür clientseitig Null ist und passives FTP somit auch durch NAT und per DS-lite funktioniert, ist das die übliche Art und Weise für FTP-Verbindungen.
Daraus folgt aber auch, daß wir beim Server mehr konfigurieren müssen:
Am Server müssen theoretisch
alle Ports > 1024 von außen erreichbar sein, da sich der FTP-Server ja für einen x-beliebigen Port für die eingehende Verbindung entscheiden kann. Um das zu vermeiden, kann man in der Konfiguration des FTP-Servers aber i.d.R. eine Port-Range einstellen, auf die sich der FTP-Server bei den Datenports beschränken soll. Diese Port-Range muß dann aber trotzdem noch in der Firewall des Servers geöffnet werden.
Hier kann man den ganzen Schwachfug auch nochmal nachlesen: http://www.alenfelder.com/Informatik/pass-akt-ftp.html
Damit aber noch nicht genug:
FTP ist als Protokoll aus den Anfangstagen des Internets auch rotzeschlecht gemacht. Diese ganzen Relikte aus den Urzeiten des ARPA-Nets sind unsicher, weil für den Gebrauch in einer Art Intranet konzipiert. FTP überträgt, so wie Telnet oder nacktes POP3 auch, die Credentials (Login+Passwort) und die Payload (Nutzdaten) unverschlüsselt. Beim Ur-SMTP hat man sich den Login gleich ganz gespart (Bis heute kann eigentlich noch jeder E-Mail-Client "POP vor SMTP", um über den POP3-Login wenigstens etwas Sicherheit zu haben, daß der nachfolgende SMTP-Connect von derselben IP auch berechtigt ist).
Verschlüsselung gibt es zwar inzwischen über TLS (Transport-Layer-Security, also Sicherheit innerhalb der Transportschicht) auch bei diesen Protokollen, allerdings muß man eben aufpassen, daß man sie auch nutzt bzw. serverseitig erforderlich macht und unverschlüsselte Verbindungen unterbindet.
Bei FTP kommen aber noch zwei Schmankerl hinzu. Der FTP-Support in Browsern (Chrome, K0tzzilla Crashfox, Internepp Exploder) beschränkt sich - zumindest ohne Erweiterungen - in der Regel auf unverschlüsseltes FTP. Macht man seinen FTP-Server also sicher, dann kommt man um einen richtigen FTP-Client wie FileZilla nicht herum. Zudem ist die Definition des FTP-Protokolls so grottig, würde man die heute als Fachinformatiker abliefern, wäre man arbeitslos. Bei FTP wird nämlich regelmäßig auch die IP mit übertragen. Wenn der Server also z.B. dem Client mitteilt, welchen Port er ihm als Datenport zugewiesen hat, dann schickt er eben nicht nur die Port-Nummer, sondern auch seine IP ...
Damit haben wir eine zusätzliche Fehlerquelle, denn wenn der FTP-Server dem Client seine ULA statt der öffentlichen IPv6 mitteilt und der Client die übertragene IP nicht einfach ignoriert, dann ist ein Verbindungsaufbau von außen zum Scheitern verurteilt.
In dieses Chaos dann auch noch Teredo/Miredo mit reinzubringen grenzt da schon an Größenwahn.
Mit anderen Worten: Versuch Dich erst einmal an einem Web-Server ...
