[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:26569] Re: [summary] Re: ssh connection refused



In article <20010124013937.28C785D88@xxxxxxxxxxxxxxxxxxxx> (at Wed, 24 Jan 2001 10:39:37 +0900), SAITO Naohiko <n_saito@xxxxxxxxxxxxx> says:

> > # "ListenAddress 0.0.0.0" を明示すると IPv6 で使えないから消された?
> 
> どうもそのようで、IPv4 の方だけ明示すると
> Server listening on :: port 22.
> って IPv6 なカンジのログが出てこないみたいですので IPv4 only で動作して
> るのかな...?

はい。

ListenAddress を指定しないと、getaddrinfo(3) のサポートするすべての 
address family の socket を生成して bind(2) しようとします。
(socket(2) の失敗は無視されるので、ipv6 が有効/loadable でなければ
 ipv6 は使われません)

で、original linux では ipv6 と ipv4 の socket を同時に同じ port に
bind(2) できず、ipv6 socket だけができて ipv4 通信は ipv4-mapped 
address の形で ipv6 socket を通して application に渡されます。
でもその sockaddr_in6{} が小さいので怒られるのです。

一方、ListenAddress 0.0.0.0 だけを指定しておくと
ipv4 socket だけを生成してそれを使って通信するので、
大丈夫、というわけです。

USAGI Linux (linux24, linux22) では ipv6, ipv4 両方の socket を
同一 port に bind(2) できるように改造してありますし(設定可能)、
linux22 では sin6_scope_id をつけられます(設定可能)。
USAGI glibc には sin6_scope_id がない、古い形でも問題ないようになって
います。というわけで、いずれにしろ問題はおこりません。:-)

注意: glibc の入れ替えは危険なため、libinet6 というライブラリを提供する
      方向になっています。

相性、というか依存をまとめると、

 linux 2.4 + glibc 2.2
 linux 2.4 + glibc 2.1
 linux 2.2 + glibc 2.1

は ok ですが、

 linux 2.2 + glibc 2.2

は ng ということになりますが、ipv6 をお使いになるのであれば 
linux 2.4 をおすすめします。
#USAGI Product はほかにもいろいろ改善/機能追加していますのでなおよいです。:-)

-- 
Hideaki YOSHIFUJI @ USAGI Project  <yoshfuji@xxxxxxxxxxxxxx>
PGP5i FP: F731 6599 5EB2 BBA7 1515  1323 1806 A96F 5700 6B25