web-dev-qa-db-ja.com

WinSCPを使用してIPv6のみのサーバーに接続する

一部の家族から、WinSCPの構成を手伝ってほしいと頼まれました。複数のサーバーに接続する必要があります。サーバーの中にはデュアルスタックのものもあれば、IPv6のみのものもあります。

これまでに行ったことは次のとおりです。

  • WinSCPを https://winscp.net/ からインストールします
  • キーペアを生成しました
  • ホスト名とユーザー名のさまざまな組み合わせをLoginウィンドウに保存しました。

これは、デュアルスタックホストへの接続に最適です。ただし、IPv6のみのホストに接続しようとすると、次のエラーメッセージが表示されます。

Host "hostname.example.net" does not exist.

しかし、私が使用しているホスト名は正しいです。さらに調査するために、Ubuntu14.04マシンを同じLANに接続しました。そして、Ubuntuマシンで次のように入力します。

ssh hostname.example.net

Ubuntuマシンは、まったく同じホスト名に問題なく接続します。

ネットワーク構成を調べたところ、両方のマシンで同じことがわかりました。

  • ワイヤレスインターフェースにはIPv4アドレスがあります
  • ワイヤレスインターフェイスにはIPv6アドレスがありません
  • 正しいIPv6アドレスを正常に取得したTeredoインターフェイスがあります

接続する必要のあるIPv6のみのサーバーは、専用のTeredoリレーを備えたLAN上にあるため、信頼性の高い接続が可能であり、実際にUbuntuクライアントから機能します。

IPv6のみのホストに正常に接続するには、WindowsやWinSCPの構成を何を変更する必要がありますか?

(より良い代替手段がある場合、Teredoは必須ではありません。デフォルトでWindowsマシンに構成されているIPv6アドレスはTeredoだけです。)

2
kasperd

問題は、WindowsがAAAAルックアップを試行しなかったことです。おそらく、IPv6アドレスがTeredoアドレスのみの場合にAAAAルックアップを実行する価値がないと考えられるためです。

明示的なアドレスが指定されている限り、IPv6接続は機能します。

そこで、ホスト名フィールドの名前をサーバーの実際のIPv6アドレスに置き換えることで、接続を確立することができました。その後、WinSCPは接続できました。

私の場合、サーバーには静的IPv6アドレスがあります(少なくとも現在のプロバイダーにある限り)。したがって、WinSCPに保存されたログインに静的IPv6アドレスがあることは、大きな問題ではありません。

1
kasperd

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に照会します。

Geoff Huston、Teredoのテスト

ただし、この動作を変更することは明らかに可能です。お気に入りのレジストリエディタで、キーHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Dnscache\Parametersに移動し、0に設定されたDWORD値AddrConfigControlを追加します。

残念ながら、 この設定に関する公式のドキュメントはないようです

1
Bob