
Некоторые сайты, такие какhttp://www.geoip.co.ukмогу получить частный IP-адрес моего хоста, тогда как другие, какhttps://www.iplocation.net/не могут этого сделать.
В чем причина такого поведения? Я всегда думал, что частный IP недоступен для серверов, если я использую интерфейс NAT.
Добавляет ли NAT публичный IP к исходящему пакету или полностью удаляет частный IP? Если последнее, то почему наблюдается вышеупомянутое поведение?
Кроме того, когда я просматривал исходный кодhttp://www.geoip.co.uk, я заметил, что мой IP отображается напрямую как текст, т.е. без какого-либо вызова функции JavaScript. Так как же веб-сайт знает мой частный IPдоон вообще отображает веб-страницу?
10.9.64.58 — мой частный IP-адрес (тот, который я получаю после ipconfig).
EDIT: Как указал @simlev, я должен добавить следующую информацию: я студент университета и подключен к локальной сети института при посещении сайта с моего ПК, но я наблюдаю то же самое поведение и на моем телефоне, а мой телефон не находится в этой локальной сети. Скриншоты Imgurздесьиздесь.
EDIT: Еще одно наблюдение, которое я считаю важным: когда я посещаю веб-сайт с помощью https://, я получаю свой публичный IP (желаемая вещь), но только когда я посещаю его с помощью http://, я получаю частный IP. Так есть ли какая-то проблема протокола, о которой мы здесь говорим?
решение1
Используете ли вы http proxy? В моем случае веб-прокси перенаправляет внутренний ip, это, вероятно, функция защиты от злоупотреблений.
Аналогичная возможность заключается в том, что ваш провайдер предоставляет вам только общий внешний IP-адрес, а затем, когда вы посещаете веб-сайты, он также передает им ваш внутренний IP-адрес; это делается для того, чтобы идентифицировать злоумышленников: веб-сайт может предоставить оба IP-адреса при подаче отчета о злоупотреблении провайдеру, и благодаря внутреннему IP-адресу провайдер может быстро отследить злоупотребляющего пользователя. Было бы сложнее сделать это, имея только внешний общий IP-адрес.
Поскольку вместе с запросом передаются как внутренние, так и внешние IP-адреса, некоторые веб-сайты show-your-ip предпочитают показывать IP-адрес, с которого фактически пришел запрос, в то время как некоторые другие показывают IP-адрес, с чьей учетной записи был сделан запрос.
Проверьте заголовки, которые вы отправляете (например,здесь). Вероятно, у вас есть X-Forwarded-For с вашим частным IP-адресом, добавленным либо чем-то в вашей сети, либо одним из сетевых устройств интернет-провайдера.
Для получения дополнительной информации см. ответы Кристофера, Адама Каца и Марка.здесь. Кстати, Марк предлагает то же самое, что и я, и ссылается на тот же сайт :-)
Обновлять:да, вы (скорее всего) используете прокси-сервер.
Если вы находитесь на территории кампуса, как можно заключить из вашего комментария, то вполне логично, что ваш интернет-провайдер (он же университет) не подключает каждого своего студента напрямую к Интернету: я склонен предположить, что вы используете прозрачное прокси-соединение.
Обновлять:Как заметил и правильно указал OP, тот же сайт, посещённый по https, показывает внешний ip. Это ожидаемо, так как проксиобычноне изменяют https-трафик и, следовательно, не могут добавить X-Forwarded-For, который выдает внутренний IP-адрес.
решение2
Возможно, сайт использует уязвимость безопасности WebRTC.
- «Огромная уязвимость безопасности приводит к утечке реальных IP-адресов пользователей VPN».TorrentFreak. 30 января 2015 г.
Источник uBlock (для Firefox/для Хрома) способен закрыть эту уязвимость безопасности. Но вы должны перейти на страницу настроек и установить соответствующий флажок под названием «Предотвратить утечку локальных IP-адресов WebRTC».