Linux Hands-on 4 (Networking Tools)
8 min read

Di dunia Linux yang serba bisa ini, jaringan adalah urat nadi yang menghubungkan semuanya. Baik kamu seorang sysadmin, developer, atau sekadar pengguna yang penasaran, pemahaman tentang networking tools adalah kunci untuk menjelajahi dan mengendalikan jaringanmu.
Task 4.1: Use ping to check connectivity to google.com
ping google.com > ping_output.txt

Komando ini adalah kombinasi dari dua perintah Linux yang digunakan untuk menguji koneksi jaringan ke google.com dan menyimpan hasilnya ke dalam file bernama ping_output.txt.
pinggoogle.com: Perintahpingdigunakan untuk menguji konektivitas jaringan dengan mengirimkan paket data ke alamat IP tertentu (dalam hal ini, alamat IP darigoogle.com) dan menunggu balasan. Tujuannya adalah untuk mengetahui apakah komputer kita dapat terhubung ke alamat IP tersebut dan berapa lama waktu yang dibutuhkan untuk menerima balasan.>: Tanda ini adalah redirection operator yang digunakan untuk mengalihkan output dari suatu perintah ke file. Dalam hal ini, output dari perintahpinggoogle.comakan dialihkan ke fileping_output.txt
Kenapa pakai perintah ini?
Perintah ini sangat berguna untuk:
Memeriksa Konektivitas: Kita bisa tahu apakah komputer kita terhubung ke internet atau tidak.
Menguji Kecepatan Jaringan: Kita bisa melihat seberapa cepat koneksi internet kita berdasarkan waktu tempuh bolak-balik.
Mencari Masalah Jaringan: Kalau ada masalah koneksi, kita bisa lihat dari output
ping, misalnya apakah ada paket data yang hilang atau waktu tempuh bolak-balik yang terlalu lama.
Task 4.2: Use ping with 10 packets
ping -c 10 google.com > ping_10_packets.txt
-c 10: Opsi ini adalah yang bikin beda. -c adalah singkatan dari "count". Angka 10 di belakangnya berarti kita hanya ingin mengirimkan 10 paket ping saja. Jadi, ping tidak akan berjalan terus-menerus, tapi hanya 10 kali saja.
Task 4.3: Use ping with a packet size of 1000 Bytes
ping -s 1000 google.com > ping_large_packet.txt

-s 1000: Opsi ini adalah yang bikin beda. -s adalah singkatan dari "size". Angka 1000 di belakangnya berarti kita ingin mengirim paket ping dengan ukuran 1000 byte. Ukuran default paket ping biasanya lebih kecil dari ini.
Kenapa pakai perintah ini?
Tes Ukuran Paket: Berguna untuk menguji kemampuan jaringan dalam menangani paket data berukuran besar.
Masalah MTU: Bisa membantu mendeteksi masalah terkait MTU pada jaringan. Jika paket terlalu besar, router mungkin perlu memecahnya, yang bisa mempengaruhi performa.
Task 4.4: Use telnet to test port 80 on discord.com
sudo apt install telnet
telnet discord.com 80

telnet: Ini adalah nama perintahnya, yaitu program telnet itu sendiri. telnet adalah tool kuno, tapi masih berguna untuk beberapa tujuan.
Perlu diingat bahwa telnet adalah tool yang sangat sederhana. Ia hanya membuat koneksi TCP, tanpa memahami protokol yang lebih tinggi seperti HTTP.
Task 4.5: Use telnet to connect to the SMTP server on port 25
telnet smtp.gmail.com 25

Komando ini mencoba membuat koneksi ke server SMTP (Simple Mail Transfer Protocol) Gmail di smtp.gmail.com melalui port 25 menggunakan tool telnet.
Task 4.6: Use curl to fetch content of https://discord.com
curl https://discord.com -o discord.html

curl: Ini adalah nama perintahnya, yaitu program curl itu sendiri. curl adalah tool serbaguna yang digunakan untuk mentransfer data dari atau ke server menggunakan berbagai protokol, termasuk HTTP
Perintah ini sangat berguna untuk:
Mengunduh Kode Sumber: Kita bisa melihat bagaimana sebuah halaman web dibuat dengan mengunduh kode sumbernya.
Web Scraping: Kita bisa mengambil data tertentu dari sebuah halaman web secara otomatis.
Debugging: Kita bisa melihat error atau masalah yang mungkin terjadi saat load halaman web.
Task 4.7: Use curl with a custom User-Agent
curl -H "User-Agent: MyBrowser" https://google.com
#or
curl -L -H "User-Agent: MyBrowser" https://google.com

