Czy powinienem używać tylko IPv6, czy jednocześnie IPv4 i IPv6 na moim serwerze internetowym?

39

Mój serwer WWW (Ubuntu, Nginx) ma zarówno adres IPv4, jak i IPv6 przypisany przez hosta. Czy w przypadku mojej witryny powinienem powiązać ją tylko z adresem IPv6? Czy to standardowy zalecany sposób? Czy powinienem używać zarówno adresów IPv4, jak i IPv6?

THpubs
źródło
13
Zadajesz niewłaściwe pytanie (niewłaściwym osobom) - Zadaj sobie pytanie „Czy muszę mieć dostęp do tej witryny z klientów IPv4, klientów IPv6 lub obu?”. Odpowiedź na to pytanie jest również odpowiedzią na adresy, na których Twój serwer WWW musi nasłuchiwać.
voretaq7
6
Zwykle całkowicie zgadzam się z odpowiedzią „najpierw uzyskaj specyfikację” w ten sposób, ale w tym przypadku, co dziwne, nie rozumiem; Zgadzam się z Michaelem. „Tylko wersja v6” jest nadal, niestety, znikomo wymaganiem (choć jeśli tak, to ten komentarz jest całkowicie błędny). Jeśli tak nie jest, sprowadzamy się do „mieszanego stosu” i „tylko v4”. Nawet jeśli wszyscy użytkownicy twierdzą, że „tylko v4” ma rację, w tym momencie jest źle; mieszany stos to sposób na zabezpieczenie się na przyszłość, bez względu na to, co mówi obecna społeczność użytkowników.
MadHatter obsługuje Monikę
@MadHatter W tym momencie możemy bezpiecznie wyeliminować „tylko v4”. Ograniczenia związane z NAT na dużą skalę sprawiają, że operator strony internetowej lub jakiejkolwiek innej usługi internetowej nie nadaje się wyłącznie do wersji v4. Więcej szczegółów w mojej zaktualizowanej odpowiedzi.
Michael Hampton
@MichaelHampton nadal się z tobą zgadza.
MadHatter obsługuje Monikę

Odpowiedzi:

56

Użyj zarówno IPv4, jak i IPv6

Należy używać zarówno adresów IPv4, jak i IPv6.

Prawie każdy w Internecie ma obecnie adres IPv4 lub ma jakiś translator NAT i może uzyskiwać dostęp do zasobów IPv4.

Jednak w chwili pisania tego tekstu tylko około 0,7% 2,3% 3,8% 6,5% 9% 12% 19% 22% 26% Internetu jest w stanie obsługiwać IPv6 , ale liczba ta stale rośnie, ponieważ IPv6 zaczyna się pojawiać na całym świecie.

W niewielu miejscach dostawcy usług internetowych dostarczają głównie IPv6 lub tylko IPv6 klientom indywidualnym i używają NAT na dużą skalę, NAT64 lub innych podobnych rozwiązań dla łączności IPv4. Oczekuje się, że liczba ta wzrośnie w miarę wyczerpania przestrzeni adresowej IPv4. Ci użytkownicy zazwyczaj będą mieli lepszą wydajność niż IPv6.

Tam, gdzie dostawcy usług internetowych wdrożyli NAT na dużą skalę w celu rozwiązania problemu wyczerpania protokołu IPv4, użytkownicy, którzy utknęli w tej sytuacji, będą cierpieli z powodu mniejszej niezawodności wszystkich swoich połączeń internetowych z powodu ograniczeń związanych z wielkimi bramami NAT. Na przykład strona internetowa może załadować tylko niektóre, ale nie wszystkie zasoby , pozostawiając uszkodzone ikony tam, gdzie powinny być obrazy, brak stylów i skryptów itp. Jest to podobne do wyczerpania limitu połączeń na routerze domowym, ale wpływa na wszystkich użytkowników ISP sporadycznie i pozornie losowo. Jeśli chcesz, aby Twoja witryna była niezawodna dla tych użytkowników, musisz ją obsługiwać za pośrednictwem protokołu IPv6 (a dostawca usług internetowych musi wdrożyć protokół IPv6).

Ponieważ IPv6 jest miejscem, do którego zmierza Internet, włączenie Twojej witryny IPv6 daje Ci teraz przewagę nad konkurencją i pozwala rozwiązać wszelkie problemy na długo, zanim staną się poważne.

Skonfiguruj nginx

Domyślnie w Linuksie i nginx możesz jednocześnie łączyć się z IPv4 i IPv6, zmieniając swoje listendyrektywy na:

listen [::]:80;
listen 80;

Lub w przypadku witryn SSL:

listen [::]:443 ssl;
listen 443 ssl;
Michael Hampton
źródło
Ok, dziękuję ... jeszcze jedno pytanie .. Teraz mam skonfigurowany serwer ... W DNS powtarza się, muszę umieścić dwa rekordy A i AAAA (z nazwą hosta @) i wskazać na odradzające IP?
THpubs
3
Tak, Arekord dotyczy twojego adresu IPv4, a AAAArekord dotyczy twojego adresu IPv6.
Michael Hampton
Doskonały. Bardzo dziękuję za wyjaśnienie :) Jestem nowy w ipv6
THpubs
Nie jestem zaznajomiony z nginx, ale czy nie powinien listen 443;mieć również ssltakich jak listen [::]:443 ssl;? Więc listen 443 ssl;zamiast listen 443;.
CVn
@aCVn Tak, powinno. Dzięki za złapanie tego. To nauczy mnie edycji rzeczy na pół snu.
Michael Hampton
3

Powiązać oba!

Mieliśmy stronę internetową IIS, której kod zawierał wewnętrzne odniesienie do siebie, używając nazwy DNS, z której korzystał klient. Ten proces zawsze kończy się niepowodzeniem.

Innym objawem było to, że przeglądarka uruchomiona lokalnie na serwerze nie mogła znaleźć strony internetowej po nazwie serwera, tylko po adresie IPv4. Oznacza to, http://192.168.55.139że działałoby, ale http://myhostzawiodło. Użycie ping myhostdomyślnie zwróciłoby adres IPv6 ( ping myhost -4zwróciłoby adres IPv4).

Poprawka polegała na otwarciu IIS i zmianie powiązań strony internetowej na powiązanie z adresem IPv6, a także adresem IPv4.

wprowadź opis zdjęcia tutaj

Glen Little
źródło
6
Nie jest konieczne zaciemnianie prywatnych adresów. Chociaż powinieneś również powiązać swój globalny adres IPv6, aby Twoja witryna była dostępna zewnętrznie przez IPv6.
Michael Hampton
Wspomniany kod to Winnovative HTML to PDF Converter.
Glen Little
2
Posiadanie usługi dostępnej zarówno wewnętrznie, jak i zewnętrznie jest łatwiejsze, gdy nie korzystasz z NAT. I łatwiej jest uniknąć NAT, jeśli używasz IPv6. Ale ślepe łączenie się z nazwą hosta podaną przez klienta brzmi jak wada projektowa. Klient ma możliwość przesłania Hostnagłówka z nazwą domeny, która nie należy do Ciebie.
kasperd