Traffic Shaping: Membatasi Kecepatan Container OpenVZ di Proxmox

  • Posted on: 18 October 2015
  • By: webadmin

Sejak Proxmox 4.0 tidak lagi memakai OpenVZ melainkan LXC maka pengembangan OpenVZ di Proxmox otomatis tidak ada lagi. Fitu-fitur baru ditambahkan di LXC bukan di OpenVZ. Salah satu fitur penting yang belum ada di OpenVZ adalah membatasi kecepatan bandwidth Containet (CT) seperti yang sudah ada di Virtual Machine (VM) Qemu. Padahal tools yang dipakai VM adalah tc (traffic controls) yang dapat juga diterapkan untuk CT.

Hal yang menyebabkan user salah dalam konfigurasi tc untuk CT adalah penerapan tc hanya pada eth0, padahal CT bekerja melalui venet0, untuk jelasnya lihat flow berikut:

CT --- (venet0) --- NODE ---- (eth0) --- INTERNET

Tampak jelas bahwa NODE menggunakn eth0 untuk koneksi ke Internet sedangkan venet0 untuk koneksi ke CT, dengan demikian kita perlu mendefinisikan 2 script tc sbb:

OUTGOING

DEV=eth0
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 100mbit
tc class add dev $DEV parent 1: classid 1:1 cbq rate 256kbit allot 1500 prio 5 bounded isolated
tc filter add dev $DEV parent 1: protocol ip prio 16 u32 match ip src X.X.X.X flowid 1:1
tc qdisc add dev $DEV parent 1:1 sfq perturb 10

X.X.X.X = Adalah IP yang akan dibatasi, format subnet juga berlaku, misalnnya 192.168.1.0/24

INCOMING

Karena CT menggunakan virtual network device maka ubah eth0 menjadi venet0 sbb:

DEV=venet0
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 100mbit
tc class add dev $DEV parent 1: classid 1:1 cbq rate 256kbit allot 1500 prio 5 bounded isolated
tc filter add dev $DEV parent 1: protocol ip prio 16 u32 match ip dst X.X.X.X flowid 1:1
tc qdisc add dev $DEV parent 1:1 sfq perturb 10

ANTI DDOS

Untuk membatasi jumlah packet agar DDOS bisa dikendalikan:

DEV=eth0
iptables -I FORWARD 1 -o $DEV -s X.X.X.X -m limit --limit 200/sec -j ACCEPT
iptables -I FORWARD 2 -o $DEV -s X.X.X.X -j DROP

MEMBATASI KONEKSI CT KE NODE

Kadang diperlukan untuk membatasi koneksi CT ke NODE sbb:

DEV=venet0
tc filter add dev $DEV parent 1: protocol ip prio 20 u32 match u32 1 0x0000 police rate 2kbit buffer 10k drop flowid :1

Have a nice day.