一部の家族から、WinSCPの構成を手伝ってほしいと頼まれました。複数のサーバーに接続する必要があります。サーバーの中にはデュアルスタックのものもあれば、IPv6のみのものもあります。
これまでに行ったことは次のとおりです。
Login
ウィンドウに保存しました。これは、デュアルスタックホストへの接続に最適です。ただし、IPv6のみのホストに接続しようとすると、次のエラーメッセージが表示されます。
Host "hostname.example.net" does not exist.
しかし、私が使用しているホスト名は正しいです。さらに調査するために、Ubuntu14.04マシンを同じLANに接続しました。そして、Ubuntuマシンで次のように入力します。
ssh hostname.example.net
Ubuntuマシンは、まったく同じホスト名に問題なく接続します。
ネットワーク構成を調べたところ、両方のマシンで同じことがわかりました。
接続する必要のあるIPv6のみのサーバーは、専用のTeredoリレーを備えたLAN上にあるため、信頼性の高い接続が可能であり、実際にUbuntuクライアントから機能します。
IPv6のみのホストに正常に接続するには、WindowsやWinSCPの構成を何を変更する必要がありますか?
(より良い代替手段がある場合、Teredoは必須ではありません。デフォルトでWindowsマシンに構成されているIPv6アドレスはTeredoだけです。)
問題は、WindowsがAAAAルックアップを試行しなかったことです。おそらく、IPv6アドレスがTeredoアドレスのみの場合にAAAAルックアップを実行する価値がないと考えられるためです。
明示的なアドレスが指定されている限り、IPv6接続は機能します。
そこで、ホスト名フィールドの名前をサーバーの実際のIPv6アドレスに置き換えることで、接続を確立することができました。その後、WinSCPは接続できました。
私の場合、サーバーには静的IPv6アドレスがあります(少なくとも現在のプロバイダーにある限り)。したがって、WinSCPに保存されたログインに静的IPv6アドレスがあることは、大きな問題ではありません。
Microsoftテクニカルノート( http://technet.Microsoft.com/en-us/library/bb727035.aspx )、WindowsVistaまたはWindowsで説明されているように7ローカルIPv6インターフェイスがリンクローカルインターフェイスとTeredoインターフェイスのみである場合、クライアントはDNSにIPv6アドレスをクエリしません(AAAAレコードのDNS名をクエリします)。言い換えると、Teredoは、インターネットに接続され、NATの背後にある多数のエンドシステムで有効になっている可能性がありますが、そのようなシステムは、通常のイベントの過程でTeredoを呼び出してIPv6のみのURLにアクセスしません。使用するIPv6アドレスをDNSに照会します。
ただし、この動作を変更することは明らかに可能です。お気に入りのレジストリエディタで、キーHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Dnscache\Parameters
に移動し、0
に設定されたDWORD値AddrConfigControl
を追加します。
残念ながら、 この設定に関する公式のドキュメントはないようです 。