10.8. Alat Diagnosis Jaringan
Ketika sebuah aplikasi jaringan tidak berjalan seperti yang diharapkan, sangat penting untuk dapat melihat di belakang layar. Bahkan ketika semuanya tampaknya berjalan lancar, menjalankan diagnosis jaringan dapat membantu memastikan semuanya bekerja seperti seharusnya. Ada beberapa alat diagnosis untuk tujuan ini; masing-masing beroperasi pada tingkat yang berbeda.
10.8.1. Diagnosis Lokal: netstat
Pertama mari kita bahas perintah netstat
(dalam paket net-tools); itu menampilkan suatu ringkasan seketika dari aktivitas jaringan komputer. Ketika dipanggil tanpa argumen, perintah ini menmpilkan daftar semua koneksi yang terbuka; daftar ini bisa jadi sangat panjang karena itu termasuk soket-soket domain Unix (yang biasa dikenal sebagai daemon) yang sama sekali tidak melibatkan jaringan (sebagai contoh, komunikasi dbus
, lalu lintas X11
, dan komunikasi antar sistem berkas virtual dan dekstop.
Invokasi yang umum karena itu menggunakan pilihan yang mengubah perilaku netstat
. Pilihan yang paling sering digunakan antara lain:
-t
, yang menyaring hasil untuk hanya menyertakan koneksi TCP;
-u
, yang bekerja secara serupa untuk koneksi UDP; pilihan ini tidak saling eksklusif, dan salah satunya cukup untuk menghentikan menampilkan hubungan Unix-domain;
-
, juga menampilkan daftar soket yang mendengar (menunggu untuk koneksi masuk);
-n
, untuk menampilkan hasil secara numerik: alamat IP (tanpa resolusi DNS), nomor port (bukan alias sebagaimana didefinisikan dalam /etc/services
) dan id pengguna (tidak ada nama login);
-p
, untuk daftar proses yang terlibat; pilihan ini hanya berguna ketika netstat
dijalankan sebagai root, karena pengguna normal hanya akan melihat proses mereka sendiri;
-c
, untuk terus-menerus menyegarkan daftar koneksi.
Pilihan lain, didokumentasikan dalam halaman manual netstat(8), menyediakan kontrol yang bahkan lebih halus atas hasil yang ditampilkan. Dalam prakteknya, lima pilihan pertama begitu sering digunakan bersama bahwa sistem dan administrator jaringan praktis mengakuisisi netstat -tupan
sebagai refleks. Hasil yang khas, pada mesin bermuatan ringan, mungkin terlihat seperti berikut:
#
netstat -tupan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 397/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 431/sshd
tcp 0 0 0.0.0.0:36568 0.0.0.0:* LISTEN 407/rpc.statd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 762/exim4
tcp 0 272 192.168.1.242:22 192.168.1.129:44452 ESTABLISHED 1172/sshd: roland [
tcp6 0 0 :::111 :::* LISTEN 397/rpcbind
tcp6 0 0 :::22 :::* LISTEN 431/sshd
tcp6 0 0 ::1:25 :::* LISTEN 762/exim4
tcp6 0 0 :::35210 :::* LISTEN 407/rpc.statd
udp 0 0 0.0.0.0:39376 0.0.0.0:* 916/dhclient
udp 0 0 0.0.0.0:996 0.0.0.0:* 397/rpcbind
udp 0 0 127.0.0.1:1007 0.0.0.0:* 407/rpc.statd
udp 0 0 0.0.0.0:68 0.0.0.0:* 916/dhclient
udp 0 0 0.0.0.0:48720 0.0.0.0:* 451/avahi-daemon: r
udp 0 0 0.0.0.0:111 0.0.0.0:* 397/rpcbind
udp 0 0 192.168.1.242:123 0.0.0.0:* 539/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 539/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 539/ntpd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 451/avahi-daemon: r
udp 0 0 0.0.0.0:39172 0.0.0.0:* 407/rpc.statd
udp6 0 0 :::996 :::* 397/rpcbind
udp6 0 0 :::34277 :::* 407/rpc.statd
udp6 0 0 :::54852 :::* 916/dhclient
udp6 0 0 :::111 :::* 397/rpcbind
udp6 0 0 :::38007 :::* 451/avahi-daemon: r
udp6 0 0 fe80::5054:ff:fe99::123 :::* 539/ntpd
udp6 0 0 2001:bc8:3a7e:210:a:123 :::* 539/ntpd
udp6 0 0 2001:bc8:3a7e:210:5:123 :::* 539/ntpd
udp6 0 0 ::1:123 :::* 539/ntpd
udp6 0 0 :::123 :::* 539/ntpd
udp6 0 0 :::5353 :::* 451/avahi-daemon: r
Seperti yang diharapkan, daftar ini menampilkan koneksi yang terjalin, dua koneksi SSH dalam kasus ini, dan aplikasi yang menunggu koneksi masuk (terdaftar sebagai LISTEN
), terutama server surel Exim4 yang mendengarkan di port 25.
10.8.2. Diagnosis Jarak Jauh: nmap
nmap
(dalam paket yang bernama mirip) adalah, sedikit banyak, ekuivalen remote untuk netstat
. Itu dapat memindai suatu set port yang "dikenal luas" untuk satu server remote atau lebih, dan menampilkan daftar port dimana suatu aplikasi ditemukan yang menjawab koneksi masuk. Lebih jauh, nmap
dapat mengidentifikasi beberapa dari aplikasi ini, bahkan terkadang nomor versi mereka. Kekurangan dari perkakas ini adalah, karena itu dijalankan secara remote, tidak dapat menyediakan informasi tentang proses-proses atau para pengguna; namun, itu dapat beroperasi pada beberapa target sekaligus.
Pemanggilan tipikal nmap
hanya menggunakan pilihan -A
(sehingga nmap
mencoba mengidentifikasi versi perangkat lunak server yang ditemukannya) diikuti oleh satu atau lebih alamat IP atau nama DNS mesin yang akan dipindai. Sekali lagi, lebih banyak opsi yang ada untuk mengendalikan perilaku nmap
; silakan lihat dokumentasi di halaman manual nmap(1).
#
nmap mirtuel
Starting Nmap 6.47 ( http://nmap.org ) at 2015-03-09 16:46 CET
Nmap scan report for mirtuel (192.168.1.242)
Host is up (0.000013s latency).
rDNS record for 192.168.1.242: mirtuel.internal.placard.fr.eu.org
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
Nmap done: 1 IP address (1 host up) scanned in 2.41 seconds
#
nmap -A localhost
Starting Nmap 6.47 ( http://nmap.org ) at 2015-03-09 16:46 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000013s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.7p1 Debian 3 (protocol 2.0)
|_ssh-hostkey: ERROR: Script execution failed (use -d to debug)
25/tcp open smtp Exim smtpd 4.84
| smtp-commands: mirtuel Hello localhost [127.0.0.1], SIZE 52428800, 8BITMIME, PIPELINING, HELP,
|_ Commands supported: AUTH HELO EHLO MAIL RCPT DATA NOOP QUIT RSET HELP
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100024 1 36568/tcp status
|_ 100024 1 39172/udp status
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Linux 3.7 - 3.15
Network Distance: 0 hops
Service Info: Host: mirtuel; OS: Linux; CPE: cpe:/o:linux:linux_kernel
OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.54 seconds
Seperti yang diharapkan, aplikasi SSH dan Exim4 tercantum. Perhatikan bahwa tidak semua aplikasi mendengarkan pada semua alamat IP; karena Exim4 ini hanya dapat diakses pada antarmuka loopback lo
, itu hanya muncul selama analisis localhost
dan tidak ketika pemindaian mirtuel
(yang terpetakan ke antarmuka eth0
di mesin yang sama).
10.8.3. Sniffer: tcpdump
dan wireshark
Kadang-kadang, orang perlu untuk melihat apa yang sebenarnya terjadi pada kabel, paket per paket. Kasus ini panggilan untuk “penganalsis frame”, lebih dikenal sebagai niffer. Suatu alat yang mengamati semua paket yang mencapai antarmuka jaringan tertentu, dan menampilkan mereka dalam cara yang ramah pengguna.
Alat mulia dalam domain ini adalah tcpdump
, tersedia sebagai alat standar pada berbagai platform. Hal ini memungkinkan menangkap banyak jenis lalu lintas jaringan, tapi representasi dari lalu lintas ini tetap agak kabur. Karenanya kami tidak akan menjelaskan secara lebih terperinci.
Perkakas yang lebih terkini (dan lebih modern), wireshark
(dalam paket wireshark), telah menjadi acuan baru dalam analisis lalu lintas jaringan karena banyak modul pendekodeannya yang mengizinkan analisis yang disederhanakan atas paket-paket yang ditangkap. Paket-paket ditampilkan secara grafis dengan suatu pengorganisasian berbasis layer protokol. Ini memungkinkan pengguna memvisualisasi semua protokol yang terlibat dalam sebuah paket. Sebagai contoh, diberikan suatu paket yang memuat sebuah permintaan HTTP, wireshark
menampilkan, secara terpisah, informasi terkait layer fisik, layer Ethernet, informasi paket IP, parameter koneksi TCP, dan akhirnya permintaan HTTP itu sendiri.
Dalam contoh kita, paket-paket yang berjalan di atas SSH disaring (dengan penyaring !tcp.port == 22
). Paket yang sedang ditampilkan dikembangkan pada layer HTTP.