Як ping визначити IP-адресу веб-сайту?


1

Я намагаюся краще зрозуміти різні інструменти мережевого запиту , такі як nc, curl, whois, dig, nslookupі в той же час трохи більше про архітектуру інтернет - запитів, серверів і т.п. (NIC, запис, MX) в той час як вже знаючи , Трохи про TCP, серверах імен, реєстраторах доменів, сніферах пакетів, заголовках HTTP і IP-адресах. Це моє тло, ось моє питання.

Коли я digабо whoisскажу www.valgrind.org (або valgrind.org) я отримую принаймні два різних IP-відповіді: 178.250.76.80 і 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

Спроба перейти до будь-якої з них w3mабо chromiumпризвести до 403 Forbiddenпомилки. Крім того, я не впевнений, до чого перейти, але ping якось здатний розібратися! Якщо я ping valgrind.org(або ping www.valgrind.org) вибирає

$ 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

Як він знав це робити? А інший інструмент , який я повинен використовувати , щоб дізнатися, як мій браузер переходить від 178.250.76.80до valgrind.orgі завантажує що - то?


Це досить поза темою для тут. Я допоможу вам почати: Перші «дві відповіді» не є двома різними відповідями. Перша адреса - це адреса вашого DNS-сервера; сервер nslookup надіслав запит. Єдина відповідь - 178.250.76.80. Це для професіоналів, а не для людей, які прагнуть вивчити основи.
yoonix

@yoonix Я дійсно дивлюся, man pingперш ніж запитати тут, але це не відповідає на моє запитання.
isomorphismes

Відповіді:


4

Існують різні програми і протоколи, які тут працюють, кожен з яких налаштований на самостійне реагування на інші.

Щоб знайти IP-адресу, linux-хост зазвичай використовує директиву hosts: /etc/nsswitch.conf, щоб визначити, який порядок запитів для різних джерел. Типовий запис буде

hosts:      files dns

який говорить перевірку файлів (зазвичай / etc / hosts ), а потім dns. Таким чином, буде здійснено пошук файлу / etc / hosts, і якщо він містить запис для valgrind.org, відповідна IP-адреса буде повернена. Якщо / etc / hosts не містить запису для valgrind.org, то запит буде внесено до DNS. Це включає в себе читання вмісту /etc/resolv.conf, щоб визначити, з якими серверами слід зв'язатися, щоб запитувати інформацію DNS ...

Дивлячись на дані вашої команди, ви не отримуєте двох різних адрес. Перша частина виводу повідомляє вам, з яким сервером було зв'язано nslookup (172.16.0.23), а також на якому порту (# 53) отримано відповідь. Ми також знаємо, що немає правильно налаштованого запису PTR для 172.16.0.23, оскільки, як показує відповідь RobM, Сервер буде показано як ім'я, якщо це було.

Друга частина виводу - це інформація, яку ви просили, і повідомляє вам, що 178.250.76.80 - це адреса IPv4 valgrind.org.

Коли ви звертаєтеся безпосередньо до 178.250.76.80 на порту 80 ( http ), ви отримуєте заборонений 403, тому що саме так налаштований сервер http на цій адресі. Швидше за все, він налаштований як віртуальний сервер на основі імені, і тому вимагає дійсного заголовка http Host: (sec 14.23), щоб направити ваш запит до відповідного vhost.

Команда ping є частиною, якщо набір ICMP-протоколу і є ICMP-ехо-запитом, хост 178.250.76.80 відповідає на ping, оскільки він був налаштований на це і посилає ICMP Echo Reply кожному Echo-запиту.


2

Вам потрібно зрозуміти, як працює nslookup.

nslookup

Перша частина відповіді, як тут має бути зрозуміліше, є сервером імен, з яким ви розмовляєте. Відповідь, яку він дає, це друга частина

Так у моєму прикладі я прошу nslookup запитувати мій поточний DNS-сервер про те, де він вважає www.serverfault.com.

nslookup відповідає адресою сервера, який він використовував для виконання запиту, і відповіді, яку він дав. Це важливо, якщо ви вказуєте конкретний DNS-сервер для запуску dig або nslookup, що є досить звичайною частиною усунення неполадок з іменами.


2

Ви неправильно розумієте вихід nslookup. Це не дає двох відповідей, а лише один. Перша адреса, звідки вона отримала відповідь. pingвиконує точно таке ж завдання і отримує точно такий же результат. Причина ви отримуєте 403, коли ви намагаєтеся дати IP-адресу для браузера, тому що сервер працює віртуальний хостинг. З віртуального хостингу, сервер може мати кілька сайтів тільки з однією IP-адресою. Вона вирішує, який сайт буде обслуговувати вас на основі імені, про яке вказує браузер. Коли ви вводите IP-адресу, сервер не знає, який сайт ви бажаєте.


0

це буде залежати від вашої ОС і версії ping. якщо це linux, ви можете дізнатися все, що роблять, використовуючи strace.

strace ping valgrind.org

крок за кроком він покаже вам. занадто довго, щоб опублікувати, але ось мій висновок, так що я знаю, в якийсь момент він перевіряє файл хостів

.

.
.
open("/etc/host.conf", O_RDONLY)        = 3
.
.
.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.