banner
herman

herman

哈哈哈哈哈哈哈哈哈哈哈哈哈哈

「V4のデバイスのみ」が「V6のデバイスのみ」にアクセスするためのテクニック

众所周知,アクセス元が特定の理由でIPv4のみを有効にしている場合、アクセス先が特定の理由でIPv6のみを有効にしている場合、両者は相互にアクセスすることはできません

例えば、私は会社のコンピュータ(会社のネットワークは IPv4 のみを有効にしています)で自宅の NAS(モバイルブロードバンドは IPv6 のみを持っています)にアクセスすることはできません。

解決策:プロキシを使用する。#

前提として、プロキシサーバーがデュアルスタックである必要があります(通常はデュアルスタックです)。https://ip.zxinc.org/ipquery/ で確認できます。

小知識:(天地极限のエキスパートによる提供)

デュアルスタック環境では、プログラムが IPv4 または IPv6 プロトコルを使用するかは、プログラム自体が決定します。DNS サーバーは、プログラムが優先的にどのプロトコルを使用するかを制御する能力を持っていません。

DNS リクエストでは、クエリのタイプを指定する必要があります。IPv4 アドレスは A タイプであり、IPv6 アドレスは AAAA タイプです。IPv4 と IPv6 アドレスを同時にクエリするタイプは存在しません。

したがって、プログラムは同時に 2 種類のアドレスをクエリし、プログラム自体のロジックに基づいてどちらを使用するかを選択する必要があります。ほとんどの BSD ソケット API を使用するプログラムでは、getaddrinfo を使用してドメイン名を解決し、順番に接続を試みます。この場合、どのプロトコルを優先して接続するかはシステムによって制御されます。getaddrinfo がどのプロトコルを先頭に配置するかによって、プログラムが優先的に接続します。

また、curl やさまざまなブラウザなど、特別に設計されたプログラムには、他のロジックがあります。たとえば、まずローカルの IPv6 アドレスをチェックし、それがローカルネットワークアドレスであれば IPv6 を使用しないようにします。グローバルアドレスであれば、IPv4 と IPv6 アドレスを同時に解決し、優先的に IPv6 に接続します。一定の時間(1 秒など)内に接続が成功しない場合は、IPv4 に接続を試み、最後に最初に確立された接続を使用します。

1702363756657.gif

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。