Что такое IPV6 для localhost и 0.0.0.0?
Как мы все знаем, IPv4-адрес для localhost
- 127.0.0.1
(loopback-адрес). Что такое IPv6-адрес для localhost
и 0.0.0.0
поскольку мне нужно блокировать некоторые рекламные хосты.
Ответы
Ответ 1
Как и все мы сейчас, IPv4-адрес для localhost
- 127.0.0.1
(адрес обратной связи).
Фактически, любой адрес IPv4 в 127.0.0.0/8
является адресом обратной связи.
В IPv6 прямым аналогом петлевого диапазона является ::1/128
. Итак, ::1
- это единственный петлевой адрес IPv6.
И хотя имя хоста localhost
обычно разрешается в 127.0.0.1
или ::1
, я видел случаи, когда кто-то связывал его с IP-адресом, который не является петлевым адресом.Это немного безумно... но иногда люди делают это.
Блокировка 0.0.0.0
не имеет смысла. В IPv4 он никогда не маршрутизируется. Эквивалентом в IPv6 является адрес :: /128
... который также никогда не маршрутизируется.
Адреса 0.0.0.0
и :: /128
зарезервированы для обозначения "любой адрес". Так, например, программа, предоставляющая веб-сервис, может связываться с портом 80 0.0.0.0
для приема HTTP-соединений через любой из адресов IPv4 хоста.
Для получения дополнительной информации прочитайте страницы Википедии по адресам IPv4 и IPv6:
Ответ 2
IPv6 localhost
::1
- это петлевой адрес в IPv6.
Внутри URL
В URL-адресе используйте квадратные скобки []
:
http://[::1]/
По умолчанию используется порт 80.
http://[::1]:80/
Укажите порт.
Заключение литерала IPv6 в квадратные скобки для использования в URL-адресе определено в RFC 2732 - Формат литеральных адресов IPv6 в URL-адресе.
Ответ 3
IPv6 localhost - ::1
. Неопределенный адрес ::
Это определено в разделе 2.5 RFC 4291.
Ответ 4
Для использования в /etc/hosts
в качестве простой техники блокировки рекламы, которая приводит к сбою разрешения домена, широко используется адрес 0.0.0.0, поскольку он вызывает немедленный сбой запроса, даже не пытаясь его выполнить, поскольку он недопустим или маршрутизируемый адрес. Это по сравнению с использованием 127.0.0.1 в этом месте, где он, по крайней мере, проверит, прослушивает ли ваш собственный компьютер запрошенный порт 80, прежде чем произойдет сбой с сообщением "отказано в соединении". Любой из этих адресов, используемых в файле hosts для домена, не позволит выполнять любые запросы по фактической сети, но 0.0.0.0 получил преимущество, поскольку он более "оптимален" по вышеуказанной причине. "127" IP-адреса будут пытаться попасть на ваш собственный компьютер, а любой другой IP-адрес вызовет отправку запроса на маршрутизатор, чтобы попытаться направить его, но для 0.0.0.0 некуда даже отправить запрос.
При этом достаточно указать любой IP-адрес, указанный в файле хостов, для блокировки домена, и вам не нужно или не нужно добавлять адрес ipv6 в файл хостов, если - возможно, - вы этого не сделаете. ipv4 включен вообще. Я был бы очень удивлен, если бы это было так. И все же, хотя, я думаю, что появление хоста в /etc/hosts с плохим адресом ipv4, когда у вас не включен ipv4, все равно даст вам результат, который вы ищете, а именно, что он потерпит неудачу, вместо поиска реальный DNS, скажем, adserver-example.com и получение IP-адреса v4 или v6.
Ответ 5
Просто ради полноты: существуют IPv4-сопоставленные IPv6-адреса, куда вы можете встроить 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
)