私のWebサーバー(Ubuntu、Nginx)には、ホストによってIPv4アドレスとIPv6アドレスの両方が割り当てられています。私のウェブサイトでは、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またはonlyIPv6を提供しています住宅の顧客に、大規模なNAT、NAT64、またはIPv4接続用のその他のそのようなソリューションを使用します。この数は、IPv4アドレススペースが最終的に使い果たされると増加すると予想されます。これらのユーザーは通常、IPv6よりもパフォーマンスが優れています。
ISPが大規模に展開している場合NAT IPv4の枯渇を解決するために、これで立ち往生しているユーザーは、大規模に固有の接続制限により、すべてのインターネット接続の信頼性が低下しますNATゲートウェイ。たとえば、Webページは そのリソースのすべてではなく一部のみをロードする のみで、画像があるべき場所に壊れたアイコンが残っている、スタイルやスクリプトが欠けている、などです。これは接続に似ています。ホームルーターの枯渇を制限しますが、ISPのすべてのユーザーに断続的かつランダムに影響します。これらのユーザーに対してサイトの信頼性を確保するには、IPv6を介してサービスを提供する必要があります(ISPはIPv6を展開している必要があります)。
IPv6がインターネットに向かっているので、WebサイトのIPv6を有効にすると、ゲームの先を行くことができ、深刻になる前に問題を解決できます。
Linuxおよびnginxでは、デフォルトで listen
ディレクティブ を次のように変更して、IPv4とIPv6の両方に同時にバインドできます。
listen [::]:80;
listen 80;
または、SSLサイトの場合:
listen [::]:443 ssl;
listen 443 ssl;
両方にバインド!
クライアントが使用していたDNS名を使用して、コードがそれ自体を内部参照するIIS Webサイトがありました。このプロセスは常に失敗します。
もう1つの症状は、サーバー上でローカルに実行されているブラウザーが、IPv4アドレスだけではサーバーの名前でWebサイトを見つけられないことでした。つまり、http://192.168.55.139
は機能しますが、http://myhost
は失敗します。 ping myhost
を使用すると、デフォルトでIPv6アドレスが返されます(ping myhost -4
はIPv4アドレスを返します)。
修正は、IISを開き、IPv6アドレスとIPv4アドレスにバインドするようにWebサイトのバインディングを変更することでした。