RabbitMQ berkomunikasi lewat banyak port, dan salah satu port terbuka bisa menjadi pintu masuk. Di episode ini kalian memahami seluruh port yang dipakai RabbitMQ, mengatur bind address dan interface, memilih IPv4 vs IPv6, serta menyusun aturan firewall untuk single node dan cluster di cloud.

RabbitMQ adalah makhluk jaringan: setiap fitur yang pernah kita bahas — AMQP, Management UI, clustering, metrik Prometheus, plugin MQTT dan STOMP — semuanya berjalan di atas port tertentu. Jika port tidak dikonfigurasi dan dilindungi dengan benar, dua masalah mengintai: layanan tidak bisa diakses, atau yang lebih buruk, broker bisa diakses orang yang tidak berhak.
Episode ini memetakan seluruh port yang dipakai RabbitMQ, lalu membahas bind address — menentukan interface mana yang melayani koneksi mana. Terakhir, kita menyusun aturan firewall untuk single node dan cluster, termasuk security group di cloud dan pertimbangan VPC peering.
Tujuan akhirnya sederhana: hanya jaringan yang tepat yang bisa menjangkau setiap port, dan tidak ada port yang terbuka lebih dari yang dibutuhkan.
Daftar port yang paling sering dipakai:
| Port | Fungsi |
|---|---|
| 5672 | AMQP (plain) dan AMQP 0-9-1 |
| 5671 | AMQP over TLS |
| 15672 | Management UI / HTTP API |
| 15671 | Management UI over TLS |
| 25672 | Distribusi antar node cluster |
| 4369 | epmd (Erlang port mapper daemon) |
| 15692 | Metrik Prometheus |
Port-plugin: MQTT di 1883 (dan 8883 untuk TLS), STOMP di 61613, Web-STOMP di 15674, serta MQTT over WebSockets di 15675.
Periksa port yang sedang didengarkan:
ss -tlnp | grep -E "5672|15672|25672|4369"Perintah ss -tlnp menampilkan port TCP yang aktif. Jika ada port yang tidak diharapkan, matikan plugin atau ubah konfigurasi listener-nya.
Secara default RabbitMQ mendengarkan di semua interface. Batasi dengan listeners.tcp.ip untuk hanya melayani interface tertentu:
listeners.tcp.default = 5672
listeners.tcp.ip = 192.168.50.10
listeners.ssl.default = 5671
listeners.ssl.ip = 192.168.50.10
management.tcp.ip = 192.168.50.10
management.tcp.port = 15672Dengan konfigurasi di atas, port 5672, 5671, dan 15672 hanya bisa diakses dari alamat 192.168.50.10 — bukan dari seluruh interface publik.
RabbitMQ mendukung IPv4 dan IPv6. Jika memakai hostname di koneksi client, pastikan DNS resolve ke alamat yang sesuai dengan bind address. Kesalahan umum: client memakai hostname yang resolve ke IPv6, sementara listener hanya di IPv4 (atau sebaliknya). Untuk debugging koneksi yang gagal, cek resolusi DNS:
getent hosts rabbitmq.example.comPerintah getent hosts menampilkan alamat yang di-resolve dari hostname — cocokkan dengan interface yang melayani port.
Untuk single node, aturan firewall idealnya membatasi akses per port:
sudo ufw allow from 10.0.1.0/24 to any port 5672
sudo ufw allow from 10.0.2.0/24 to any port 15672
sudo ufw allow from 10.0.3.0/24 to any port 15692Cluster butuh port tambahan antar node: 25672 untuk komunikasi node, 4369 untuk epmd. Aturan yang benar: port ini hanya boleh diakses antar node cluster, bukan dari jaringan umum:
sudo ufw allow from 10.0.0.0/16 to any port 25672
sudo ufw allow from 10.0.0.0/16 to any port 4369epmd mencatat port node; pastikan semua node bisa menjangkau epmd node lain sebelum membentuk cluster (topik episode 19).
Di AWS/GCP, terjemahkan aturan di atas ke security group: buat group khusus RabbitMQ dengan inbound rule terbatas. Untuk komunikasi antar VPC, pakai VPC peering dan pastikan route table mengarahkan subnet broker ke subnet aplikasi. Jangan pernah membuka port 15672 ke 0.0.0.0/0 — ini undangan terbuka untuk semua orang di internet.
Warning
Port 4369 (epmd) sering terlupakan saat membuka firewall cluster, sehingga node tidak bisa saling menemukan. Jika formasi cluster gagal, selalu periksa port 4369 dan 25672 di kedua arah.
Di episode 18 ini kalian sudah memetakan seluruh port RabbitMQ, mengatur bind address dan interface, mempertimbangkan IPv4 vs IPv6 dan DNS, serta menyusun aturan firewall untuk single node, cluster, dan environment cloud.
Inti yang harus dibawa pulang:
Di episode 19 selanjutnya kita akan membangun RabbitMQ clustering — membentuk cluster multi node, mekanisme node discovery, pengamanan dengan Erlang cookie, penambahan dan penghapusan node, serta menangani network partition dengan mode pause_minority, autoheal, dan ignore. Ini langkah pertama menuju high availability!