Pourquoi SSH affiche-t-il le protocole comme tcp6 * et * tcp dans netstat?

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  

Pourquoi y a-t-il deux enregistrements du port 22 ( :::22et 0.0.0.0:22) et pourquoi l'un utilise-t-il le protocole as tcpet l'autre commetcp6

C'est sur Ubuntu 12.04.4

user80551
la source
6
Eh bien, parce que SSH écoute les adresses génériques IPv4 et IPv6 afin que vous puissiez atteindre votre démon SSH via IPv4 et IPv6.
Andreas Wiese

Réponses:

8

Par défaut, sshdutilise ipv4 et ipv6. Vous pouvez configurer le protocole utilisé par sshd via la AddressFamilydirective/etc/ssh/sshd_config

Pour ipv4 et ipv6 (par défaut)

AddressFamily any

Pour ipv4 uniquement

AddressFamily inet

Pour ipv6 uniquement

AddressFamily inet6

Après avoir apporté des modifications, sshd_configredémarrez sshdpour que les modifications prennent effet.

Ruisseau
la source
6

En fait, c'est un peu plus intéressant

Fondamentalement, même si vous désactivez complètement IPv6, certains sockets seront identifiés comme "TCP6 / UDP6" pour des raisons de noyau curieuses.

Je l'ai remarqué après avoir exécuté netstat sur un téléphone Android connecté à un réseau 3G sans encrage de prise en charge IPv6 (désactivé dans les paramètres APN et explicitement non pris en charge par l'opérateur)

Après avoir vu que les connexions TCP6 de WhatsApp persistent, j'ai commencé des recherches et trouvé ce lien: https://blog.codecentric.de/en/2014/04/note-netstat/

John Edwards Cummings
la source
0

Il est possible de se lier uniquement ::et de parler à la fois IPv4 et IPv6. Je me suis demandé pourquoi certaines applications, dont openssh, n'en profitent pas.

Cette section sur IPv6 dans le manuel du développeur FreeBSD contient des commentaires intéressants qui peuvent être pertinents:

Il semble que RFC2553 parle trop peu sur le problème de liaison de caractères génériques, en particulier sur le problème d'espace de port, le mode d'échec et la relation entre la liaison de caractères génériques AF_INET / INET6. Il peut y avoir plusieurs interprétations distinctes pour cette RFC qui s'y conforment mais se comportent différemment. Donc, pour implémenter une application portable, vous ne devez rien supposer du comportement du noyau. Utiliser getaddrinfo (3) est le moyen le plus sûr. L'espace des numéros de port et les problèmes de liaison avec les caractères génériques ont été discutés en détail sur la liste de diffusion ipv6imp, à la mi-mars 1999 et il semble qu'il n'y ait pas de consensus concret (moyens, jusqu'aux implémenteurs). Vous voudrez peut-être vérifier les archives de la liste de diffusion.

Nous pouvons également spéculer que ce comportement par défaut a été défini lorsqu'un nombre important de systèmes ne prenaient pas en charge IPv6.

cpugeniusmv
la source