Peringatan: Pembuat perangkat lunak Netcat belum memperbarui perangkat lunak sejak tahun 2006. Oleh karena itu, Rackspace Technology tidak menjamin bahwa kualitas Netcat akan memenuhi harapan Anda.
Menggunakan Netcat
Jika layanan jaringan Anda tidak berfungsi tetapi Anda tahu bahwa layanan tersebut mendengarkan port jaringan, Anda dapat memverifikasi koneksi program untuk memecahkan masalah.
Gunakan perintah Netcat, nc
, untuk mengakses layanan. Jika Anda menjalankan distribusi berbasis Red Hat® dan Anda tidak memiliki nc
terinstal, ketik perintah berikut pada baris perintah:
$ sudo yum install nc`
Untuk distribusi berbasis Debian®, ketik perintah berikut pada baris perintah:
$ sudo apt-get install Netcat`
Tes dasar
Jalankan pengujian sederhana untuk memverifikasi bahwa port menerima koneksi.
Ketik nc
pada baris perintah diikuti oleh -vz
opsi dengan alamat IP dan port Anda:
$ nc -vz IP_address port
Alamat IP harus menjadi tempat layanan menerima koneksi.
Contoh berikut menunjukkan kemungkinan pesan keluaran:
Koneksi berhasil
$ nc -vz 203.0.113.96 21
Connection to 203.0.113.96 21 port [tcp/ftp] succeeded!
Koneksi ditolak
$ nc -vz 203.0.113.96 80
nc: connect to 203.0.113.96 port 80 (tcp) failed: Connection refused
Tidak ada tanggapan untuk permintaan koneksi
$ nc -vz 203.0.113.96 80
nc: connect to 203.0.113.96 port 80 (tcp) failed: Connection timed out
Koneksi ditolak
Layanan tidak berjalan, atau firewall menolak koneksi. Verifikasi status proses dengan menjalankan ps
pada baris perintah. Lihat Memeriksa layanan yang berjalan di Linux untuk opsi lainnya.
Catatan: Jika layanan Anda berjalan, firewall Anda mungkin menolak koneksi. Baca waktu koneksi habis bagian untuk petunjuk tentang pemecahan masalah firewall.
Waktu koneksi habis
waktu koneksi habis respon menunjukkan bahwa koneksi Anda tidak berfungsi, yang bisa berarti firewall Anda memblokir port. Uji status koneksi dengan menambahkan aturan yang menerima koneksi pada port yang diperlukan.
Contoh berikut menyisipkan aturan pada baris 1 dari rantai input yang menerima semua koneksi TCP pada port 80
(HTTP). Gunakan aturan ini saat menguji server web seperti Apache®.
$ sudo /sbin/iptables -I INPUT 1 -p tcp --dport http -j ACCEPT
Tabel IP langsung mencerminkan setiap perubahan yang dibuat. Ulangi pengujian dengan nc
untuk melihat apakah ada perubahan dalam tanggapan.
Jika Anda ingin menghapus aturan yang telah Anda tambahkan, Anda dapat menggunakan -D
opsi dikombinasikan dengan posisi aturan dalam rantai. Contoh sebelumnya menambahkan aturan pada baris 1, bagian atas rantai. Contoh berikut menunjukkan cara menghapusnya.
$ sudo /sbin/iptables -D INPUT 1
Anda dapat memeriksa konfigurasi firewall Anda saat ini kapan saja dengan menjalankan perintah berikut pada baris perintah:
$ sudo /sbin/iptables -L -v
Koneksi berhasil
Jika koneksi awal berhasil, Netcat dapat terhubung ke layanan. Lihat koneksi lebih detail.
Pertama, gunakan -vt
opsi untuk melihat apakah layanan dapat menanggapi kueri jaringan dasar:
$ nc -vt IP Address Port
Jika Anda dapat mengirim perintah ke daemon layanan dan menerima respons, itu menunjukkan bahwa program dapat diakses, dan masalah Anda mungkin disebabkan oleh konfigurasi koneksi klien.
Setelah Anda terhubung, uji layanan untuk mendapatkan respons. Anda dapat menguji layanan dengan mengirimkan GET
permintaan ke server web, atau data lain yang sesuai untuk meminta respons server.
Menutup koneksi
Anda dapat mengakhiri koneksi dengan menekan Ctrl-C atau ketik perintah berhenti khusus layanan.
Misalnya, Anda dapat menutup koneksi ke protokol transfer file, FTP, server dengan QUIT
perintah:
$ nc -vt 203.0.113.96 21
Connection to 203.0.113.96 21 port [tcp/ftp] succeeded!
220 (vsFTPd 2.0.5)
$ QUIT
221 Goodbye.
Perintah ditolak
Misalkan nc
melaporkan keberhasilan tetapi tidak mengizinkan Anda mengirim perintah apa pun, atau Anda mendapatkan respons dari daemon layanan yang melaporkan bahwa layanan tidak tersedia. Dalam hal ini, Anda mungkin memiliki pembungkus protokol kontrol transmisi, pembungkus TCP , menyediakan kontrol akses.
Layanan FTP yang diblokir oleh pembungkus TCP dapat terlihat seperti contoh berikut:
$ nc -vt 203.0.113.96 21
Connection to 203.0.113.96 21 port [tcp/ftp] succeeded!
421 Service not available.
Program yang kompatibel dengan pembungkus TCP dikompilasi dengan libwrap
. Untuk memeriksa apakah suatu program dapat menggunakan TCPwrappers, gunakan perintah berikut:
$ ldd /path/to/binary | grep libwrap
Contoh berikut memeriksa vsftpd
program untuk libwrap
file perpustakaan bersama.
ldd /usr/sbin/vsftpd | grep libwrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f62c734a000)
Jika program tidak kompatibel dengan pembungkus TCP, grep
. sebelumnya perintah tidak mengembalikan apa pun.
Memeriksa log
Sambungan yang diblokir menghasilkan entri log. Periksa log program untuk pesan yang relevan.
Dalam vsftpd
log, ditemukan di /var/log/vsftpd.log , koneksi yang diblokir karena pembungkus tcp terlihat seperti contoh berikut:
Tue Jun 7 16:14:21 2011 [pid 28599] CONNECT: Client "203.0.113.43", "Connection refused: tcp_wrappers denial."
hosts.deny
/etc/hosts.deny file menetapkan definisi untuk koneksi yang diblokir. Jika Anda kesulitan melihat entri untuk layanan Anda dalam file, gunakan grep
untuk mencarinya.
Cari file untuk nama program dengan menjalankan perintah berikut:
$ sudo grep "vsftpd" /etc/hosts.deny
vsftpd : ALL
Coba komentari setiap baris yang menyinggung menggunakan hash (#). Perubahan pada file ini berlaku secara otomatis—Anda tidak perlu memulai ulang layanan apa pun.
Perhatikan bahwa pembungkus TCP mengizinkan koneksi secara default, jadi jika itu adalah penyebab masalah, harus ada entri di /etc/hosts.deny untuk layanan. Anda dapat mengganti nama file /etc/hosts.deny untuk menghapus sementara semua aturan penolakan Anda. Misalnya, jalankan sudo mv /etc/hosts.deny /etc/hosts.deny.old
. Perhatikan bahwa perintah ini mempengaruhi semua aplikasi yang menggunakan pembungkus TCP. Jangan lupa untuk mengubahnya kembali setelah Anda menyelesaikan tes Anda, jika perlu.
Investigasi lebih lanjut
Jika Anda telah menyelesaikan semua pengujian dalam artikel ini tanpa mengidentifikasi masalah apa pun, layanan kemungkinan berjalan normal. Langkah selanjutnya adalah menguji konektivitas ke server dengan menggunakan ping
dan traceroute
utilitas.