Wie ermittelt ping die IP-Adresse einer Website?

2308
isomorphismes

Ich versuche, besser auf die verschiedene Netzwerk-Abfrage - Tools wie zu verstehen nc, curl, whois, dig, nslookupund zugleich ein bisschen mehr über die Architektur von Internet - Anfrage, Server und dergleichen (NIC, A Record, MX), während bereits wissen, ein wenig über TCP, Nameserver, Domain-Registrare, Paket-Sniffer, HTTP-Header und IP-Adressen. Das ist mein Hintergrund, hier ist meine Frage.

Wenn ich digoder whoissie www.valgrind.org sagen (oder valgrind.org) I mindestens zwei verschiedene IP - Antworten erhalten: 178.250.76.80 und 172.16.0.23 # 53.

$ nslookup valgrind.org Server: 172.16.0.23 Address: 172.16.0.23#53  Non-authoritative answer: Name: valgrind.org Address: 178.250.76.80 

Der Versuch, eine dieser in zu durchsuchen w3moder chromiumführt zu einem 403 ForbiddenFehler. Außerdem bin ich nicht sicher, wohin ich navigieren soll, aber ping irgendwie kann ich das herausfinden! Wenn ich ping valgrind.org(oder ping www.valgrind.org) wählt

$ ping valgrind.org PING valgrind.org (178.250.76.80) 56(84) bytes of data. 64 bytes from 178.250.76.80: icmp_req=1 ttl=50 time=80.2 ms 

Woher wusste es das? Und was für ein anderes Werkzeug sollte ich verwenden, um herauszufinden, wie mein Browser aus geht 178.250.76.80auf valgrind.orgund lädt etwas?

1
This is pretty off-topic for here. I'll help get you started though: The first 'two answers' you get are not two different answers. The first address is the address of YOUR dns server; the server nslookup sent the query to. The only 'answer' there is 178.250.76.80. This is for professionals, not people seeking to learn the basics. yoonix vor 10 Jahren 0
@yoonix Ich habe mir vor dem Nachfragen eigentlich 'man ping' angesehen, aber es beantwortet meine Frage nicht. isomorphismes vor 10 Jahren 0

4 Antworten auf die Frage

4
Iain

Es gibt verschiedene Programme und Protokolle, die hier arbeiten. Jedes ist so konfiguriert, dass es unabhängig von den anderen reagiert.

Um eine IP-Adresse zu finden, verwendet ein Linux-Host im Allgemeinen die Anweisung hosts: in /etc/nsswitch.conf, um zu bestimmen, in welcher Reihenfolge die verschiedenen Quellen abgefragt werden. Ein typischer Eintrag wäre

hosts: files dns 

was sagt, überprüfen Sie die Dateien (normalerweise / etc / hosts ) und dann das DNS-System. Es wird also eine Suche nach der Datei / etc / hosts durchgeführt, und wenn sie einen Eintrag für valgrind.org enthält, wird die zugehörige IP-Adresse zurückgegeben. Wenn / etc / hosts keinen Eintrag für valgrind.org enthält, wird eine Anfrage an den DNS gestellt. Dazu lesen Sie den Inhalt von /etc/resolv.conf, um zu bestimmen, mit welchen Servern die DNS-Informationen abgerufen werden sollen ...

Bei der Ausgabe Ihres Befehls erhalten Sie nicht zwei verschiedene Adressen. Im ersten Teil der Ausgabe erfahren Sie, welcher Server von nslookup (172.16.0.23) kontaktiert wurde und an welchem ​​Port (# 53) die Antwort gefunden wurde. Wir wissen auch, dass es keinen korrekt konfigurierten PTR-Eintrag für 172.16.0.23 gibt, da, wie die Antwort von RobM zeigt, der Server als Name angezeigt würde, wenn dies der Fall wäre.

Der zweite Teil der Ausgabe enthält die von Ihnen angeforderten Informationen und teilt Ihnen mit, dass 178.250.76.80 die IPv4-Adresse von valgrind.org ist.

Wenn Sie sich direkt an Port 80 ( http ) mit 178.250.76.80 in Verbindung setzen, wird ein Verbot für 403 verboten, da der HTTP-Server an dieser Adresse so konfiguriert wurde. Er ist höchstwahrscheinlich als namenbasierter virtueller Server konfiguriert und erfordert daher einen gültigen http- Host: -Header (Abschnitt 14.23), um Ihre Anfrage an den entsprechenden vhost weiterzuleiten.

Der Ping-Befehl ist Teil der ICMP-Protokollsuite und ist eine ICMP-Echoanforderung. Der Host reagiert auf 178.250.76.80 auf Ping, da er so konfiguriert wurde, und sendet eine ICMP-Echoantwort an jede Echoanforderung.

1
Rob Moir

Sie müssen verstehen, wie nslookup funktioniert.

nslookup

Der erste Teil der Antwort, der hier klarer werden sollte, ist der Nameserver, mit dem Sie sprechen. Die Antwort ist der zweite Teil

In meinem Beispiel frage ich also nslookup, meinen derzeit konfigurierten DNS-Server danach zu fragen, wo er meint, dass www.serverfault.com zu finden ist.

nslookup antwortet mit der Adresse des Servers, auf dem die Abfrage ausgeführt wurde, und der Antwort. Dies ist wichtig, wenn Sie einen bestimmten DNS-Server angeben, für den dig oder nslookup ausgeführt werden soll. Dies ist ein ziemlich normaler Teil der Problembehandlung bei der Namensauflösung.

1
psusi

Sie verstehen die Ausgabe von nslookup falsch. Es gibt nicht zwei Antworten, sondern nur eine. Die erste Adresse ist, woher die Antwort kam. pingführt genau die gleiche Aufgabe aus und erhält genau das gleiche Ergebnis. Wenn Sie versuchen, dem Browser die IP-Adresse zu geben, erhalten Sie den 403, weil der Server ein virtuelles Hosting ausführt. Beim virtuellen Hosting kann ein Server über mehrere Standorte mit nur einer IP-Adresse verfügen. Sie entscheidet, welche Site Sie bedienen sollen, basierend auf dem Namen, den der Browser Ihnen eingegeben hat. Wenn Sie die IP-Adresse eingeben, weiß der Server nicht, welche Site Sie wünschen.

0
johnshen64

Dies hängt von Ihrem Betriebssystem und der Ping-Version ab. Wenn es sich um Linux handelt, können Sie mit Hilfe von strace alles herausfinden.

strace ping valgrind.org

Schritt für Schritt wird es Ihnen zeigen. zu lang zum posten, aber hier ist meine Ausgabe, sodass ich irgendwann weiß, dass sie die hosts-Datei überprüft

.

. . open("/etc/host.conf", O_RDONLY) = 3 . . .