Як ми всі знаємо, адреса IPv4 для localhost
є 127.0.0.1
(адреса зворотного зв'язку). Для чого потрібна адреса IPv6 localhost
і для чого 0.0.0.0
мені потрібно заблокувати деякі хости оголошень.
Відповіді:
Як ми всі знаємо, що адреса 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:
::1
- адреса зворотного зв'язку в IPv6.
Всередині URL-адреси використовуйте квадратні дужки []
:
http://[::1]/
http://[::1]:80/
Включення літералу IPv6 у квадратні дужки для використання в URL-адресі визначено у RFC 2732 - Формат для буквальних адрес IPv6 у URL-адресах .
Локальний хост ipv6 є ::1
. Невстановлена адреса - ::
. Це визначено у розділі 2.5 RFC 4291 .
Лише для повноти: існують 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
)
Для використання в /etc/hosts
файл як просту техніку блокування реклами, яка призводить до того, що домен не вдається вирішити, адреса 0.0.0.0 широко застосовується, оскільки спричиняє негайний збій запиту, навіть не намагаючись, оскільки це недійсна або маршрутизована адреса. Це порівняно з використанням 127.0.0.1 у цьому місці, де він, принаймні, перевірить, чи прослуховує ваш власний комп’ютер на запитуваному порту 80, перш ніж вийде з ладу із повідомленням „з’єднання відмовлено”. Будь-яка з цих адрес, що використовуються у файлі хостів для домену, зупинить спроби будь-яких запитів через фактичну мережу, але 0.0.0.0 отримав прихильність, оскільки з вищевказаної причини є більш оптимальним. IP-адреси "127" намагатимуться потрапити на ваш власний комп'ютер, а будь-який інший IP призведе до надсилання запиту до маршрутизатора для спроби маршрутизації, але для 0.0.0.0 там '
Все сказане, достатньо будь-якого IP-адреси, вказаного у вашому файлі хостів для блокування домену, і вам не потрібно буде або не потрібно вводити адресу ipv6 у файл хостів, якщо - можливо - ви цього не зробите увімкнути ipv4 взагалі. Я б справді здивований, якби це було так. І все-таки, я думаю, якщо хост з'явиться в / etc / hosts з поганою адресою ipv4, коли у вас не ввімкнено ipv4, все одно ви отримаєте той результат, який ви шукаєте, а саме, щоб він провалився, замість того, щоб шукати реальний DNS, скажімо, adserver-example.com і повернення IP-адрес v4 або v6.