Должен ли я использовать только IPv6 или оба IPv4 и IPv6 на моем веб-сервере?

39

Мой веб-сервер (Ubuntu, Nginx) имеет адреса IPv4 и IPv6, назначенные хостом. Для моего веб-сайта, я должен связать это только с IPv6-адресом? Это стандартный рекомендуемый способ? Или я должен использовать оба адреса IPv4 и IPv6?

THpubs
источник
13
Вы задаете неправильный вопрос (не тем людям). Задайте себе вопрос: «Нужно ли мне иметь доступ к этому сайту с клиентов IPv4, клиентов IPv6 или обоих?». Ответ также является ответом на то, какие адреса должен прослушивать ваш веб-сервер.
voretaq7
6
Обычно я бы полностью согласился с таким ответом «сначала получи спецификации», но в этом случае, как ни странно, нет; Я согласен с Майклом. «только v6», к сожалению, все еще маловероятно, чтобы быть требованием (хотя, если это так, этот комментарий совершенно неверен). Если это не так, то мы до «смешанного стека» и «только v4». Даже если все ваши пользователи говорят, что «только v4» правильно, на данный момент это неправильно; Смешанный стек - это путь к будущему, независимо от того, что говорит текущее сообщество пользователей.
MadHatter поддерживает Монику
@MadHatter На данный момент, мы можем безопасно устранить «v4-only». Присущие ограничения крупномасштабного NAT делают v4-only непригодным для оператора веб-сайта или, возможно, любого другого интернет-сервиса. Более подробная информация в моем обновленном ответе.
Майкл Хэмптон
@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-шлюзам. Например, веб-страница может загружать только некоторые, но не все свои ресурсы , оставляя поврежденные значки там, где должны быть изображения, пропуская стили и сценарии и т. Д. Это похоже на исчерпание ограничения соединения на домашнем маршрутизаторе, но затрагивает всех пользователей Интернет-провайдер периодически и, казалось бы, случайно. Если вы хотите, чтобы ваш сайт был надежным для этих пользователей, вы должны обслуживать его через 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заголовок с доменным именем, которое вам не принадлежит.
Касперд