Henryk Plötz: Ja, aber das geht auch nicht bei mir! Noch eine MySQL Frage

Beitrag lesen

Moin

Aber wenn eine Webserver doch Daten an meine Internet IP(<> Ethernet IP) sendet, muß man doch darüber auch an meinen Apache kommen, oder? Leider hatten wir das gerade mit der Netzwerk IP versucht, über die ich seltsamerweise an den Server gekommen bin, mit der "richtigen" IP habe ich es noch nicht versuchen können(halt selbst, abernoch nicht über jemand anderen!

Ok, mal ein paar Basissachen um die Missverständnisse aufzuklären.
Um über das Internetprotokoll (IP) kommunizieren zu können, braucht jeder der Rechner der mitmachen will, eine IP-Adresse. Und damit die Sache nicht langweilig wird, braucht jeder Rechner der an das Netz angeschlossen ist eine _andere_ IP-Addresse als alle anderen Rechner haben. Nebenbemerkung: Damit sich das leichter administrieren lässt werden die IP-Addressen von der zentralen Vergabestelle in Blöcken vergeben, die dann als Subnetze bezeichnet werden.

Eine IP-Addresse besteht (zumindest noch) aus 4 Bytes, die üblicherweise als 4 Dezimalwerte durch Punkte getrennt geschrieben werden (dotted-quad-notation). Wie du dir jetzt leicht ausrechnen kannst, gibt es 256 hoch 4 also 4294967296 mögliche IP-Addressen. Ein paar fallen davon schon von vorneherein weg und ein Großteil geht als Verschnitt aus diesem auf Subnetzen basierten Vergabeverfahren verloren. Da hat man schon früh erkannt dass man nicht jedem Computer auf der Welt der ein bisschen IP fahren möchte eine eigene eindeutige IP-Addresse geben kann. Also gibt es die Unterscheidung in mehrere Bereiche:

Drei "private" Addressbereiche: 10.0.0.0 bis 10.255.255.255, 172.16.0.0 bis 172.31.255.255 und 192.168.0.0 bis 192.168.255.255. Addressen in diesen Bereichen darf jeder benutzen wie er grade lustig ist. Diese Addressen dürfen aber nicht ins große Internet 'geroutet' werden. Wenn also jemand ein kleines eigenes Netzwerk unter Benutzung dieser Addressen aufbaut, muss er sicherstellen das an keiner Stelle Pakete mit Addressen aus seinem Netz in das Internet gelangen, etwa wenn einer der Rechner in diesem privaten Netz eine Internetverbindung hat. Im Prinzip macht das auch nichts, denn alle Pakete die an diese Addressen gehen werden von den meisten Routern im Internet verworfen.

Außerdem ist noch ein besonderer Bereich ausschließlich für die lokale Verwendung vorgesehen: 127.0.0.0 bis 127.255.255.255. Diese Addressen werden alle auf den lokalen Rechner abgebildet, verlassen die Netzwerkkarte also nie und werden auch nie von ihr aufgenommen. 127.0.0.1 wird meist als IP-Addresse für den Namen 'localhost' verwendet. Wichtig also: Hinter meinem 127.0.0.1 ist ein anderer Rechner als hinter deinem 127.0.0.1 oder dem jedes anderen. Deswegen wird dieser Bereich ebenfalls nicht im Internet geroutet.

Der Rest der IP-Addressen ist zum großen Teil routebar und kann verwendet werden. Ein bisschen davon ist für IP-Multicast und andere Protokoll-Experimente vorgesehen. Außerdem ist auch 255.255.255.255 nicht benutzbar (Kommentar meines Linux-Kernels zu einem Paket mit dieser Absenderaddresse: "martian source").

Wie du jetzt weisst, ist 127.0.0.1 eine sehr schöne IP-Addresse und dahinter wirst du auch alle (je nach Konfiguration) Services (z.B. MySQL oder der Apache) die dein Host anbietet ansprechen können. Jemand der mit dir an das selbe LAN angeschlossen ist, sieht dort aber nur seinen Rechner und kriegt von deinen Services nix mit.
Wenn das Netzwerk richtig konfiguriert ist, hast du meist eine IP-Addresse aus dem privaten Addressbereich für deine Netzwerkkarte zugewiesen (z.B. 192.168.146.1) und alle anderen im selben LAN haben andere IP-Addressen aus dem gleichen Addressbereich. Dann kannst sowohl du unter 192.168.146.1 als auch alle anderen im selben LAN unter 192.168.146.1 auf deine Services zugreifen (immer vorausgesetzt die Konfiguration der Services erlaubt das). Leute die sich am anderen Ende des Internets befinden können das aber nicht. Denn dieser Addressbereich wird vom Internet einfach verworfen.

Dann bleibt ja nur noch ein Addressbereich übrig: der 'öffentliche' Addressbereich. Da die IP-Addressen da (noch) knapp sind, wird dir dein Provider wahrscheinlich nicht eine feste Addresse zuweisen die dann für das Internet quasi 'verloren' wäre wenn du nicht online bist, sondern du bekommst bei jeder Verbindung eine neue Addresse (daher auch der Hickhack um die am einfachsten herauszufinden). Und nur unter dieser Addresse ist dein Rechner eindeutig von dir und der Welt erreichbar. Wenn die anderen Rechner im Ethernet nicht für einen Internetzugriff konfiguriert sind, also auch nicht auf andere öffentliche Addressen zugreifen können, ist es sehr wahrscheinlich dass sie deine öffentliche Addresse ebenfalls nicht erreichen und du musst dafür die private IP-Addresse benutzen die du im LAN auch sonst benutzt.

Noch ein Wort zu der DSL-Anbindung: Prinzipiell läuft über DSL das Ethernetprotokoll so dass dein Rechner (und alle anderen am selben Ethernet) angebunden werden könnten, als wären sie über eine Standleitung mit dem Internet verbunden. Da sich das aber nicht rechnet, und die Provider mit Gewalt eine Lösung wollen die sie mit der Stoppuhr abrechnen können, ist dieses an sich schöne Konzept (zumindest hierzulande) häufig vergewaltigt worden. Das nennt sich dann PPP over Ethernet (PPPoE) und besteht im Prinzip nur daraus, das von Einwählverbindungen (also Modem oder ISDN) bekannte und dort auch nötige Point to Point Protocoll (PPP) über eine Ethernetverbindung zu schicken. Das DSL-'Modem' stellt also eine physikalische Verbindung zwischen deinem Netzwerk (das meist nur aus einer Netzwerkkarte besteht) und dem Gegenstück auf Providerseite her. Hier können die Daten frei fliessen wie in jedem anderen LAN auch. Erst wenn du ins Internet hinter dem Provider zugreifen willst, baut dein PPPoE-Client eine PPP-Verbindung zu dem Provider auf (die dieser dann auch wie in der Steinzeit zeitbasiert abrechnen kann) und stellt die eigentliche Internetverbindung darüber her. Unter Windows sieht das dann so aus, als hättest du eine Netzwerkkarte und davon unabhängig noch einen PPP-Adapter (wie bei einem Modem auch).

Es gibt auch noch eine andere Möglichkeit über DSL ins Netz zu kommen: Die Geräte nennen sich meist "DSL-Router" und dahinter versteckt sich ein Masquerading-Gateway. Das Gerät baut selbständig über DSL eine Internetverbindung zwischen sich und dem Provider auf und leitet dann alle fürs Internet bestimmten Pakete aus dem LAN ins Internet weiter und die Antworten wieder zurück. Dabei werden die Absenderaddressen maskiert und auf eine einzige öffentliche IP-Addresse abgebildet, nämlich die des DSL-Routers.
Damit ist klar dass dein eigener Rechner keine öffentliche IP-Addresse hat und somit auch kein Zugriff aus dem Internet auf deinen Rechner direkt möglich ist (wird oft als Sicherheitsfeature beworben, ist aber, je nach Sicherheit des DSL-Routers selbst, manchmal nutzlos). Wenn du in dieser Konfiguration dennoch den Zugriff auf den HTTP- oder MySQL-Server deines Rechners freigeben willst, musst du in der Regel auf diesem DSL-Router ein besonderes Feature aktivieren. Das findet sich je nach Firma dann unter "Portforwarding" oder "Network Address Translation". Dort stellst du ein, dass alle Zugriffe auf Port 80 der öffentlichen IP-Addresse des DSL-Routers auf Port 80 der privaten Addresse deines Rechners weitergeleitet werden (für HTTP), bzw. analog für 3306 (für MySQL).

Außerdem liest man doch in allen möglichen Zeitschriften immer bei DSL Flatrates "Serverbetrieb erlaubt : JA/NEIN"????

Siehe meinen obigen Erguss. Prinzipiell funktionieren tut es in den meisten Fällen irgendwie, es sei denn der Server sperrt einen Port von sich aus, wie das einige gegen Code Red taten. Ob es rechtlich erlaubt ist steht in den AGB des Providers oder erfährst du an der Kundenhotline.

--
Henryk Plötz
Grüße aus Berlin