NETCREATESBLOGネットクリエイツの公式ブログ

sshdでIPv6も使いたいの

secureログに下記のようなエラーが記録されることがあります。

Apr 28 10:32:41 server sshd[26055]: Server listening on :: port 22.
Apr 28 10:32:41 server sshd[26055]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.

これはIPv4アドレス(0.0.0.0)でポート22番を待ち受けようとしたところ、既にポート22番は使われているよという内容です。
この時、sshdはIPv6アドレス(::)で既に待ち受けを開始しているのでエラーが出るのは当然です。

 

この問題の解決策としてよく挙げられているのは「sshd_configにIPv4アドレスでの待ち受けを明示的に書けばよい」というものです。

【変更前】sshd_config
#ListenAddress 0.0.0.0
#ListenAddress ::

【変更後】sshd_config
ListenAddress 0.0.0.0
#ListenAddress ::

こうすればsshdはIPv4アドレスでのみポート22番を待ち受けるようになり、「error: Bind to port 22 on 0.0.0.0 failed: Address already in use.」という例のエラーも記録されなくなります。

 

しかし、これではIPv6アドレスからsshdにアクセスできません・・・

 

「使わないものは入れない、使わないポートは閉じる」というのは基本かもしれませんが、 “IPv6関連の設定を無効にしたら良くなった” 的なアドバイスに溢れ、IPv6に触れる機会を奪うようなインターネットじゃあIPv6は普及しませんよね。

 

例のエラーも無くし、IPv6アドレスからでもsshを利用するには下記のようにsshd_configを直してください。

【変更後】sshd_config
#ListenAddress 0.0.0.0
ListenAddress ::

こうすればsshdはIPv6アドレスでのみポート22番を待ち受けるようになります。

 

え? IPv4は??

 

と思われるかもしれませんが、大丈夫。
sshdはIPv6だけで待ち受けていても、IPv4なクライアントから接続があればちゃんとIPv4射影アドレスからの接続として受け入れてくれます。

・netstatで見るとこんな感じ
tcp 0   0 :::22                   :::*                         LISTEN
tcp 0 132 ::ffff:192.168.11.1:22  ::ffff:192.168.11.112:2367   ESTABLISHED

 

お試しあれ~

トラックバック(0)

このブログ記事に対するトラックバックURL: https://netcreates.jp/blog/2009/05/sshdipv6.html/trackback