Чи слід використовувати лише IPv6 або обидва IPv4 та IPv6 на своєму веб-сервері?


39

Мій веб-сервер (Ubuntu, Nginx) має адреси IPv4 та IPv6, призначені хостом. Чи потрібно прив’язати його до свого веб-сайту лише до адреси IPv6? Це стандартний рекомендований спосіб? Або я повинен використовувати як IPv4, так і IPv6 адреси?


13
Ви ставите неправильне запитання (невірним людям) - запитайте себе: "Чи потрібно мені мати доступ до цього сайту від клієнтів IPv4, клієнтів IPv6 або обох?". Відповідь на це - також відповідь на те, які адреси вашого веб-сервера потрібно слухати.
voretaq7

6
Зазвичай я б повністю погоджувався з такою відповіддю "спочатку отримай свої характеристики", але в цьому випадку, як не дивно, я цього не роблю; Я згоден з Майклом. "v6 only" все ще, на жаль, є маловірогідним вимогою (хоча якщо це так, цей коментар є абсолютно неправильним). Якщо це не так, ми переходимо до "змішаного стека" та "лише v4". Навіть якщо всі ваші користувачі кажуть, що "v4 only" правильно, на даний момент це неправильно; змішаний стек - це шлях до майбутнього захисту, незалежно від того, про що говорить нинішня спільнота користувачів.
MadHatter підтримує Моніку

@MadHatter На цьому етапі ми можемо сміливо усунути "лише v4". Притаманні обмеження широкомасштабного NAT роблять лише v4 неможливим для оператора веб-сайту або, можливо, будь-якого іншого Інтернет-сервісу. Детальніше у моїй оновленій відповіді.
Майкл Хемптон

@MichaelHampton все ще з вами згоден.
MadHatter підтримує Моніку

Відповіді:


56

Використовуйте і IPv4, і IPv6

Ви повинні використовувати як IPv4, так і IPv6 адреси.

Майже кожен в Інтернеті наразі має адресу IPv4 або позаду якоїсь NAT і може отримати доступ до ресурсів IPv4.

Однак на момент написання лише близько 0,7% 2,3% 3,8% 6,5% 9% 12% 19% 22% 26% Інтернету здатні підтримувати IPv6 , але це число постійно зростає, коли IPv6 починає розгортатися у всьому світі.

В небагатьох місцях Інтернет-провайдери надають головним чином IPv6 або лише IPv6 приватним клієнтам та використовують широкомасштабні NAT, NAT64 або інші подібні рішення для підключення IPv4. Очікується, що ця кількість зросте, коли остаточно вичерпано адресний простір IPv4. Ці користувачі, як правило, мають кращу продуктивність порівняно з IPv6.

Там, де провайдери розгорнули широкомасштабний NAT для вирішення вичерпання IPv4, користувачі, що затримуються при цьому, будуть страждати від зниженої надійності всіх своїх інтернет-з'єднань через обмеження підключення, властиві широкомасштабним NAT-шлюзам. Наприклад, веб-сторінка може завантажувати лише деякі, але не всі її ресурси , залишаючи зламані піктограми там, де мають бути зображення, відсутні стилі та сценарії тощо. Це схоже на обмеження вичерпання з'єднання на домашньому маршрутизаторі, але впливає на всіх користувачів ISP з перервами і, здавалося б, випадковим чином. Якщо ви хочете, щоб ваш сайт був надійним для цих користувачів, ви повинні обслуговувати його через IPv6 (а провайдер повинен мати розгорнутий IPv6).

Оскільки IPv6 - це куди йде Інтернет, включення вашого веб-сайту IPv6 тепер випереджає гру та дозволяє вирішувати будь-які проблеми задовго до того, як вони стануть серйозними.

Налаштування nginx

За замовчуванням з Linux та nginx ви можете одночасно прив’язатись до IPv4 та IPv6, змінивши свої listenдирективи на:

listen [::]:80;
listen 80;

Або для SSL-сайтів:

listen [::]:443 ssl;
listen 443 ssl;

Добре дякую ... ще одне питання .. Тепер у мене налаштування сервера ... У DNS повторюється, я повинен поставити два записи A і AAAA (з ім'ям хоста @) і вказувати на відповідні ips?
THpubs

3
Так, Aзапис призначений для вашої IPv4-адреси, а AAAAзапис - для вашої IPv6-адреси.
Майкл Хемптон

Ідеально. Дякую за пояснення :) Я новачок у ipv6 речі
THpubs

Я не знайомий з nginx, але чи не повинен listen 443;також бути таким, sslяк listen [::]:443 ssl;? Тож listen 443 ssl;замість listen 443;.
CVn

@aCVn Так, так і повинно. Дякуємо, що це зробили. Це навчить мене редагувати речі під час засинання.
Майкл Хемптон

3

Прив’яжись до обох!

У нас був веб-сайт IIS, код якого внутрішньо посилався на себе, використовуючи ім'я DNS, яке використовував клієнт. Цей процес завжди був би невдалим.

Ще одним симптомом було те, що браузер, який працює локально на сервері, не міг знайти веб-сайт за іменем сервера, лише за IPv4 адресою. Тобто, http://192.168.55.139працювало б, але http://myhostпровалилося б. Використання ping myhostза замовчуванням поверне IPv6 адресу ( ping myhost -4поверне IPv4 адресу).

Виправлення полягало в тому, щоб відкрити IIS та змінити Прив'язки веб-сайту, щоб прив'язати до IPv6-адреси, а також IPv4-адреси.

введіть тут опис зображення


6
Приховувати приватні адреси не потрібно. Хоча вам слід також прив’язати до вашої глобальної адреси IPv6, щоб ваш сайт міг бути доступний зовні через IPv6.
Майкл Хемптон

Згаданий код був Winnovative HTML to PDF Converter.
Глен Малий

2
Маючи сервіс, доступний як всередині, так і зовні, простіше, коли ви не використовуєте NAT. І NAT простіше уникнути, якщо ви використовуєте IPv6. Але сліпо підключення до імені хоста, наданого клієнтом, звучить як вада дизайну. Клієнт цілком може надіслати вам Hostзаголовок з доменним іменем, яке не належить вам.
kasperd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.