Netcat - Bagaimana cara mendengarkan pada port TCP menggunakan alamat IPv6?

13

Saya menggunakan versi terbaru netcat ( v1.10-41.1) yang sepertinya tidak memiliki opsi untuk alamat IPv6 (seperti -6pada versi sebelumnya nc).

Jika saya mengetik nc -lvnp 2222dan mengecek port mendengarkan netstat -punta, server tampaknya hanya mendengarkan port 2222untuk alamat IPv4:

tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      2839/nc  

tcp6 tidak aktif seperti, misalnya, server apache2 saya:

tcp6       0      0 :::80                   :::*                    LISTEN      -
bashbin
sumber

Jawaban:

17

Setidaknya ada 3 atau 4 implementasi netcat yang berbeda seperti yang terlihat di Debian:

  • netcat-traditional 1.10-41 yang asli yang tidak mendukung IPv6: mungkin yang Anda instal.
  • netcat6 yang dibuat untuk menawarkan IPv6 (oldstable, digantikan).
  • netcat-openbsd 1.130-3. Apakah mendukung IPv6.
  • ncat 7.70 + dfsg1-3 mungkin sedikit lebih baru karena tidak ada di Debian stable, yang disediakan oleh nmap , mendukung IPv6.

Saya akan memilih yang openbsd. Setiap versi dapat memiliki sintaks yang sedikit berbeda, jadi berhati-hatilah.

Omong-omong: socat adalah alat yang jauh lebih baik yang benar-benar dapat melakukan lebih dari netcat. Kamu harus mencobanya!

AB
sumber
2
Luar biasa. Terima kasih telah menyarankan socatalat ini. Tampaknya memiliki lebih banyak pilihan, dan yang berikut: socat tcp6-listen:2222melakukan pekerjaan.
bashbin
2
@bashbin tetapi sedikit lebih verbose dalam sintaksnya. itu akan menjadi socat tcp6-listen:2222,reuseaddr -(atau mungkin reuseportsebaliknya) jika Anda ingin menggunakannya dua kali berturut-turut ketika server (perintah socat) terputus pertama.
AB
4

Saya percaya fungsionalitas ipv4 & ipv6 sebenarnya adalah hasil dari kebingungan di mana ada beberapa implementasi (garpu) atau versi yang sama sekali berbeda. Jika Anda mencari Anda akan menemukan menyebutkan nc6. Implementasi ini tampaknya berada di distro berbasis BSD.

Saya akan mencoba menginstal nc6pada distro khusus Anda dan menjalankannya alih-alih ncuntuk dukungan ipv6.

Penelitian lebih lanjut

Saya dapat menemukan komit ini bertanggal 2018-01-11- tambahkan patch IPv6 yang jelas-jelas menambahkan fungsionalitas IPv6 kembali ke apa yang Anda panggil versi netcat yang lebih baru .

CATATAN: Saya hanya memiliki akses ke nc 7,50 pada sistem saya dan itu, seperti yang Anda jelaskan, mendukung keduanya -4dan -6.

Saya menduga apa yang Anda pikirkan adalah versi netcat yang lebih baru sebenarnya adalah versi yang jauh lebih tua: http://nc110.sourceforge.net/ .

Jika Anda ingin daftar lengkap dari berbagai implementasi ini tersedia di pertanyaan Wikipedia tentang Netcat .

Versi asli netcat adalah program Unix. Versi terakhir (1.10) dirilis pada Maret 1996. 1

Pada sebagian besar distro Linux, baik GNU netcat atau versi NMAP tampaknya merupakan yang paling banyak digunakan:

Ada beberapa implementasi pada sistem POSIX , termasuk penulisan ulang dari awal seperti GNU netcat [5] atau OpenBSD netcat, 6 yang terakhir mendukung IPv6 dan TLS . Versi OpenBSD telah porting ke pangkalan FreeBSD 7 dan Windows / Cygwin. 8 Mac OS X dilengkapi dengan netcat yang diinstal pada OSX 10.13 atau pengguna dapat menggunakan MacPorts untuk menginstal varian. [9] Netcat versi Microsoft Windows juga tersedia. [10]

Misalnya, pada CentOS 7.x:

$ nc --version
Ncat: Version 7.50 ( https://nmap.org/ncat )

$ rpm -qf /bin/nc
nmap-ncat-6.40-13.el7.x86_64
slm
sumber