IP anstatt Domainname als URL benutzen

Hallo,

ich hatte ursprünglich vor einen Freund auf eine Internetseite, die auf meinem Rechner
gehostet ist, zugreifen zu lassen. Eigentlich wäre ich davon ausgegangen, dass ich an meinem
Router einstelle, dass alle Anfragen an Port 80 an meinen Rechner weitergeleitet werden und mein
Freund dann nur noch in seinem Browser meine externe IP-Adresse eingeben müsste.
Letzteres müsste ja dann auch genauso gut funktionieren, wenn ich dies in einem Probedurchlauf
auf eine Internetseite versuche, von der ich schon einmal weiß, dass sie existiert und erreichbar ist.
Also gehe ich mal in mein Terminal (unter Ubuntu) und gebe den Befehl
Code:
 host [URL="http://www.reddit.com"]www.reddit.com[/URL]
ein. Das spuckt mir die IP aus
Code:
[URL="http://www.reddit.com"]www.reddit.com[/URL] is an alias for reddit.map.fastly.net.
reddit.map.fastly.net has address 151.101.113.140
,die ich dann im Browser eingebe
Code:
 [URL]https://151.101.113.140[/URL].

Nun bekomme ich aber leider nur die Fehlermeldung
"Fastly error: unknown domain: 151.101.113.140. Please check that this domain has been added to a service."
Natürlich habe ich auch mal die Varianten ohne "https://" bzw. nur "http://" also ohne das "s" am Ende versucht.

Kann mir vielleicht jemand erklären, woran das liegen mag?

Vielen Dank schon im Voraus.

Benyza
 
Üblicherweise wird bei der HTTP Anfrage ein "Host"-Feld mitgeschickt, das die Domain enthält und das der Webserver nutzt, um die Anfrage korrekt zu verarbeiten. Dies ermöglicht das Hosten von mehreren Hostnames/Domains auf einem Webserver (siehe auch RFC2616). Wenn dieses Feld nicht korrekt gesetzt ist, weiß der Server nicht, wie er die Anfrage verarbeiten muss und kann daher nur eine (Default-)Fehlerseite zurückgeben. Beispiel (das -k bewirkt, dass eine unsichere Verbindung zugelassen wird, da die IP Adresse nicht dem Hostname im TLS Zertifikat entspricht):

Code:
$ curl -k https://151.101.113.140

<html>
<head>
<title>Fastly error: unknown domain 151.101.113.140</title>
</head>
<body>
Fastly error: unknown domain: 151.101.113.140. Please check that this domain has been added to a service.</body></html>

$ curl -k -H "Host: www.reddit.com" https://151.101.113.140

<!doctype html>
<html>
  <head>
    <title>Too Many Requests</title>
    <style>
      body {
          font: small verdana, arial, helvetica, sans-serif;
          width: 600px;
          margin: 0 auto;
      }

      h1 {
          height: 40px;
          background: transparent url(//www.redditstatic.com/reddit.com.header.png) no-repeat scroll top right;
      }
    </style>
  </head>
  <body>
    <h1>whoa there, pardner!</h1>
    


<p>we're sorry, but you appear to be a bot and we've seen too many requests
from you lately. we enforce a hard speed limit on requests that appear to come
from bots to prevent abuse.</p>

<p>if you are not a bot but are spoofing one via your browser's user agent
string: please change your user agent string to avoid seeing this message
again.</p>

<p>please wait 2 second(s) and try again.</p>

    <p>as a reminder to developers, we recommend that clients make no
    more than <a href="http://github.com/reddit/reddit/wiki/API">one
    request every two seconds</a> to avoid seeing this message.</p>
  </body>
</html>

Dieses Problem verschärft sich, wenn sog. CDNs genutzt werden (CDN=Content Distribution Networks). Hierbei stellt der Betreiber des CDNs ein von allen Kunden geteiltes Netzwerk bereit, über das der Content ausgeliefert wird. Hier ist es zwingend notwendig, dass man immer weiß, zu welcher Domäne eine Anfrage gehört.

Bei HTTPS, also der Nutzung von HTTP über eine gesicherte TLS-Verbindung, entsteht darüber hinaus das Problem, dass unterschiedliche Domains auch unterschiedliche Zertifikate besitzen können. Allerdings wird der "Host" Header erst nach Aufbau der sicheren Verbindung ausgetauscht. Hier behilft man sich daher zusätzlich mit der SNI Erweiterung (Server Name Indication), die ebenfalls den Hostname enthält und damit dem Webserver ermöglicht das korrekte Zertifikat beim Verbindungsaufbau zu senden. Am Beispiel Google kann man das sehr schön sehen:

Code:
$ host google.de
google.de has address 172.217.21.195
google.de has IPv6 address 2a00:1450:4001:818::2003
google.de mail is handled by 30 alt2.aspmx.l.google.com.
google.de mail is handled by 10 aspmx.l.google.com.
google.de mail is handled by 20 alt1.aspmx.l.google.com.
google.de mail is handled by 40 alt3.aspmx.l.google.com.
google.de mail is handled by 50 alt4.aspmx.l.google.com.

$ openssl s_client -connect 172.217.21.195:443
[...]
---
Certificate chain
 0 [B]s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=google.com[/B]
   i:/C=US/O=Google Inc/CN=Google Internet Authority G2
 1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
 2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
   i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
[...]

$ openssl s_client -connect 172.217.21.195:443 -servername google.de
[...]
---
Certificate chain
 0 [B]s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.google.de[/B]
   i:/C=US/O=Google Inc/CN=Google Internet Authority G2
 1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
 2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
   i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
[...]
 
Zuletzt bearbeitet:
Hallo SchwarzeBeere,

vielen Dank für die Antwort.

Stimmt. Daran habe ich nicht gedacht, dass ein Server nicht weiß, welche Informationen angefordert werden, wenn er mehrere Webseiten hostet bzw. mehrere Server zum Hosten einer Seite genutzt werden (was ja dem 2. Fall entspricht und den Nutzen der Lastenverteilung hat, wenn ich das richtig verstehe?)

Das mit dem HTTPS muss ich mir nachher noch genauer anschauen, das habe ich auf die Schnelle noch nicht verstehen können.

Ich vermute für den ursprünglichen Fall, wo ich jemanden auf eine Webseite zugreifen lassen will, die auf meinem Rechner liegt, wird das also auch nicht funktionieren einfach nur die IP in den Browser einzugeben (auch wenn eine Zuordnung der Anfrage in diesem Fall eindeutig gemacht werden könnte)?
 
Zuletzt bearbeitet:
Ich vermute für den ursprünglichen Fall, wo ich jemanden auf eine Webseite zugreifen lassen will, die auf meinem Rechner liegt, wird das also auch nicht funktionieren einfach nur die IP in den Browser einzugeben (auch wenn eine Zuordnung der Anfrage in diesem Fall eindeutig gemacht werden könnte)?

Du hast dir deine Antwort doch schon selbst gegeben:
auch wenn eine Zuordnung der Anfrage in diesem Fall eindeutig gemacht werden könnte

Aus Sicht der meisten Webserver ist eine IP Adresse auch nichts anderes als ein Hostname, siehe z.B. Server names
 
Ok. Also sollte es funktionieren.
Dann rufe ich gleich mal meinen Bruder an und sage ihm, dass
er es ausprobieren soll :)
 
Zurück
Oben