私の Web サーバー (Ubuntu、Nginx) には、ホストによって割り当てられた IPv4 アドレスと IPv6 アドレスの両方があります。私の Web サイトでは、IPv6 アドレスのみにバインドする必要がありますか? これは標準の推奨方法ですか? それとも、IPv4 アドレスと IPv6 アドレスの両方を使用する必要がありますか?
答え1
IPv4とIPv6の両方を使用する
IPv4 アドレスと IPv6 アドレスの両方を使用する必要があります。
現在、インターネット上のほぼすべての人が IPv4 アドレスを持っているか、何らかの NAT の背後にいて、IPv4 リソースにアクセスできます。
しかし、この記事を書いている時点ではインターネットの約0.7% 2.3% 3.8% 6.5% 9% 12% 19% 22% 26% 32% 37% 43%のみがIPv6に対応していますしかし、IPv6 が世界中で導入され始めるにつれて、その数は着実に増加しています。
ごく一部の地域ではISPが提供している主にIPv6またはのみ住宅顧客への IPv6 と、IPv4 接続用の大規模 NAT、NAT64 またはその他のソリューションの使用。IPv4 アドレス空間が最終的に枯渇するにつれて、この数は増加すると予想されます。これらのユーザーは通常、IPv6 よりも優れたパフォーマンスが得られます。
ISPがIPv4枯渇の解決のために大規模なNATを導入した場合、ユーザーは大規模なNATゲートウェイに固有の接続制限により、インターネット接続の信頼性が低下することになります。たとえば、Webページはリソースのすべてをロードするのではなく、一部をロードする、画像があるべき場所に壊れたアイコンが残っていたり、スタイルやスクリプトが欠落していたりします。これは、家庭用ルーターの接続制限の枯渇に似ていますが、ISP のすべてのユーザーに断続的に、一見ランダムに影響を及ぼします。これらのユーザーに対してサイトの信頼性を確保したい場合は、IPv6 経由でサイトを提供する必要があります (ISP が IPv6 を導入している必要があります)。
インターネットは IPv6 に向かっているため、Web サイトで IPv6 を有効にすると、有利な立場に立つことができ、問題が深刻になる前に解決できるようになります。
nginxの設定
Linuxとnginxのデフォルトでは、次のようにしてIPv4とIPv6の両方に同時にバインドできます。listen
指示を変更するに:
listen [::]:80;
listen 80;
または、SSL サイトの場合:
listen [::]:443 ssl;
listen 443 ssl;
答え2
両方にバインドします!
クライアントが使用した DNS 名を使用して、コードが自分自身への内部参照を実行する IIS Web サイトがありました。このプロセスは常に失敗していました。
もう 1 つの症状は、サーバー上でローカルに実行されているブラウザーが、サーバー名では Web サイトを見つけられず、IPv4 アドレスでしか見つけられないというものでした。つまり、はhttp://192.168.55.139
動作しますが、http://myhost
失敗します。を使用するとping myhost
、デフォルトで IPv6 アドレスが返されます (ping myhost -4
は IPv4 アドレスを返します)。
修正方法は、IIS を開いて、Web サイトのバインドを変更し、IPv4 アドレスだけでなく IPv6 アドレスにもバインドすることです。