Belajar Flannel - Firewall & Host Networking
Episode 15 of 23

Belajar Flannel - Firewall & Host Networking

Episode ini mengamankan jalur host: port yang harus dibuka untuk VXLAN, WireGuard, dan IPsec di firewall host maupun cloud security group, serta cara memilih interface host yang tepat lewat --iface dan menghindari konflik IP di jaringan yang padat.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Semua traffic Flannel pada akhirnya melewati jaringan host, dan jaringan host punya firewall. Jika port tunnel tertutup, jaringan terlihat sehat di dokumentasi tetapi koneksi antar node selalu gagal. Ini salah satu masalah paling membingungkan bagi pengguna baru Flannel.

Episode 15 mengamankan jalur host secara menyeluruh: port yang harus dibuka untuk setiap backend, cara memilih interface host yang tepat lewat --iface, dan cara menghindari konflik IP di jaringan yang padat.

Port yang Perlu Dibuka

VXLAN: UDP 4789

Backend default membutuhkan UDP port 4789 terbuka antar node. Di host dengan firewall, buka port ini:

Buka port VXLAN di ufw
sudo ufw allow 4789/udp
sudo ufw reload

Perintah sudo ufw allow 4789/udp membuka port encapsulation VXLAN. Tanpa ini, paket Pod antar node tidak akan sampai meskipun route dan lease sehat.

WireGuard dan IPsec

WireGuard mendengarkan di UDP 51820, sedangkan IPsec memakai port 500 untuk IKE dan 4500 untuk NAT traversal. Buka semuanya sesuai backend yang dipakai:

Buka port WireGuard dan IPsec
sudo ufw allow 51820/udp
sudo ufw allow 500/udp
sudo ufw allow 4500/udp

Backend ipip memakai protokol IP nomor 4, yang tidak dibuka lewat port melainkan lewat izin protokol. Pastikan firewall kalian mengizinkan protokol tersebut jika memakai ipip.

Cloud Security Groups

AWS, GCP, dan Azure

Cloud provider memblokir traffic antar node di lapisan security group atau firewall VPC, bukan di iptables host. Aturan yang harus ditambahkan mengikuti backend yang dipakai:

Aturan security group AWS
Source: 10.0.0.0/16
Protocol: UDP
Port: 4789
Description: Flannel VXLAN antar node

Setiap provider punya sintaks sendiri, tetapi polanya sama: izinkan traffic antar node untuk port backend Flannel. Tambahkan aturan untuk subnet node, bukan untuk semua IP publik.

Verifikasi End-to-End

Setelah membuka port, uji langsung antar node:

Uji port terbuka antar node
nc -uvz <ip-node-lain> 4789

Output dari nc -uvz <ip-node-lain> 4789 mengonfirmasi port UDP reachable antar node. Jika hasilnya timeout, periksa security group dan firewall host secara berurutan.

Memilih Interface Host yang Tepat

Masalah Interface Ganda

Node modern punya banyak interface: eth0 untuk jaringan utama, eth1 untuk storage, docker0 untuk container. flanneld menebak interface dari route default, dan tebakan ini bisa salah. Akibatnya tunnel dibuat di interface yang salah dan traffic antar node gagal.

Solusi: --iface atau Iface di net-conf

Paksa pilihan interface secara eksplisit:

Set interface host
net-conf.json: |
  {
    "Network": "10.244.0.0/16",
    "Backend": {
      "Type": "vxlan"
    },
    "Iface": "eth0"
  }

Perintah flanneld --iface eth0 juga bisa dipakai sebagai flag. Pilih interface yang benar-benar menuju jaringan host lain, biasanya yang dipakai kubelet untuk komunikasi control plane.

Memverifikasi Pilihan

Cek IP yang dipakai interface flannel.1:

Cek interface yang dipakai
ip -d link show flannel.1
ip -4 addr show eth0

Bandingkan nilai local pada ip -d link show flannel.1 dengan IP eth0. Jika keduanya cocok, flanneld memakai interface yang benar.

Menghindari Konflik IP

CIDR yang Bentrok

Konflik IP terjadi ketika network Flannel bentrok dengan jaringan yang sudah ada, misalnya VPC 10.244.0.0/16 sedang dipakai layanan lain. Gejalanya kacau: route menuju Pod juga menangkap traffic layanan lain. Sebelum install, pastikan network Flannel tidak bentrok dengan CIDR VPC atau jaringan on-premise.

Cek CIDR VPC yang terpakai
ip -4 addr show
ip route show

Perintah ip route show menampilkan jaringan yang sedang dipakai node. Bandingkan dengan Network di net-conf.json untuk memastikan tidak ada tumpang tindih.

Konsistensi Antara Node

Konflik IP juga terjadi jika dua cluster memakai network Flannel yang sama dan digabungkan. Setiap cluster harus memakai CIDR yang unik. Saat merencanakan multi-cluster, alokasikan CIDR berbeda untuk masing-masing, misalnya cluster A 10.244.0.0/16 dan cluster B 10.245.0.0/16.

Uji Jaringan Host Secara Menyeluruh

Dari Sisi Node

Selain memeriksa port, pastikan host networking sehat secara keseluruhan. Cek bahwa semua interface yang dibutuhkan up, route antar node tersedia, dan tidak ada kebocoran route dari jaringan lain yang menutupi route Flannel.

Inspeksi menyeluruh
ip -br addr show
ip route show | grep -E "10.244|default"

Output dari ip -br addr show menampilkan ringkasan interface, dan perintah route menunjukkan jaringan Pod beserta route default. Keduanya memberi gambaran utuh kondisi host.

Dokumentasi Port per Cluster

Simpan daftar port dan security group di dokumentasi atau repository infrastruktur. Saat node baru ditambahkan atau cloud environment diganti, daftar ini jadi panduan yang mencegah masalah firewall terulang.

Penutup

Episode 15 mengamankan jalur host Flannel: membuka port VXLAN, WireGuard, dan IPsec di firewall dan security group, memilih interface host yang tepat, serta menghindari konflik CIDR.

Inti yang harus dibawa pulang:

  • VXLAN butuh UDP 4789; WireGuard butuh UDP 51820; IPsec butuh UDP 500 dan 4500.
  • Cloud security group harus membuka port backend antar node.
  • interface host yang salah adalah penyebab klasik kegagalan lintas node.
  • Gunakan field Iface atau flag --iface untuk memaksa pilihan interface.
  • Network Flannel tidak boleh bentrok dengan CIDR yang sudah ada.
  • Setiap cluster harus memakai CIDR unik agar aman digabungkan.

Di episode 16 selanjutnya kita akan menyetel performa: optimasi performa dan MTU — menghitung MTU yang benar dengan overhead VXLAN 50 bytes, menghindari fragmentasi, serta mengaktifkan direct routing untuk traffic intra-subnet yang lebih cepat.

Belajar Flannel - Firewall & Host Networking | Belajar Flannel