Indy HTTP プロキシの IPv6 バインドと送信側 IPVersion
有効化の前に明示的なローカル IPv4/IPv6 バインドを追加します。接続前に OutboundClient で必要なネクストホップのファミリを選択します。
ProxyServer.Bindings.Clear;
with ProxyServer.Bindings.Add do
begin
IPVersion := Id_IPv4;
IP := '127.0.0.1';
Port := 8080;
end;
with ProxyServer.Bindings.Add do
begin
IPVersion := Id_IPv6;
IP := '::1';
Port := 8080;
end;これを既存の非アクティブな TIdHTTPProxyServer に適用し、通常の有効化を行います。loopback アドレスは意図的にローカルクライアントだけを受け付けます。リモート利用には到達可能なインターフェイスアドレスとアクセス制御が必要です。 結果として生じるアクセス境界を確認する そのリスナを公開する前に.
受信側のバインドと送信側のソケットは別の役割を担います。
| ソケット | ファミリの選択 |
|---|---|
| クライアントがプロキシに到達 | 明示的な各 Bindings エントリ |
| プロキシがネクストホップに到達 | コンテキストの OutboundClient.IPVersion |
したがって IPv6 リスナはすべての宛先を IPv6 に強制しません。ワークロードが明示的なネクストホップのファミリを必要とする場合は、そのクライアントが接続する前に OnHTTPBeforeCommand で設定し、意図した宛先経路に合わせます。
片側だけが動作する場合は、リスナの障害とネクストホップの障害を切り分けます。自動バインドに頼ると、プラットフォーム依存の前提が比較に持ち込まれることがあります。