-H "User-Agent: MyBrowser": Opsi -H digunakan untuk menambahkan atau memodifikasi header HTTP yang dikirim. Dalam hal ini, kita mengubah header User-Agent menjadi "MyBrowser". User-Agent adalah string yang diidentifikasi browser atau aplikasi yang digunakan untuk mengakses website. Dengan mengubahnya, kita "berpura-pura" menjadi browser lain
-L: Opsi ini adalah yang membedakan kedua perintah ini. -L adalah singkatan dari "location". Opsi ini akan membuat curl mengikuti redirect HTTP jika server mengembalikannya
Task 4.8: Use netstat to list active TCP connections
sudo apt install net-tools
netstat -at

netstat: Ini adalah nama perintahnya, yaitu programnetstatitu sendiri.netstatadalah tool klasik untuk melihat statistik jaringan.-a: Opsi ini berarti "all", yang akan menampilkan semua koneksi yang sedang aktif, baik yang berstatus listening (menunggu koneksi masuk) maupun established (sudah terhubung).-t: Opsi ini berarti "TCP", yang akan menampilkan koneksi yang menggunakan protokol TCP. TCP adalah protokol yang umum digunakan untuk komunikasi data di internet.
Kenapa pakai perintah ini?
Perintah netstat -at sangat berguna untuk:
Memantau Koneksi: Kita bisa melihat koneksi apa saja yang sedang aktif di komputer kita, dan ke mana saja komputer kita terhubung.
Mencari Masalah: Kalau ada masalah dengan jaringan, kita bisa cek dengan perintah ini, mungkin ada koneksi yang mencurigakan atau koneksi yang bermasalah.
Keamanan: Kita bisa melihat apakah ada koneksi yang tidak dikenal atau mencurigakan, yang mungkin menandakan adanya aktivitas yang tidak diinginkan.
Task 4.9: Use netstat to display all ports that are in the listening state on your system.
netstat -l

-l: Opsi ini berarti "listening", yang akan menampilkan socket yang sedang dalam status listening. Artinya, socket ini sedang menunggu koneksi dari komputer lain.
Kenapa pakai perintah ini?
Perintah netstat -l sangat berguna untuk:
Mencari Layanan yang Aktif: Kita bisa melihat layanan atau program apa saja yang sedang berjalan di komputer kita dan menunggu koneksi masuk.
Keamanan: Kita bisa melihat apakah ada socket yang listening yang tidak kita kenal atau mencurigakan, yang mungkin menandakan adanya aktivitas yang tidak diinginkan.
Troubleshooting: Kalau ada masalah dengan layanan jaringan, kita bisa cek dengan perintah ini, mungkin ada socket yang tidak seharusnya listening atau ada socket yang bermasalah.
Task 4.10: Use iperf in client mode to test the network bandwidth to a remote server (iperf-server.google.com).
sudo apt install iperf
iperf -c iperf.he.net
iperf: Ini adalah nama perintahnya, yaitu programiperfitu sendiri.iperfadalah tool yang sangat berguna untuk mengukur bandwidth atau kecepatan transfer data dalam jaringan.-c: Opsi ini adalah singkatan dari "client". Artinya, kita menjalankaniperfdalam mode client, yaitu sebagai pengirim atau penerima data.iperf.he.net: Ini adalah alamat domain atau hostname dari serveriperf. Dalam hal ini, kita menggunakan serveriperfyang disediakan oleh Hurricane Electric (HE), sebuah penyedia layanan internet.

Task 4.11: Use iperf in server mode to listen for incoming connections on a remote machine (iperf-server.discord.com).
sudo apt install iperf3
iperf3 -s -p 8791

-s: Opsi ini adalah singkatan dari "server". Artinya, kita menjalankaniperf3dalam mode server, yaitu sebagai penerima data. Komputer yang menjalankan perintah ini akan menunggu koneksi dari client.-p 8791: Opsi ini digunakan untuk menentukan port yang akan digunakan oleh server. Secara default,iperf3menggunakan port 5201, tapi di sini kita mengubahnya menjadi 8791. Ini berguna jika port default sedang digunakan oleh aplikasi lain, atau jika kita ingin menjalankan beberapa instance iperf3 secara bersamaan.
and client
iperf3 -c 192.168.1.14 -p 8791

