WebサーバーでIPv6のみを使用するか、IPv4とIPv6の両方を使用する必要がありますか?


39

私のWebサーバー(Ubuntu、Nginx)には、ホストによって割り当てられたIPv4アドレスとIPv6アドレスの両方があります。私のウェブサイトでは、IPv6アドレスのみにバインドしますか?標準的な推奨方法ですか?または、IPv4アドレスとIPv6アドレスの両方を使用する必要がありますか?


13
間違った質問を(間違った人に)質問している-「IPv4クライアント、IPv6クライアント、またはその両方からこのサイトにアクセスできるようにする必要がありますか?」それに対する答えは、Webサーバーがリッスンする必要があるアドレスに対する答えでもあります。
voretaq7

6
通常、そのような「仕様を最初に」という答えには完全に同意しますが、この場合、奇妙なことに、そうではありません。マイケルに同意します。「v6のみ」は、残念ながら、要件となる可能性はほとんどありません(ただし、そうである場合でも、このコメントは完全に間違っています)。そうでない場合、「混合スタック」と「v4のみ」になります。ユーザーがすべて「v4のみ」が正しいと言っても、この時点では間違っています。ミックススタックは、現在のユーザーコミュニティが何と言おうとも、将来を見据えた方法です。
MadHatterは、

@MadHatterこの時点で、「v4-only」を安全に削除できます。大規模NATの固有の制限により、v4のみがWebサイトまたは他のインターネットサービスの運営者にとっては受け入れられません。更新された回答の詳細。
マイケルハンプトン

@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が世界中に普及し始めるにつれて、その数は着実に増加しています。

ごく少数の場所で、ISPは主に IPv6またはIPv6 のみを住宅の顧客に提供し、IPv4接続に大規模なNAT、NAT64またはその他のソリューションを使用しています。この数は、IPv4アドレス空間が使い果たされるにつれて増加することが予想されます。通常、これらのユーザーはIPv6よりも優れたパフォーマンスを発揮します。

ISPがIPv4の枯渇を解決するために大規模NATを展開している場合、これにこだわるユーザーは、大規模NATゲートウェイに固有の接続制限により、すべてのインターネット接続の信頼性が低下します。たとえば、Webページはすべてのリソースはなく一部のみをロードし、画像があるはずの場所に壊れたアイコンを残したり、スタイルやスクリプトが欠落したりします。これはホームルーターの接続制限の枯渇に似ていますが、 ISPは断続的かつ一見ランダムになります。これらのユーザーに対してサイトの信頼性を高めたい場合は、IPv6経由で提供する必要があります(ISPはIPv6を展開している必要があります)。

IPv6はインターネットの行き先であるため、WebサイトのIPv6を有効にすると、ゲームを先に進め、問題が深刻になるずっと前に問題を解決できるようになります。

nginxを構成する

Linuxおよびnginxのデフォルトではlistenディレクティブを次のよう変更することにより、IPv4とIPv6の両方に同時にバインドできます

listen [::]:80;
listen 80;

または、SSLサイトの場合:

listen [::]:443 ssl;
listen 443 ssl;

わかりました。もう1つ質問があります。サーバーをセットアップしました。DNS再帰で、2つのレコードAとAAAA(ホスト名@)を配置し、関連するIPを指す必要がありますか?
THpubs

3
はい、AレコードはIPv4アドレス用であり、AAAAレコードはIPv6アドレス用です。
マイケルハンプトン

パーフェクト。説明してくれてありがとう:) ipv6の新機能
THpubs

私はnginxのに慣れていないんだけど、ないはずlisten 443;も持っているsslだけのようにlisten [::]:443 ssl;?のlisten 443 ssl;代わりにlisten 443;
CVn

@aCVnはい、そうすべきです。キャッチしてくれてありがとう。それは私が眠っている間に物事を編集することを教えてくれます。
マイケルハンプトン

3

両方にバインド!

クライアントが使用したDNS名を使用して、自身の内部参照を行うコードを持つIIS Webサイトがありました。このプロセスは常に失敗します。

もう1つの症状は、サーバー上でローカルに実行されているブラウザーが、サーバーの名前ではなく、IPv4アドレスのみでWebサイトを見つけることができなかったことです。つまり、http://192.168.55.139動作しますが、http://myhost失敗します。を使用ping myhostすると、デフォルトでIPv6アドレスping myhost -4が返されます(IPv4アドレスが返されます)。

修正は、IISを開き、Webサイトのバインドを変更して、IPv4アドレスと同様にIPv6アドレスにバインドすることでした。

ここに画像の説明を入力してください


6
プライベートアドレスを難読化する必要はありません。ただし、IPv6を介して外部からサイトにアクセスできるように、グローバルIPv6アドレスにもバインドする必要があります。
マイケルハンプトン

言及されたコードはでしたWinnovative HTML to PDF Converter
グレンリトル14年

2
NATを使用しない場合、内部および外部の両方からサービスにアクセスできます。また、IPv6を使用している場合は、NATを避ける方が簡単です。しかし、クライアントが提供するホスト名に盲目的に接続することは、設計上の欠陥のように聞こえます。クライアントが、自分にHost属していないドメイン名のヘッダーを送信することは完全に可能です。
カスペルド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.