$ netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
ポート22に2つのレコード(:::22
および)があるのはなぜですか? 1つはプロトコルを次に使用し、1つは次に使用しますか?0.0.0.0:22
tcp
tcp6
これはUbuntu 12.04.4にあります
答え1
デフォルトでは、sshd
ipv4とipv6が使用されます。AddressFamily
次のコマンドを使用して、sshdが使用するプロトコルを設定できます。/etc/ssh/sshd_config
ipv4とipv6の場合(デフォルト)
AddressFamily any
IPv4でのみ利用可能
AddressFamily inet
IPv6でのみ利用可能
AddressFamily inet6
変更を適用するには、変更してsshd_config
再起動してください。sshd
答え2
実際、それはもっと面白いです。
デフォルトでは、IPv6を完全に無効にしても、いくつかのソケットは奇妙なカーネルの理由のために「TCP6 / UDP6」として認識されます。
3Gネットワークに接続されており、IPv6をサポートしていないAndroid携帯電話でnetstatを実行した後、この問題が見つかりました(APN設定で無効になっており、キャリアによって明示的にサポートされていません)。
WhatsAppへのTCP6接続が何とか持続することを確認した後、調査を開始して次のリンクを見つけました。 https://blog.codecentric.de/en/2014/04/note-netstat/
答え3
::
IPv4とIPv6をまとめて会話するだけでも可能です。なぜ一部のアプリケーション(opensshを含む)がそれを利用しないのか疑問に思います。
これFreeBSD開発者マニュアルのIPv6セクション関連性があるかもしれないいくつかの興味深いコメントがあります。
RFC2553は、特にポートスペースの問題、障害モード、およびAF_INET / INET6ワイルドカードバインディングの間の関係に関して、ワイルドカードバインディングの問題についてあまりにも少し説明しているようです。このRFCは複数の一致する解釈を持つことができますが、異なる動作をする可能性があります。したがって、移植可能なアプリケーションを実装するには、カーネルの動作を想定しないでください。 getaddrinfo(3) を使用するのが最も安全な方法です。 1999年3月中旬、ポート番号の空白とワイルドカードバインディングの問題はipv6impメーリングリストで長く議論されましたが、具体的な合意はありませんでした(意味は実装者によって異なります)。メーリングリストのアーカイブを確認してください。
また、多数のシステムがIPv6をサポートしていない場合、このデフォルトの動作が定義されていると推測することもできます。