Lewati ke isi

Server & Infrastruktur

Cara Memakai tcpdump untuk Melacak Masalah Jaringan

Contoh perintah tcpdump yang paling berguna di server, dari filter host dan port sampai menyimpan file pcap, plus cara membaca hasilnya.

Terbit 5 menit baca

Jawaban singkat

tcpdump menangkap paket yang benar-benar lewat di antarmuka jaringan server, sehingga kamu bisa memastikan apakah permintaan sampai, dijawab, atau ditolak. Gunakan filter host dan port, opsi -nn, dan simpan ke file pcap dengan -w untuk dianalisis di Wireshark.

Daftar isi
  1. Bagaimana memasang dan memulai tcpdump?
  2. Filter apa yang paling sering dipakai?
  3. Contoh kasus nyata yang sering muncul
  4. Website tidak bisa diakses dari luar
  5. Server tidak bisa mengirim email
  6. Aplikasi lambat karena DNS
  7. Koneksi tiba-tiba terputus
  8. Melihat isi permintaan HTTP biasa
  9. Bagaimana menyimpan hasil ke file pcap?
  10. Tips agar tcpdump tidak membebani server
  11. Pertanyaan yang sering diajukan

tcpdump adalah alat baris perintah untuk melihat paket jaringan yang masuk dan keluar dari server secara langsung. Ketika aplikasi bilang "tidak bisa konek" dan semua pihak saling menyalahkan, tcpdump memberi jawaban yang tidak bisa dibantah: paketnya sampai atau tidak.

Kenapa ini penting? Karena banyak masalah jaringan terlihat sama dari luar. Firewall yang memblokir, aplikasi yang tidak mendengarkan, rute yang salah, atau DNS yang lambat, semuanya berujung pada pesan timeout. Dengan melihat paket, kamu bisa tahu di sisi mana masalahnya berada dalam beberapa menit.

Bagaimana memasang dan memulai tcpdump?

Di kebanyakan distro, tcpdump tersedia di repository resmi:

sudo apt install tcpdump      # Ubuntu, Debian
sudo dnf install tcpdump      # AlmaLinux, Rocky Linux

Lihat daftar antarmuka yang bisa dipantau:

sudo tcpdump -D

Lalu tangkap beberapa paket pertama untuk memastikan semuanya jalan:

sudo tcpdump -i eth0 -nn -c 20

-i memilih antarmuka (pakai any untuk semua), -nn mematikan penerjemahan alamat ke nama host dan port ke nama layanan, dan -c 20 berhenti setelah 20 paket. Opsi -nn penting di server sibuk, karena tanpa itu tcpdump melakukan pencarian DNS untuk setiap alamat dan hasilnya jadi lambat.

Filter apa yang paling sering dipakai?

Tanpa filter, tcpdump di server produksi akan membanjiri layar, apalagi kalau kamu sendiri sedang login lewat SSH. Filter ditulis di akhir perintah dengan sintaks pcap-filter.

KebutuhanContoh filter
Lalu lintas dari atau ke satu IPhost 203.0.113.50
Hanya port tertentuport 443
Hanya paket menuju server dari satu sumbersrc host 203.0.113.50 and dst port 22
Buang lalu lintas SSH-mu sendirinot port 22
Hanya paket SYN (awal koneksi TCP)'tcp[tcpflags] & tcp-syn != 0'
Satu subnetnet 10.0.0.0/24
Protokol tertentuicmp, udp port 53

Filter bisa digabung dengan and, or, dan not, serta dikelompokkan dengan tanda kurung. Bungkus filter yang mengandung kurung atau tanda khusus dengan tanda kutip tunggal agar tidak diproses shell.

Contoh kasus nyata yang sering muncul

Website tidak bisa diakses dari luar

Jalankan di server, lalu minta rekanmu membuka website:

sudo tcpdump -i any -nn 'tcp port 443 and tcp[tcpflags] & tcp-syn != 0'

