GNU/Linux >> Belajar Linux >  >> Linux

Menguji layanan jaringan dengan Netcat

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.


Linux
  1. Memulai NetworkManager di Linux

  2. Kelola koneksi jaringan dari baris perintah Linux dengan nmcli

  3. Memulai dengan firewall Linux

  1. Mengonfigurasi antarmuka jaringan dengan alamat IP Statis pada RHEL 7

  2. Memecahkan masalah jaringan Anda dengan tcpdump

  3. Menghitung jaringan baru dengan Nmap

  1. Menguji Koneksi SSL dengan SSLyze, Nmap atau OpenSSL

  2. Bisakah saya menguji jaringan saya sendiri?

  3. Memulai koneksi jaringan dari pemulihan Ubuntu?