Mengapa SSH menunjukkan protokol sebagai tcp6 * dan * tcp di 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  

Mengapa ada dua catatan port 22 ( :::22dan 0.0.0.0:22) dan mengapa satu menggunakan protokol sebagai tcpdan yang lainnya sebagaitcp6

Ini ada di Ubuntu 12.04.4

pengguna80551
sumber
6
Yah, karena SSH mendengarkan alamat wildcard IPv4 dan IPv6 sehingga Anda bisa mencapai daemon SSH Anda melalui IPv4 dan IPv6.
Andreas Wiese

Jawaban:

8

Secara default sshdmenggunakan ipv4 dan ipv6. Anda dapat mengkonfigurasi protokol yang digunakan sshd melalui AddressFamilyinstruksi di/etc/ssh/sshd_config

Untuk ipv4 & ipv6 (default)

AddressFamily any

Hanya untuk ipv4

AddressFamily inet

Hanya untuk ipv6

AddressFamily inet6

Setelah Anda membuat perubahan untuk sshd_configmemulai kembali sshdagar perubahan berlaku.

Sungai kecil
sumber
6

Sebenarnya, ini sedikit lebih menarik

Pada dasarnya, bahkan jika Anda sepenuhnya menonaktifkan IPv6, beberapa soket akan diidentifikasi sebagai "TCP6 / UDP6" karena alasan kernel yang aneh.

Saya perhatikan setelah menjalankan netstat di ponsel android yang terhubung ke jaringan 3G tanpa tinta dukungan IPv6 (dinonaktifkan di pengaturan APN dan secara eksplisit tidak didukung oleh operator)

Setelah saya melihat bahwa koneksi TCP6 dari WhatsApp tetap ada, saya mulai meneliti dan menemukan tautan ini: https://blog.codecentric.de/en/2014/04/note-netstat/

John Edwards Cummings
sumber
0

Dimungkinkan untuk hanya mengikat ::dan berbicara baik IPv4 dan IPv6. Saya bertanya-tanya mengapa beberapa aplikasi, termasuk openssh, tidak memanfaatkan ini.

Bagian ini tentang IPv6 dalam buku pegangan pengembang FreeBSD memiliki beberapa komentar menarik yang mungkin relevan:

Tampaknya RFC2553 berbicara terlalu sedikit tentang masalah wildcard bind, terutama pada masalah ruang port, mode kegagalan dan hubungan antara AF_INET / INET6 wildcard bind. Mungkin ada beberapa interpretasi terpisah untuk RFC ini yang sesuai dengan itu tetapi berperilaku berbeda. Jadi, untuk mengimplementasikan aplikasi portabel Anda tidak perlu berasumsi tentang perilaku di kernel. Menggunakan getaddrinfo (3) adalah cara teraman. Ruang nomor port dan masalah wildcard binding dibahas secara rinci di milis ipv6imp, pada pertengahan Maret 1999 dan tampaknya tidak ada konsensus konkret (berarti, hingga pelaksana). Anda mungkin ingin memeriksa arsip milis.

Kami juga dapat berspekulasi bahwa perilaku default ini ditentukan ketika sejumlah besar sistem tidak memiliki dukungan IPv6.

cpugeniusmv
sumber