Cara membacanya:

  • Tidak ada paket sama sekali: permintaan tidak sampai ke server. Masalahnya di DNS, firewall penyedia, atau rute di luar server.
  • Ada SYN masuk tapi tidak ada SYN-ACK keluar: paket sampai, tapi ditolak atau diabaikan di server. Periksa firewall lokal dan pastikan ada proses yang mendengarkan di port itu dengan ss -tlnp.
  • SYN-ACK keluar dan koneksi terbentuk: jaringan sehat, masalahnya ada di aplikasi atau TLS.

Untuk menguji dari sisi luar, cek port terbuka dengan Nmap adalah pasangan yang pas.

Server tidak bisa mengirim email

sudo tcpdump -i any -nn 'tcp port 25 or tcp port 587'

Kalau paket SYN keluar ke port 25 tetapi tidak pernah ada balasan, besar kemungkinan port keluar itu diblokir oleh penyedia. Ini umum di banyak layanan cloud untuk mencegah spam, dan solusinya biasanya meminta pembukaan port atau memakai relay di port 587.

Aplikasi lambat karena DNS

sudo tcpdump -i any -nn udp port 53

Perhatikan jarak waktu antara query dan jawabannya. Kalau satu query baru dijawab setelah beberapa detik, atau sama sekali tidak dijawab lalu diulang, resolver yang dipakai server patut dicurigai. Dasar-dasar resolver dan record dibahas di panduan jaringan server.

Koneksi tiba-tiba terputus

Kalau pengguna melaporkan koneksi yang putus di tengah jalan, cari paket reset:

sudo tcpdump -i any -nn 'tcp[tcpflags] & tcp-rst != 0 and port 443'

Paket RST berarti salah satu pihak menutup koneksi secara paksa. Lihat arah paketnya. RST yang keluar dari server biasanya datang dari aplikasi yang crash, batas koneksi yang tercapai, atau port yang tidak lagi didengarkan. RST yang datang dari luar bisa berasal dari klien, load balancer, atau perangkat jaringan di tengah jalan yang memutus koneksi menganggur terlalu lama.

Melihat isi permintaan HTTP biasa

sudo tcpdump -i any -nn -A 'tcp port 80'

Opsi -A menampilkan isi paket sebagai teks. Ini hanya berguna untuk lalu lintas yang tidak dienkripsi. Untuk HTTPS, kamu hanya akan melihat data acak, dan itu memang tujuan enkripsi.

Bagaimana menyimpan hasil ke file pcap?

Untuk analisis yang lebih nyaman, simpan tangkapan ke file lalu buka di Wireshark di laptop:

sudo tcpdump -i any -nn -w /tmp/tangkap.pcap 'port 443'

Baca kembali file itu di server dengan tcpdump -nn -r /tmp/tangkap.pcap. Untuk penangkapan yang lama, pakai rotasi berkas agar disk tidak penuh:

sudo tcpdump -i any -nn -w /tmp/tangkap.pcap -C 100 -W 5 'port 443'

-C 100 membuat file baru setiap sekitar 100 juta byte, dan -W 5 membatasi jumlahnya lima file yang dipakai bergantian.

Tips agar tcpdump tidak membebani server

  • Selalu pakai filter yang sempit dan -c atau batas waktu, jangan dibiarkan berjalan tanpa batas.
  • Gunakan -nn agar tidak ada pencarian DNS tambahan.
  • Kalau hanya butuh header, batasi jumlah byte per paket dengan -s, misalnya -s 128.
  • Jalankan di dalam tmux atau screen agar penangkapan tidak berhenti saat SSH terputus.

Pertanyaan yang sering diajukan

Apakah tcpdump bisa melihat lalu lintas antar container Docker?

Bisa. Pilih antarmuka bridge Docker (misalnya docker0 atau br-xxxx) atau pakai -i any, lalu saring dengan IP container.

Kenapa tcpdump menampilkan paket yang kemudian diblokir firewall?

tcpdump menangkap paket di tingkat antarmuka, sebelum aturan firewall untuk paket masuk diproses. Jadi melihat paket masuk tidak berarti paket itu diterima aplikasi.

Apakah perlu akses root?

Ya, menangkap paket butuh hak istimewa. Jalankan dengan sudo, atau beri kemampuan khusus pada binary bila kebijakan servermu mengizinkan.

Sumber & referensi

Baca juga