Netstat
Netstat adalah utilitas baris perintah yang dapat digunakan untuk membuat daftar semua koneksi jaringan (soket) pada suatu sistem. Ini mencantumkan semua koneksi soket tcp, udp dan koneksi soket unix.
Selain soket yang terhubung, itu juga dapat mencantumkan soket pendengar yang menunggu koneksi masuk. Jadi dengan memverifikasi port 80 yang terbuka, Anda dapat mengonfirmasi apakah server web berjalan di sistem atau tidak.
Ini menjadikannya alat yang sangat berguna untuk administrator jaringan dan sistem.
Dalam tutorial ini kita akan melihat beberapa contoh bagaimana menggunakan netstat untuk menemukan informasi tentang koneksi jaringan dan port terbuka pada suatu sistem.
Berikut adalah intro cepat ke netstat dari halaman manual
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
1. Daftar semua koneksi
Perintah pertama dan paling sederhana adalah membuat daftar semua koneksi saat ini. Cukup jalankan perintah netstat dengan opsi.
$ netstat -a Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 enlightened:domain *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp 0 0 enlightened.local:54750 li240-5.members.li:http ESTABLISHED tcp 0 0 enlightened.local:49980 del01s07-in-f14.1:https ESTABLISHED tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN udp 0 0 enlightened:domain *:* udp 0 0 *:bootpc *:* udp 0 0 enlightened.local:ntp *:* udp 0 0 localhost:ntp *:* udp 0 0 *:ntp *:* udp 0 0 *:58570 *:* udp 0 0 *:mdns *:* udp 0 0 *:49459 *:* udp6 0 0 fe80::216:36ff:fef8:ntp [::]:* udp6 0 0 ip6-localhost:ntp [::]:* udp6 0 0 [::]:ntp [::]:* udp6 0 0 [::]:mdns [::]:* udp6 0 0 [::]:63811 [::]:* udp6 0 0 [::]:54952 [::]:* Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 12403 @/tmp/dbus-IDgfj3UGXX unix 2 [ ACC ] STREAM LISTENING 40202 @/dbus-vfs-daemon/socket-6nUC6CCx
Perintah di atas menunjukkan semua koneksi dari protokol yang berbeda seperti tcp, udp dan soket unix. Namun hal ini tidak terlalu berguna. Administrator sering ingin memilih koneksi tertentu berdasarkan protokol atau nomor port misalnya.
2. Cantumkan hanya koneksi TCP atau UDP
Untuk membuat daftar hanya koneksi tcp gunakan opsi t.
$ netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 enlightened:domain *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp 0 0 enlightened.local:36310 del01s07-in-f24.1:https ESTABLISHED tcp 0 0 enlightened.local:45038 a96-17-181-10.depl:http ESTABLISHED tcp 0 0 enlightened.local:37892 ABTS-North-Static-:http ESTABLISHED .....
Demikian pula untuk membuat daftar hanya koneksi udp gunakan opsi u.
$ netstat -au Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 *:34660 *:* udp 0 0 enlightened:domain *:* udp 0 0 *:bootpc *:* udp 0 0 enlightened.local:ntp *:* udp 0 0 localhost:ntp *:* udp 0 0 *:ntp *:* udp6 0 0 fe80::216:36ff:fef8:ntp [::]:* udp6 0 0 ip6-localhost:ntp [::]:* udp6 0 0 [::]:ntp [::]:*
Output di atas menunjukkan koneksi ipv4 dan ipv6.
3. Nonaktifkan pencarian reverse dns untuk hasil yang lebih cepat
Secara default, perintah netstat mencoba untuk mengetahui nama host dari setiap alamat ip dalam koneksi dengan melakukan pencarian reverse dns. Ini memperlambat output. Jika Anda tidak perlu mengetahui nama host dan alamat ip saja sudah cukup, tekan pencarian nama host dengan opsi n.
$ netstat -ant Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 192.168.1.2:49058 173.255.230.5:80 ESTABLISHED tcp 0 0 192.168.1.2:33324 173.194.36.117:443 ESTABLISHED tcp6 0 0 ::1:631 :::* LISTEN
Perintah di atas menunjukkan SEMUA koneksi TCP dengan resolusi NO dns. Mengerti ? Bagus.
4. Periksa koneksi mendengarkan - Buka Port
Setiap daemon/layanan jaringan membuat port terbuka untuk mendengarkan koneksi yang masuk. Ini juga seperti koneksi soket dan terdaftar oleh netstat. Untuk hanya melihat port mendengarkan, gunakan opsi "-l".
$ netstat -tnl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp6 0 0 ::1:631 :::* LISTEN
Sekarang kita hanya dapat melihat mendengarkan port/koneksi tcp. Jika Anda ingin melihat semua port mendengarkan, hapus opsi t. Jika Anda hanya ingin melihat port udp yang mendengarkan, gunakan opsi "-u" alih-alih "-t".
Pastikan untuk menghapus opsi "-a", jika tidak semua koneksi akan terdaftar dan bukan hanya koneksi yang mendengarkan.
Jika Anda menjalankan layanan seperti http atau smtp di server linux Anda, maka Anda dapat menggunakan perintah di atas untuk memeriksa apakah layanan tersebut mendengarkan koneksi masuk atau tidak.
5. Dapatkan nama proses/pid dan id pengguna
Saat melihat port dan koneksi yang terbuka/mendengarkan, seringkali berguna untuk mengetahui nama proses/pid yang telah membuka port atau koneksi tersebut.
Misalnya server httpd Apache membuka port 80. Jadi jika Anda ingin memeriksa apakah ada server http yang berjalan atau tidak, atau server http mana yang berjalan, apache atau nginx, maka lacak nama prosesnya.
Detail proses disediakan oleh opsi 'p'.
~$ sudo netstat -nlpt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1144/dnsmasq tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 661/cupsd tcp6 0 0 ::1:631 :::* LISTEN 661/cupsd
Saat menggunakan opsi p, netstat harus dijalankan dengan hak akses root, jika tidak, ia tidak dapat mendeteksi pid proses yang berjalan dengan hak akses root dan sebagian besar layanan seperti http dan ftp sering dijalankan dengan hak akses root.
Seiring dengan nama proses/pid, bahkan lebih berguna untuk mendapatkan nama pengguna/uid yang memiliki proses tertentu. Gunakan opsi e bersama dengan opsi p untuk mendapatkan nama pengguna juga.
$ sudo netstat -ltpe Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name tcp 0 0 enlightened:domain *:* LISTEN root 11090 1144/dnsmasq tcp 0 0 localhost:ipp *:* LISTEN root 9755 661/cupsd tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN root 9754 661/cupsd
Contoh di atas mencantumkan koneksi Listening tipe TCP dengan informasi Proses dan Informasi yang diperluas.
Informasi yang diperluas berisi nama pengguna dan inode proses. Ini adalah perintah yang berguna untuk administrator jaringan.
Catatan - Jika Anda menggunakan opsi n dengan opsi e, uid akan dicantumkan dan bukan nama pengguna.
6. Statistik cetak
Perintah netstat juga dapat mencetak statistik jaringan seperti jumlah total paket yang diterima dan dikirimkan menurut jenis protokol dan seterusnya.
Untuk membuat daftar statistik semua jenis paket
$ netstat -s Ip: 32797 total packets received 0 forwarded 0 incoming packets discarded 32795 incoming packets delivered 29115 requests sent out 60 outgoing packets dropped Icmp: 125 ICMP messages received 0 input ICMP message failed. ICMP input histogram: destination unreachable: 125 125 ICMP messages sent 0 ICMP messages failed ICMP output histogram: destination unreachable: 125 ... OUTPUT TRUNCATED ...
Untuk mencetak statistik hanya memilih protokol seperti TCP atau UDP gunakan opsi yang sesuai seperti t dan u bersama dengan opsi s. Sederhana!
7. Tampilkan informasi perutean kernel
Informasi perutean kernel dapat dicetak dengan opsi r. Ini adalah output yang sama seperti yang diberikan oleh perintah route. Kami juga menggunakan opsi n untuk menonaktifkan pencarian nama host.
$ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
8. Cetak antarmuka jaringan
Perintah netstat juga dapat mencetak informasi tentang antarmuka jaringan. Opsi "-i" melakukan tugasnya.
$ netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 31611 0 0 0 27503 0 0 0 BMRU lo 65536 0 2913 0 0 0 2913 0 0 0 LRU
Output di atas berisi informasi dalam format yang sangat mentah. Untuk mendapatkan versi keluaran yang lebih ramah manusia, gunakan opsi e bersama dengan i.
$ netstat -ie Kernel Interface table eth0 Link encap:Ethernet HWaddr 00:16:36:f8:b2:64 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::216:36ff:fef8:b264/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:31682 errors:0 dropped:0 overruns:0 frame:0 TX packets:27573 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:29637117 (29.6 MB) TX bytes:4590583 (4.5 MB) Interrupt:18 Memory:da000000-da020000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:2921 errors:0 dropped:0 overruns:0 frame:0 TX packets:2921 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:305297 (305.2 KB) TX bytes:305297 (305.2 KB)
Output di atas mirip dengan output yang ditunjukkan oleh perintah ifconfig.
9. Dapatkan keluaran netstat terus menerus
Netstat dapat menampilkan informasi koneksi secara terus-menerus dengan opsi c.
$ netstat -ct
Perintah di atas akan menampilkan koneksi tcp secara terus menerus.
10. Tampilkan informasi grup multicast
Opsi g akan menampilkan informasi grup multicast untuk protokol IPv4 dan IPv6.
$ netstat -g IPv6/IPv4 Group Memberships Interface RefCnt Group --------------- ------ --------------------- lo 1 all-systems.mcast.net eth0 1 224.0.0.251 eth0 1 all-systems.mcast.net lo 1 ip6-allnodes lo 1 ff01::1 eth0 1 ff02::fb eth0 1 ff02::1:fff8:b264 eth0 1 ip6-allnodes eth0 1 ff01::1 wlan0 1 ip6-allnodes wlan0 1 ff01::1
Contoh lainnya dari perintah netstat
Oke, kita sudah membahas contoh dasar perintah netstat di atas. Sekarang saatnya melakukan hal-hal aneh dengan gaya.
Cetak koneksi aktif
Koneksi soket aktif berada dalam status "ESTABLISHED". Jadi untuk mendapatkan semua koneksi aktif saat ini gunakan netstat dengan grep sebagai berikut
$ netstat -atnp | grep ESTA (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 192.168.1.2:49156 173.255.230.5:80 ESTABLISHED 1691/chrome tcp 0 0 192.168.1.2:33324 173.194.36.117:443 ESTABLISHED 1691/chrome
Untuk menonton daftar koneksi aktif yang berkelanjutan, gunakan perintah watch bersama dengan netstat dan grep
$ watch -d -n0 "netstat -atnp | grep ESTA"
Periksa apakah suatu layanan sedang berjalan
Jika Anda ingin memeriksa apakah server seperti http,smtp atau ntp berjalan atau tidak, gunakan grep lagi.
$ sudo netstat -aple | grep ntp udp 0 0 enlightened.local:ntp *:* root 17430 1789/ntpd udp 0 0 localhost:ntp *:* root 17429 1789/ntpd udp 0 0 *:ntp *:* root 17422 1789/ntpd udp6 0 0 fe80::216:36ff:fef8:ntp [::]:* root 17432 1789/ntpd udp6 0 0 ip6-localhost:ntp [::]:* root 17431 1789/ntpd udp6 0 0 [::]:ntp [::]:* root 17423 1789/ntpd unix 2 [ ] DGRAM 17418 1789/ntpd
Jadi kami menemukan bahwa server ntp sedang berjalan. Ambil http atau smtp atau apa pun yang Anda cari.
Kesimpulan
Nah, itulah sebagian besar kegunaan netstat. Jika Anda mencari informasi lebih lanjut atau ingin menggali lebih dalam, bacalah manual netstat (man netstat).
Dan tinggalkan umpan balik dan saran Anda di kotak komentar di bawah.
Sumber daya
Lihat halaman manual linux untuk netstat untuk mempelajari lebih lanjut.
https://linux.die.net/man/8/netstat
https://man7.org/linux/man-pages/man8/netstat.8.html