Что такое IPV6 для localhost и 0.0.0.0?

101

Как мы все знаем, адрес IPv4 для localhostis 127.0.0.1(адрес обратной связи). Что такое IPv6 - адрес для localhostи 0.0.0.0как мне нужно , чтобы блокировать некоторые рекламные хосты.

Killerbeans
источник

Ответы:

120

Как мы все знаем, IPv4-адрес localhost- это 127.0.0.1(адрес обратной связи).

Фактически, любой IPv4-адрес 127.0.0.0/8является адресом обратной связи.

В IPv6 прямым аналогом диапазона обратной петли является ::1/128. Итак ::1(полная форма 0:0:0:0:0:0:0:1) - это единственный адрес обратной петли IPv6.


Хотя имя хоста localhostобычно разрешается в 127.0.0.1или ::1, я видел случаи, когда кто-то привязывал его к IP-адресу, который не является адресом обратной связи. Это немного безумие ... но иногда люди так поступают.

Я говорю «это безумие», потому что этим вы можете нарушить предположения приложения; например, приложение может попытаться выполнить обратный поиск по петлевому IP-адресу и не получить ожидаемый результат. В худшем случае приложение может случайно отправить конфиденциальный трафик по незащищенной сети ... хотя вам, вероятно, придется совершить и другие ошибки, чтобы «добиться» этого.


Блокировка 0.0.0.0не имеет смысла. В IPv4 он никогда не маршрутизируется. Эквивалент в IPv6 - это ::адрес (полная форма 0:0:0:0:0:0:0:0) ... который также никогда не маршрутизируется.

0.0.0.0И ::адреса зарезервированы для обозначения «любой адрес». Так, например, программа, предоставляющая веб-службу, может привязаться к 0.0.0.0порту 80 для приема HTTP-соединений через любой из IPv4-адресов хоста. Эти адреса недействительны в качестве адреса источника или назначения для IP-пакета.


Наконец, в некоторых комментариях был задан вопрос по ::/128сравнению с ::/0против ::.

В чем разница?

Строго говоря, первые два - это нотация CIDR, а не IPv6-адреса. Фактически они указывают диапазон IP-адресов. CIDR состоит из IP-адреса и дополнительного числа, определяющего количество бит в сетевой маске. Эти два вместе определяют диапазон адресов; т.е. набор адресов, образованный игнорированием битов, замаскированных из данного адреса.

Так:

  • :: означает только IPv6-адрес 0:0:0:0:0:0:0:0
  • ::/128означает 0:0:0:0:0:0:0:0с сетевой маской, состоящей из 128 бит. Это дает диапазон сети с одним адресом в нем.
  • ::/0означает 0:0:0:0:0:0:0:0с маской сети, состоящей из 0 бит. Это дает диапазон сети с 2 128 адресами в нем .; т.е. это все адресное пространство IPv6!

Для получения дополнительной информации прочитайте страницы Википедии об адресах IPv4 и IPv6 и нотации CIDR:

Стивен С
источник
65

IPv6 localhost

::1- адрес обратной связи в IPv6.

Внутри URL

В URL используйте квадратные скобки []:

  • http://[::1]/
    По умолчанию порт 80.
  • http://[::1]:80/
    Укажите порт.

Заключение литерала IPv6 в квадратные скобки для использования в URL-адресах определено в RFC 2732 - Формат для буквальных адресов IPv6 в URL-адресах .

Томачи
источник
4

Просто для полноты: существуют IPv6-адреса с отображением IPv4 , где вы можете встроить IPv4-адрес в IPv6-адрес (может не поддерживаться каждым оборудованием IPv6).

Пример: я запускаю сервер на своей машине, к которому можно получить доступ через http://127.0.0.1:19983/solr. Если я обращаюсь к нему через IPv4-сопоставленный IPv6-адрес, я получаю к нему доступ через http://[::ffff:127.0.0.1]:19983/solr(который будет преобразован в http://[::ffff:7f00:1]:19983/solr)

Стефан Ротер-Штюбс
источник
2

Для использования в /etc/hostsВ качестве простого метода блокировки рекламы, приводящего к сбою разрешения домена, широко используется адрес 0.0.0.0, поскольку он вызывает немедленный сбой запроса, даже не пытаясь, поскольку это недопустимый или маршрутизируемый адрес. Это по сравнению с использованием 127.0.0.1 в этом месте, где он, по крайней мере, проверит, прослушивает ли ваш собственный компьютер запрошенный порт 80, прежде чем произойдет сбой с «отказом в соединении». Любой из этих адресов, используемых в файле hosts для домена, остановит попытки выполнения любых запросов по реальной сети, но 0.0.0.0 получил признание, потому что он более «оптимален» по вышеуказанной причине. «127» IP-адресов будут пытаться поразить ваш собственный компьютер, а любой другой IP-адрес вызовет отправку запроса на маршрутизатор, чтобы попытаться маршрутизировать его, но для 0.0.0.0 там '

При этом достаточно иметь любой IP-адрес, указанный в вашем файле hosts для блокируемого домена, и вам не нужно и не нужно также помещать адрес ipv6 в файл hosts, если - возможно - вы не включить ipv4. Хотя я был бы очень удивлен, если бы это было так. И тем не менее, я думаю, что наличие хоста в / etc / hosts с плохим адресом ipv4, когда у вас не включен ipv4, все равно даст вам результат, который вы ищете, а именно, чтобы он потерпел неудачу, вместо того, чтобы искать реальный DNS, скажем, adserver-example.com, и получить обратно IP v4 или v6.

XP84
источник