10.9. Alat Diagnosis Jaringan
When a network application does not run as expected, it is important to be able to look under the hood. Even when everything seems to run smoothly, running a network diagnosis can help ensure everything is working as it should. Several diagnosis tools exists for this purpose; each one operates on a different level. It would go beyond the scope of this book to discuss all tools, so we will focus on the more well-known and commonly used tools in the following sections.
10.9.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.9.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 debian
Starting Nmap 7.80 ( https://nmap.org ) at 2022-02-22 20:58 CET
Nmap scan report for debian (192.168.122.57)
Host is up (0.000087s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
79/tcp open finger
80/tcp open http
113/tcp open ident
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
#
nmap -A localhost
nmap -A localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2022-02-22 20:56 CET
Stats: 0:01:16 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 83.33% done; ETC: 20:57 (0:00:15 remaining)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000086s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 994 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5 (protocol 2.0)
|_auth-owners: foobar
25/tcp open smtp Postfix smtpd
|_auth-owners: foobar
|_smtp-commands: debian, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8, CHUNKING,
| ssl-cert: Subject: commonName=debian
| Subject Alternative Name: DNS:debian
| Not valid before: 2022-02-22T14:48:42
|_Not valid after: 2032-02-20T14:48:42
|_ssl-date: TLS randomness does not represent time
79/tcp open finger?
|_auth-owners: foobar
|_finger: ERROR: Script execution failed (use -d to debug)
80/tcp open http Apache httpd 2.4.52 ((Debian))
|_auth-owners: foobar
|_http-server-header: Apache/2.4.52 (Debian)
|_http-title: Apache2 Debian Default Page: It works
113/tcp open ident Liedentd (Claimed user: foobar)
|_auth-owners: foobar
631/tcp open ipp CUPS 2.3
|_auth-owners: foobar
| http-robots.txt: 1 disallowed entry
|_/
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.3op2
Service Info: Host: debian; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 87.91 seconds
As expected, e.g. the SSH, Apache and Postfix applications are listed. Note that not all applications listen on all IP addresses; since Postfix is only accessible on the lo
loopback interface, it only appears during an analysis of localhost
and not when scanning debian
(which maps to the enp1s0
interface on the same machine).
10.9.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 transport dari protokol SSHv2.