내 웹 서버 (Ubuntu, Nginx)에는 호스트에서 할당 한 IPv4 및 IPv6 주소가 모두 있습니다. 내 웹 사이트의 경우 IPv6 주소에만 바인딩해야합니까? 표준 권장 방법입니까? 아니면 IPv4 및 IPv6 주소를 모두 사용해야합니까?
답변
IPv4와 IPv6 모두 사용
IPv4 및 IPv6 주소를 모두 사용해야합니다.
인터넷상의 거의 모든 사람이 현재 IPv4 주소를 가지고 있거나 NAT 뒤에 있으며 IPv4 리소스에 액세스 할 수 있습니다.
그러나 글을 쓰는 시점에서 인터넷의 약 0.7 % 2.3 % 3.8 % 6.5 % 9 % 12 % 19 % 22 % 26 %만이 IPv6를 지원 하지만 IPv6가 전 세계적으로 출시되기 시작함에 따라 그 수는 꾸준히 증가하고 있습니다.
소수의 장소에서 ISP는 주거 고객 에게 주로 IPv6 또는 IPv6 만 제공하고 있으며 대규모 NAT, NAT64 또는 기타 IPv4 연결 솔루션을 사용하고 있습니다. IPv4 주소 공간이 마침내 소진됨에 따라이 숫자는 증가 할 것으로 예상됩니다. 이러한 사용자는 일반적으로 IPv6보다 성능이 향상됩니다.
ISP가 IPv4 고갈을 해결하기 위해 대규모 NAT를 배치 한 경우, 사용자는 대규모 NAT 게이트웨이에 내재 된 연결 제한으로 인해 모든 인터넷 연결의 안정성이 저하됩니다. 예를 들어, 웹 페이지는 일부 리소스 만 로드 할 수 있지만 이미지가 있어야하는 위치에 깨진 아이콘이 남거나 스타일 및 스크립트가 누락되는 등의 문제가 발생할 수 있습니다 . 이는 홈 라우터의 연결 제한 소진과 비슷하지만 모든 사용자에게 영향을 미칩니다. ISP가 간헐적으로 그리고 임의로 보이는 것처럼 보입니다. 이러한 사용자가 사이트를 안정적으로 사용하려면 IPv6을 통해 사이트를 제공해야하며 ISP가 IPv6을 배포해야합니다.
IPv6은 인터넷이가는 곳이기 때문에 이제 웹 사이트 IPv6을 사용하도록 설정하면 게임보다 앞서 나가고 문제가 심각해지기 전에 문제를 해결할 수 있습니다.
nginx 구성
기본적으로 Linux 및 nginx에서는 지시문 을 다음과 같이 변경하여listen
IPv4와 IPv6에 동시에 바인딩 할 수 있습니다 .
listen [::]:80;
listen 80;
또는 SSL 사이트의 경우 :
listen [::]:443 ssl;
listen 443 ssl;
답변
둘 다에 바인딩!
클라이언트가 사용한 DNS 이름을 사용하여 코드가 자체적으로 내부 참조를 수행 한 IIS 웹 사이트가있었습니다. 이 프로세스는 항상 실패합니다.
또 다른 증상은 서버에서 로컬로 실행되는 브라우저가 서버 이름으로 만 IPv4 주소로만 웹 사이트를 찾을 수 없다는 것입니다. 즉, http://192.168.55.139
작동하지만 http://myhost
실패합니다. ping myhost
기본적으로 사용 하면 IPv6 주소 ping myhost -4
가 반환됩니다 (IPv4 주소가 반환 됨).
수정 사항은 IIS를 열고 IPv4 주소뿐만 아니라 IPv6 주소에 바인딩하도록 웹 사이트의 바인딩을 변경하는 것이 었습니다.