SSHがnetstatでプロトコルをtcp6 *および* tcpとして表示するのはなぜですか?


8
$ 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(:::220.0.0.0:22)の2つのレコードがあるのか、なぜ一方がプロトコルとしてtcp、もう一方がtcp6

これはUbuntu 12.04.4にあります


6
まあ、SSHはIPv4とIPv6の両方のワイルドカードアドレスをリッスンしているので、IPv4とIPv6の両方を介してSSHデーモンに到達できます。
Andreas Wiese 14

回答:


8

デフォルトでsshdはipv4とipv6を使用します。次のAddressFamilyディレクティブを使用して、sshdが使用するプロトコルを設定できます。/etc/ssh/sshd_config

ipv4&ipv6の場合(デフォルト)

AddressFamily any

ipv4のみ

AddressFamily inet

ipv6のみ

AddressFamily inet6

変更を加えた後、変更を有効にするためにsshd_config再起動sshdします。


6

実はちょっと面白いです

基本的に、IPv6を完全に無効にしても、カーネルの不思議な理由により、一部のソケットは「TCP6 / UDP6」として識別されます。

IPv6サポートのインクなしで3Gネットワ​​ークに接続されたAndroidフォンでnetstatを実行した後に気づきました(APN設定で無効にされ、キャリアによって明示的にサポートされていません)

WhatsAppのTCP6接続がどういうわけか持続するのを見た後、私は調査を開始し、このリンクを見つけました:https ://blog.codecentric.de/en/2014/04/note-netstat/


0

::IPv4とIPv6の両方にのみバインドして通信することが可能です。opensshを含む一部のアプリケーションがこれを利用しない理由を知りました。

FreeBSD開発者向けハンドブックのIPv6に関するこのセクションには、関連する興味深いコメントがいくつかあります。

RFC2553は、ワイルドカードバインドの問題、特にポートスペースの問題、障害モード、およびAF_INET / INET6ワイルドカードバインド間の関係について、あまり話していないようです。このRFCには、それに準拠しているが動作が異なる複数の個別の解釈が存在する場合があります。したがって、移植可能なアプリケーションを実装するには、カーネルの動作について何も仮定しないでください。getaddrinfo(3)を使用するのが最も安全な方法です。ポート番号スペースとワイルドカードバインドの問題は、1999年3月中旬にipv6impメーリングリストで詳細に議論され、具体的なコンセンサス(手段、実装者まで)がないようです。メーリングリストのアーカイブをチェックしたいかもしれません。

このデフォルトの動作は、かなりの数のシステムがIPv6をサポートしていなかったときに定義されたと推測することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.