Netcat atau nc adalah utilitas jaringan untuk men-debug dan menyelidiki jaringan.
Utilitas ini dapat digunakan untuk membuat koneksi TCP/UDP dan menyelidikinya. Penggunaan terbesar dari utilitas ini adalah dalam skrip di mana kita perlu menangani soket TCP/UDP.
Dalam artikel ini kita akan mempelajari tentang perintah netcat dengan beberapa contoh praktis.
1. Netcat dalam Arsitektur Server-Client
Utilitas netcat dapat dijalankan dalam mode server pada port tertentu yang mendengarkan koneksi masuk.
$ nc -l 2389
Juga, dapat digunakan dalam mode klien mencoba untuk terhubung pada port(2389) yang baru saja dibuka
$ nc localhost 2389
Sekarang, jika kita menulis beberapa teks di sisi klien, itu akan mencapai sisi server. Ini buktinya :
$ nc localhost 2389 HI, server
Di terminal tempat server berjalan :
$ nc -l 2389 HI, server
Jadi kita melihat bahwa utilitas netcat dapat digunakan dalam komunikasi soket server klien.
2. Gunakan Netcat untuk Mentransfer File
Utilitas netcat juga dapat digunakan untuk mentransfer file. Di sisi klien, misalkan kita memiliki file bernama 'testfile' yang berisi :
$ cat testfile hello test
dan di sisi server kami memiliki file kosong 'test'
Sekarang, kami menjalankan server sebagai :
$ nc -l 2389 > test
dan jalankan klien sebagai :
cat testfile | nc localhost 2389
Sekarang, ketika kita melihat file 'test' di akhir server, kita melihat :
$ cat test hello test
Jadi kami melihat bahwa data file telah ditransfer dari klien ke server.
3. Netcat Mendukung Batas Waktu
Ada kasus ketika kita tidak ingin koneksi tetap terbuka selamanya. Dalam hal ini, melalui sakelar '-w' kita dapat menentukan batas waktu dalam koneksi. Jadi setelah detik yang ditentukan bersama dengan flag -w, koneksi antara klien dan server dihentikan.
Server :
nc -l 2389
Klien :
$ nc -w 10 localhost 2389
Sambungan di atas akan dihentikan setelah 10 detik.
CATATAN :Jangan gunakan flag -w dengan flag -l di sisi server karena dalam kasus ini flag -w tidak akan berpengaruh dan koneksi tetap terbuka selamanya.
4. Netcat Mendukung Konektivitas IPV6
Bendera -4 atau -6 menentukan bahwa utilitas netcat harus menggunakan jenis alamat mana. -4 memaksa nc untuk menggunakan alamat IPv4 sementara -6 memaksa nc untuk menggunakan alamat IPv6.
Server :
$ nc -4 -l 2389
Klien :
$ nc -4 localhost 2389
Sekarang, jika kita menjalankan perintah netstat, kita melihat :
$ netstat | grep 2389 tcp 0 0 localhost:2389 localhost:50851 ESTABLISHED tcp 0 0 localhost:50851 localhost:2389 ESTABLISHED
Kolom pertama pada output di atas akan berisi postfix '6' jika alamat IPv6 digunakan. Karena dalam kasus ini tidak, maka koneksi antara server dan klien dibuat menggunakan alamat IPv4.
Sekarang, Jika kita memaksa nc untuk menggunakan alamat IPv6
Server :
$ nc -6 -l 2389
Klien :
$ nc -6 localhost 2389
Sekarang, jika kita menjalankan perintah netstat, kita melihat :
$ netstat | grep 2389 tcp6 0 0 localhost:2389 localhost:33234 ESTABLISHED tcp6 0 0 localhost:33234 localhost:2389 ESTABLISHED
Jadi sekarang postfix '6' dengan 'tcp' menunjukkan bahwa nc sekarang menggunakan alamat IPv6.
5. Nonaktifkan Membaca dari STDIN di Netcat
Fungsionalitas ini dapat dicapai dengan menggunakan flag -d. Dalam contoh berikut, kami menggunakan tanda ini di sisi klien.
Server :
$ nc -l 2389
Klien :
$ nc -d localhost 2389 Hi
Teks 'Hai' tidak akan dikirim ke server karena menggunakan opsi -d, pembacaan dari stdin telah dinonaktifkan.
6. Paksa Server Netcat untuk Tetap Up
Jika klien netcat terhubung ke server dan kemudian setelah beberapa saat klien terputus maka biasanya server netcat juga berakhir.
Server :
$ nc -l 2389
Klien :
$ nc localhost 2389 ^C
Server :
$ nc -l 2389 $
Jadi, dalam contoh di atas kita melihat bahwa begitu klien terputus, server juga dihentikan.
Perilaku ini dapat dikontrol dengan menggunakan tanda -k di sisi server untuk memaksa server tetap terjaga bahkan setelah klien terputus.
Server :
$ nc -k -l 2389
Klien :
$ nc localhost 2389 ^C
Server :
$ nc -k -l 2389
Jadi kita melihat bahwa dengan menggunakan opsi -k server tetap aktif meskipun klien terputus.
7. Konfigurasikan Klien Netcat untuk Tetap Up setelah EOF
Klien Netcat dapat dikonfigurasi untuk tetap terjaga setelah EOF diterima. Dalam skenario normal, jika klien nc menerima karakter EOF maka karakter tersebut akan segera dihentikan tetapi perilaku ini juga dapat dikontrol jika flag -q digunakan. Bendera ini mengharapkan angka yang menggambarkan jumlah detik untuk menunggu sebelum klien berhenti (setelah menerima EOF)
Klien harus dimulai seperti :
nc -q 5 localhost 2389
Sekarang jika klien pernah menerima EOF maka akan menunggu selama 5 detik sebelum berhenti.
8. Gunakan Netcat dengan Protokol UDP
Secara default semua soket yang dibuat utilitas nc adalah protokol TCP tetapi utilitas ini juga berfungsi dengan protokol UDP. Untuk mengaktifkan protokol UDP, flag -u digunakan.
Server :
$ nc -4 -u -l 2389
Klien :
$ nc -4 -u localhost 2389
Sekarang, server dan klien dikonfigurasi untuk menggunakan protokol UDP. Ini dapat dikonfirmasi dengan perintah netstat berikut. Jadi kita melihat bahwa koneksi ini sekarang menggunakan protokol UDP.
$ netstat | grep 2389 udp 0 0 localhost:42634 localhost:2389 ESTABLISHED