-c: Opsi ini adalah singkatan dari "client". Artinya, kita menjalankaniperf3dalam mode client, yaitu sebagai pengirim data. Komputer yang menjalankan perintah ini akan terhubung ke server.192.168.1.14: Ini adalah alamat IP dari komputer yang menjalankan server iperf3. Client perlu mengetahui alamat IP server agar bisa terhubung.-p 8791: Opsi ini harus sama dengan port yang digunakan oleh server. Karena server menggunakan port 8791, maka client juga harus menggunakan port 8791.
Task 4.12: Use nc (Netcat) to check if port 443 is open on discord.com.
nc -zv discord.com 443
nc: Ini adalah nama perintahnya, yaitu programncatau netcat itu sendiri.ncadalah tool serbaguna yang bisa digunakan untuk berbagai macam tugas terkait jaringan, termasuk membuat koneksi TCP atau UDP, listening di port tertentu, dan lain-lain.-z: Opsi ini berarti "zero-I/O mode". Artinya,nctidak akan mengirim atau menerima data apa pun. Kita hanya ingin tahu apakah koneksi bisa dibuat atau tidak.-v: Opsi ini berarti "verbose". Artinya,ncakan menampilkan informasi yang lebih detail tentang proses koneksi.discord.com: Ini adalah alamat domain atau hostname yang ingin kita tuju. Dalam hal ini, kita mau coba koneksi ke Discord.443: Ini adalah nomor port. Port 443 biasanya digunakan untuk HTTPS, yaitu protokol yang aman untuk browsing web.
Task 4.13: Use nc to send the message “Hello, Server!” to google.com on port 12345.
#listening
nc -l 12345
#send message
echo "Hello, Server!" | nc localhost 12345

Kedua perintah ini menunjukkan cara menggunakan nc (netcat) untuk komunikasi sederhana antar dua proses di Linux, mirip client-server. Perintah pertama menjalankan nc sebagai server yang "mendengarkan" di port 12345, dan perintah kedua menjalankan nc sebagai client yang mengirim pesan "Hello, Server!" ke server tersebut.
Task 4.14: Use nc to start a simple HTTP server on port 8080 and serve a static HTML file.
echo "<html><body><h1>Hi, mdrdani</h1></body></html>" > index.html
echo "<html><body><h1>Hi, mdrdani</h1></body></html>" > index.html: Perintah ini membuat file index.html dan menuliskan kode HTML sederhana di dalamnya. Tanda > mengalihkan output dari echo ke file index.html.
while true; do (echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"; cat index.html) | nc -l 8791; done
while true: Ini adalah loop tak terbatas. Artinya, web server ini akan terus berjalan sampai kamu hentikan secara manual (biasanya denganCtrl+C).do: Ini menandai awal dari blok perintah yang akan diulang dalam loop.(echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"; cat index.html): Bagian ini membuat response HTTP yang akan dikirim ke client.echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n": Perintahechodengan opsi-edigunakan untuk menampilkan teks dengan interpretasi escape sequence. Ini membuat header HTTP.HTTP/1.1 200 OKmenandakan response sukses.Content-Type: text/htmlmemberitahu browser bahwa kontennya adalah HTML.\r\nadalah carriage return dan line feed, yang menandai akhir baris dalam header HTTP. Dua baris kosong setelah Content-Type menandai akhir header.;: Tanda titik koma memisahkan dua perintah dalam satu baris.cat index.html: Perintahcatdigunakan untuk membaca isi fileindex.html.
|: Tanda pipa ini "menyalurkan" output dari perintah di dalam kurung ke perintah selanjutnya.nc -l 8791: Perintahnc(netcat) dijalankan dalam mode listening (-l) pada port 8791. Ini akan menerima koneksi dari client (misalnya, browser).done: Ini menandai akhir dari blok perintah yang diulang dalam loop.

Task 4.15: Manually query for the domain discord.com.
sudo apt install bind9-dnsutils
dig @8.8.8.8 discord.com

dig (domain information groper) untuk mencari informasi DNS (Domain Name System) tentang discord.com dengan bantuan DNS server publik Google di 8.8.8.8.
