Какой у меня IP
Показывает публичные IPv4 и IPv6 сразу, отличает семейство, которого у вас нет, от заблокированного по пути, и называет ответивший дата-центр.
Три показания начинаются сразу при загрузке страницы.
Точка, доступная только по IPv4, ещё не ответила.
Точка, доступная только по IPv6, ещё не ответила.
Предпочтённое семейство: Пока неизвестно — показание от самого этого сайта ещё не пришло.
К ней обращаются прямо по адресу IPv4, поэтому дойти до неё можно только по IPv4 — и то, что она сообщает, и есть ваш адрес IPv4.
Спрашиваем…
К ней обращаются прямо по адресу IPv6, по той же причине наоборот: ничем, кроме IPv6, туда не попасть.
Спрашиваем…
Этот сайт предлагает оба семейства, поэтому ответившее — то, которое браузер выбрал сам.
Спрашиваем…
Два семейства адресов
Любое соединение идёт по IPv4 или по IPv6 и никогда по обоим сразу. Большинство сетей сегодня несут оба, поэтому один адрес — только половина ответа: ваши IPv4 и IPv6 это разные числа, они идут разными маршрутами, и каждое может существовать без другого.
Кого спрашивают
Три запроса уходят одновременно, все к точке trace у Cloudflare: один на записанный целиком адрес IPv4, один на записанный целиком адрес IPv6 и один на сам этот сайт. Записанный адрес и есть привязка к семейству — никакое имя не разрешается, — поэтому до первых двух можно дойти только тем семейством, которым они записаны, а третий сообщает, какое семейство выбрал браузер.
Как читать строку
Каждая строка — один ответ одной точки, вместе со страной, дата-центром Cloudflare, версией TLS, версией HTTP и состоянием WARP, которые пришли с ним. Они принадлежат строке, а не вам: одна и та же машина в один и тот же момент может дойти до одного дата-центра по IPv4 и до другого по IPv6, так что строкам позволено расходиться.
Что это раскрывает
Ничего из набранного вами никуда не уходит — здесь нечего набирать. Три запроса раскрывают ваш адрес Cloudflare, которая и так отдаёт эту страницу и уже его знала; вопрос задаётся вслух, а не отвечается молча. Ни один адрес не сохраняется, не переносится между визитами и не пишется в исходный код страницы — потому его там и не может быть при загрузке.
Почему браузер не может ответить на это сам
Такая страница выглядит так, будто может просто считать ответ с машины, на которой работает, — и не может. В браузерной платформе нет ничего, что раскрывало бы адрес, с которого вы выходите в интернет: нет свойства, которое читается, и нет разрешения, которое выдаётся. Адрес, который держит ваша собственная машина, почти никогда не тот, о котором вы спрашиваете: за домашним маршрутизатором это частный номер, который маршрутизатор переписывает на выходе, а в мобильной сети его может переписать ещё раз оператор. Единственная возможность браузера, когда-либо утекавшая адресом, — WebRTC, собиравший адреса самой машины, чтобы установить звонок, и всякий современный браузер прячет теперь и это за случайным именем, оканчивающимся на local. То есть через платформу число не было доступно никогда, а то немногое, что утекало, было всё равно не тем числом.
Адрес, который вы на самом деле имеете в виду, — не свойство вашего компьютера. Это то, что видит дальний конец соединения, когда до него доходит ваш трафик, и принадлежит он тому оборудованию, которое переписало его последним: вашему маршрутизатору, общему NAT оператора, точке выхода VPN, корпоративному прокси. Он существует только в глазах сервера, к которому вы обратились. Поэтому единственный способ его узнать — обратиться к такому серверу и спросить, что он увидел, и поэтому эта страница спрашивает трижды, а не один раз.
- Это не тот адрес, который операционная система показывает для сетевой карты. Тот обычно частный — адрес 192.168, адрес 10, адрес 172.16 — и что-то значит только внутри вашей же сети. По ту сторону маршрутизатора его не видит никто.
- Он не постоянный. Большинству домашних подключений выдают адрес, который может смениться, когда маршрутизатор переподключится или когда так решит оператор, а мобильное подключение может менять его на ходу. Адрес, вписанный в правило брандмауэра месяц назад, уже может принадлежать кому-то другому.
- И это не обязательно одно число. В сети, несущей оба семейства, у вас одновременно есть адрес IPv4 и адрес IPv6; это несвязанные числа, выданные разными частями одного и того же оператора, и идут они разными маршрутами.
Поэтому же ответа нет и в исходном коде страницы, и заглянувший туда не найдёт ничего. Каждая страница этого сайта записывается плоским файлом HTML при сборке сайта, задолго до того, как вы её откроете, и единственный адрес, доступный в тот момент, — адрес сборочной машины, который никого не касается и вас уж точно. Поэтому доходящий до вас файл несёт объяснение и три пустых подписанных места, а показания заполняются потом — вашим собственным браузером и из вашего собственного соединения. Если вы посмотрите исходный код и не найдёте адреса, вы читаете замысел, а не сбой.
Два семейства, и почему ответить может лишь одно
IPv4 и IPv6 — две отдельные системы адресов, и каждое отдельное соединение использует ровно одну из них от конца до конца. Адреса IPv4 — это привычные четыре числа, разделённые точками, и запас их кончился много лет назад; адреса IPv6 — длинные, записанные шестнадцатеричными группами через двоеточия, и их больше, чем кто-либо когда-нибудь потратит. Большинство сетей сегодня несут оба сразу — это и значит двойной стек — и в такой сети у вас есть адрес в каждом, без всякой арифметической связи между ними.
Именно это делает одно показание половиной ответа, и в эту ловушку попадает почти всякий инструмент такого рода. У имени этого сайта есть и запись IPv4, и запись IPv6, так что браузер выбирает одно из двух ещё до того, как здесь выполнится хоть строка кода, и инструмент, спрашивающий только «с какого адреса это пришло», узнаёт про то семейство и ни про какое другое. Читателю, пришедшему за своим IPv4, потому что его требует правило брандмауэра, могут показать IPv6 — и на странице не будет ничего, что сказало бы ему, что вторая половина существует, отсутствует или просто не была спрошена.
Привязать семейство — значит поэтому спросить там, где оно только одно. Два показания из трёх уходят к публичному распознавателю имён Cloudflare по адресу, записанному целиком, а не по имени, и записанный целиком адрес и есть сама привязка: разрешать нечего, так что у браузера нет выбора. До записанного целиком адреса IPv4 можно дойти только по IPv4, а до записанного целиком адреса IPv6 — только по IPv6, и сертификат покрывает сам адрес, так что каждое из них — обычное проверенное шифрованное соединение, а не трюк. Что вернулось от первого, то и есть ваш IPv4 по построению, а что вернулось от второго — ваш IPv6 по построению.
- Семейства может просто не быть. IPv6 предлагают ещё не всякий оператор, не на всяком тарифе и не на всяком маршрутизаторе в том виде, в каком он приехал из коробки, и сети без него сообщать нечего.
- Что-то по пути может его останавливать. Корпоративный брандмауэр, гостиничная сеть или защитное устройство способны отказать целому семейству — или отказать именно этой точке, пока остальное семейство работает прекрасно.
- Блокировка бывает молчаливой, а не явной. Отказ приходит сразу, и строка так и говорит; пакеты, отброшенные без ответа, выглядят ровно как ничего, и поэтому каждому показанию даётся ограниченное ожидание, после чего его оставляют, а не крутят вечно.
- Точка может ответить чем-то, что не является адресом. Это не то же самое, что молчание, и строка говорит, что именно случилось: инструмент, свернувший все виды неудачи в одно пустое поле, лишил бы вас возможности отличить необычную сеть от сломанной страницы.
«Определить не удалось» — это не «у вас нет»
Две ситуации важнее здесь всех прочих, и по неудавшемуся запросу они выглядят одинаково: не иметь семейства вовсе и иметь его заблокированным на выходе. Инструменты такого рода сообщают о них одинаково — обычно ничего не показывая и оставляя вас гадать. Эта страница их разделяет, и третье показание — весь механизм этого. Оно уходит к самому этому сайту, который предлагает оба семейства, так что ответившее — то, которое браузер выбрал, когда выбор был свободен; и одного этого факта хватает, чтобы превратить молчание в вывод.
- Собственная точка семейства ответила. Семейство у вас есть, его адрес стоит строкой ниже, и ничто другое, что узнает страница, этого не отменит.
- Она не ответила, а до этого сайта браузер дошёл по тому же самому семейству. Значит, оно у вас доказуемо есть — вы читаете им эту самую фразу, — и что-то между вами и той одной точкой остановило именно тот запрос. Вывод — определить не удалось, и причина написана рядом.
- Она не ответила, а до этого сайта браузер дошёл по другому семейству. Это единственный путь к «у вас его нет», и единственный случай, когда страница это скажет.
- Не ответила ни она, ни сам этот сайт. Тогда доказательств нет ни в одну сторону, и «определить не удалось» значит ровно это: инструмент не узнал ничего — утверждение об инструменте, а не о вашей сети.
Поэтому под каждым выводом стоит целая фраза, а не ссылка и не подсказка. «Определить не удалось» требует от вас двух совершенно разных вещей в зависимости от того, какой из двух случаев перед вами. Один говорит, что семейство, которое у вас точно есть, где-то между браузером и одним конкретным адресом блокируется, — и с этим стоит пойти разбираться. Другой говорит, что прогон не узнал ничего и его стоит повторить из другой сети. Цвет и слово этой разницы не унесут, а инструмент, который угадывал бы между ними, сообщал бы вам неправду о вашем же соединении.
Третье показание стоит прочесть и само по себе. Оно называет семейство, которое браузер предпочёл для обычного имени, предлагающего оба, — исход гонки, которую операционная система устраивает всякий раз, когда вы открываете страницу, и которую не решал никто из вас и не настраивал никто вообще, — и ни один сопоставимый инструмент о нём не сообщает. Оно же и есть тот факт, по которому сверялись оба вывода выше, и потому оно на странице, а не спрятано внутри рассуждения: читатель, предпочитающий проверить вывод, а не поверить ему, видит доказательство, из которого тот выведен.
Почему двум строкам позволено не совпадать
Каждое показание несёт больше, чем адрес. Тот же ответ сообщает страну, в которую точка поместила пришедший адрес, ответивший дата-центр Cloudflare, версию шифрованного транспорта, версию HTTP, которой воспользовался запрос, и то, пришло ли соединение через собственный клиент WARP у Cloudflare. Это печатается для каждой строки отдельно и никогда не сводится в одну сводку, потому что строки действительно расходятся: пока этот инструмент проектировался, одна машина в один момент дошла до дата-центра в Лондоне по IPv6 и до дата-центра в Израиле по IPv4. Ни одно показание не было ошибочным и ни одна сеть — неисправной.
- Страна — это то, куда точка помещает пришедший адрес; это поиск по адресу, а не какое-либо знание о вас. VPN её сдвигает, и так же делает оператор, раздающий адреса, зарегистрированные в соседней стране.
- Дата-центр — это ответившая площадка Cloudflare, трёхбуквенным кодом в духе кода аэропорта. Каждая из этих точек анонсируется сразу из многих мест, и до какой дойдёте вы, решает маршрутизация в интернете — отдельно для каждого семейства, отчего именно эта строка расходится чаще прочих.
- TLS — версия шифрования, на которой сошлось соединение. Она согласуется для каждого соединения отдельно, так что одна строка может отличаться от другой без всякой необычности.
- HTTP — версия протокола, которой воспользовался именно этот запрос. Она тоже решается для каждого соединения и зависит от того, как соединение было установлено, а не от чего-либо в вашей сети.
- WARP говорит, распознала ли Cloudflare трафик как идущий через её собственный клиент. У большинства читателей он выключен во всех трёх строках, и стоит здесь потому, что читателя, у которого он не выключен, иначе озадачила бы страна.
Так что читайте строку как рассказ об одном соединении и ни о чём более широком. Две строки, называющие два дата-центра, — не противоречие, которое надо разрешить; это два ответа о том, как ваши два семейства выходят из вашей сети, и как раз этого инструмент с одним адресом показать вам не может. Это и есть причина, по которой эти факты вообще привязаны к строкам: свернув их в одну, пришлось бы выбрать один из двух ответов и напечатать его так, будто он описывает оба.
Кого спрашивают, и чего этот инструмент делать не станет
Все три запроса уходят в одно и то же место: к точке trace у Cloudflare, отвечающей коротким перечнем фактов о только что пришедшем соединении. Сам этот сайт обслуживается через Cloudflare, так что спрашивают того, кто ваш адрес уже видел, — увидел, когда эта страница загружалась, ещё до того, как выполнилась хоть строка её собственного кода. Три запроса вслух просят то, что мгновением раньше было отдано молча, и никому новому этого не передают. Поэтому они делаются автоматически, а не за кнопкой: заслон согласия перед ними стоил бы вам того ответа, за которым вы пришли, и не купил бы ровным счётом ничего.
Довод этот частный, и стоит сказать прямо, что он не общее разрешение, потому что о почти любой другой точке та же фраза была бы ложной. Он верен, только пока спрашиваемая сторона — та же, что уже отдаёт страницу. Направьте такой инструмент к стороннему сервису адресов, и запрос перестанет быть эхом и станет настоящим раскрытием перед тем, у кого не было ничего, — и вот тут рассуждение придётся строить заново с начала, а не цитировать отсюда. Это одна из причин, по которым эта страница таким сервисом не пользуется.
Ничто из набранного вами никуда не отправляется — по той простой причине, что здесь нечего набирать: у страницы вообще нет поля ввода. Ни один адрес не сохраняется, не переносится между визитами и не записывается ни во что, что страница оставляет после себя. Нажатие «Обновить» берёт все три показания заново с самого начала и выводит оба заключения снова — именно это и делает страницу достойной того, чтобы держать её открытой, пока VPN поднимается или падает; и это же единственное, что вообще отправляет запросы во второй раз.
- Он не станет искать чужой адрес. Для этого нужна коммерческая база геолокации, опрашиваемая через третью сторону, а это отдало бы адрес тому, у кого его не было, — и это к тому же другой вопрос, чем тот, который задан в названии страницы.
- Он не назовёт вашего оператора, номер его автономной системы или город. Ничего этого в приходящих сюда ответах нет, а получение проходит через ту же третью сторону, что и выше.
- Он не покажет ваш локальный или частный адрес. Ни один современный браузер его больше не раскрывает, и это никогда не был тот адрес, который люди имеют в виду, задавая этот вопрос: его им и так показывает их собственная машина.
Ни одно из этого не пробел, ждущий заполнения. Каждое пришлось бы купить зависимостью от чужой базы и чужой продолжающейся доброй воли, а заплатить тем единственным, к чему эта страница относится бережно. Инструмент, отвечающий на один вопрос целиком — оба семейства, с доказательством для каждого и с честным молчанием там, где доказательства нет, — стоит здесь больше, чем отвечающий на четыре вопроса наполовину.
Частые вопросы
- Другой сайт показывает мне другой адрес. Какой из них верный?
- Скорее всего, оба. Большинство инструментов такого рода сообщают адрес, с которого пришло соединение к ним, то есть то семейство, которое выбрал ваш браузер, — так что сайт, показывающий вам IPv4, пока эта страница показывает IPv6, не спорит с ней, а отвечает про другую половину. Сравнивайте подобное с подобным: их ответ против здешней строки того же семейства. Если эти два действительно расходятся, значит, трафик выходит из вашей сети не одним маршрутом — VPN с раздельным туннелированием или оператор с несколькими выходами, — и это стоит знать, а не считать сбоем одной из страниц.
- Написано, что мой IPv6 определить не удалось. Есть у меня IPv6 или нет?
- Прочтите фразу под выводом: она стоит там ровно ради этого вопроса. Если в ней сказано, что браузер дошёл до этого сайта по IPv6, значит, IPv6 у вас есть и вы им сейчас пользуетесь, а что-то между вами и привязанной точкой остановило именно тот запрос — брандмауэр, защитное устройство или сеть, разрешающая семейство, но не этот адрес. Если сказано, что не ответили ни точка, ни сам сайт, то не узнано ничего ни в одну сторону, и честный ответ — что инструмент не знает. Это разные положения, и страница отказывается сворачивать их в одно.
- Можно ли посмотреть чужой адрес или узнать, где находится адрес?
- Нет, и это решение, а не упущение. Для ответа нужна коммерческая база геолокации, опрашиваемая через третью сторону: это сделало бы её первым здешним инструментом, зависящим от внешней службы, и отправило бы адрес тому, у кого его прежде не было. Это к тому же другой вопрос, чем тот, по которому названа страница: этот инструмент спрашивает, как ваше собственное соединение выглядит снаружи, и всё, о чём он сообщает, приходит из вашего соединения, а не из базы данных о ком-то.
- Отправляется ли мой адрес куда-нибудь и хранится ли он?
- Он раскрывается Cloudflare, которая и так отдаёт эту страницу и уже имела его до того, как был сделан хоть один из этих запросов, — в этом и вся причина, по которой их можно делать, не спросив вас заранее, и рассуждение верно только потому, что точки принадлежат тому же оператору. Кроме этого — ничего. Поля ввода на странице нет, так что отправляться нечему; ни один адрес не сохраняется в браузере, не переносится между визитами и не вписывается в страницу; и никакая другая сторона не опрашивается ни на одном шаге.
- Почему адреса нет в исходном коде страницы?
- Потому что страница была записана в файл при сборке сайта, а вашего соединения тогда ещё не существовало. Каждая страница здесь заранее отрисовывается в плоский HTML, так что единственный адрес, который мог бы быть вписан в файл, — адрес сборочной машины, и поставить его туда было бы и неверно, и утечкой. Вместо этого файл несёт объяснение и три пустых подписанных места; браузер делает три запроса уже после отрисовки страницы и заполняет их. Так что пустое место в исходном коде — это работающий замысел, а не не выполнившийся сценарий.
- Две строки показывают разные дата-центры и разные версии HTTP. Одна из них ошибочна?
- Ни одна. Каждая строка описывает одно соединение, а два ваших семейства действительно выходят из сети разными маршрутами, так что могут доходить до разных площадок Cloudflare — это и наблюдалось на одной машине в один момент при проектировании инструмента: Лондон по IPv6 и Израиль по IPv4. Версии транспорта и протокола тоже решаются для каждого соединения отдельно. Ровно поэтому эти факты печатаются напротив каждой строки, а не один раз на страницу: единственной сводной строке пришлось бы выбрать один из двух ответов и подать его так, будто он описывает оба.
- Я включил VPN, а адрес не изменился. Что произошло?
- Сначала нажмите «Обновить»: показания снимаются при загрузке страницы и не живые, так что адрес, оставшийся на экране с того времени, когда VPN ещё не поднялся, — это просто более старый ответ. Если после обновления строка IPv4 меняется, а строка IPv6 нет, вот здесь стоит остановиться: многие клиенты VPN несут только IPv4 и оставляют IPv6 выходить прямо из вашего соединения, так что ваш настоящий адрес по-прежнему отдаётся каждому сайту IPv6, который вы открываете. Именно возможность видеть оба семейства сразу делает это заметным, а инструмент, показавший вам один адрес, сказать вам этого не смог бы.