Juniper SRX Firewall Üzerinde Rate Limitasyonu

srx240_rate_limiting1

Yukarıdaki gibi basit bir topolojimiz olsun. 10.10.21.2 IP adresine sahip bilgisayar ge-0/0/1 interface i ne direkt bağlıdır. Download limiti için shape isimli bir policer ve sonrasında filter oluşturağız ve ge-0/0/1 portuna atayacağız. Bandwidthi 200k ya düşüreceğiz. Download da 200k nın yaklaşık 1/10 una düşmüş olacak.

root@srx240> show version
Hostname: srx240
Model: srx240h2
JUNOS Software Release [12.1X44-D35.5]
—————————————————————–

set firewall policer shape if-exceeding bandwidth-limit 200k
set firewall policer shape if-exceeding burst-size-limit 26000
set firewall policer shape then discard
set firewall filter download-limit term shaping from destination-address 10.10.21.2/32
set firewall filter download-limit term shaping then policer shape
set firewall filter download-limit term shaping then accept
set interfaces ge-0/0/1 unit 0 family inet filter output download-limit (download limiti yapmak istediğim için filtreyi ge-0/0/1 portunun output tarafına uyguluyorum.)
——————————————————————–
10.10.21.2/32 şeklinde spesifik bir makine yerine 10.10.21.0/24 şeklinde trust network bloğunu seçebiliriz.

işlemler sonrası çıktımız aşağıdaki gibidir.

[edit firewall policer shape]
root@srx240# show
if-exceeding {
bandwidth-limit 200k;
burst-size-limit 26k;
}
then discard;

[edit firewall policer shape]

————————

[edit firewall filter download-limit]
root@srx240# show
term shaping {
from {
destination-address {
10.10.21.0/24;
}
}
then {
policer shape;
accept;
}
}

————————-

[edit interfaces ge-0/0/1 unit 0]
root@srx240# show
family inet {
filter {
output download-limit;
}
address 10.10.21.1/24;
}

10mbps lık hat üzerinden yaklaşık 1 mbps ile download yapabiliyorken

rate_limiting_on_SRX240_1

policyi uyguladıktan sonra download ım 20Kbps civarına düştü.

rate_limiting_on_SRX240_2————————————-

Aslında LAN daki birkaç kullanıcıya rate limiti yapmak için dönüş trafiğine (untrust tan trusta) filtre uygulamak daha sağlıklı olacaktır. Firewall Filtreleri stateless olduğu için untrust bacağın input yönüne filtre uygulanıp source-address 0.0.0.0, destination address ise SRX in source NAT adresi olacak şekilde bir filtre tanımlanması performans açısından daha efektiftir. Çünkü trafik işlendikten sonra policy uygulanması yerine Trafik içeri alınmadan untrustta kesilmiş olacaktır. Yukarıdaki örnekten devam edersek untrust bacaktaki IP adresim 10.10.20.3 üzerinden şöyle bir kural daha efektif olacaktır çünkü hem trafik iç bacakta işlenmeden kesilmiş olacak hem de nat arkasındaki tüm kullanıcılar zaten kuraldan etkilenmiş olacaktır.

set firewall policer shape if-exceeding bandwidth-limit 200k
set firewall policer shape if-exceeding burst-size-limit 26000
set firewall policer shape then discard
set firewall filter download-limit term shaping from source-address 0.0.0.0/0
set firewall filter download-limit term shaping from destination-address 10.10.20.3
set firewall filter download-limit term shaping then policer shape
set firewall filter download-limit term shaping then accept
set interfaces ge-0/0/0 unit 0 family inet filter input download-limit (Untrust bacağın input yönüne doğru kural yazıyorum)

Önemli Notlar

    • Upload limiti için filtre ilgili interface in input tarafına yazılmaktadır.
    • Download limiti için filtre ilgili interface in output tarafına yazılmaktadır.
    • Dowload / Upload limitleri aynı interface e uygulanabilir ancak Source / destination yönünün değiştirilmesi gerekmektedir. Örneğin trust networkündeki bir bilgisayar download limiti için destination address konumunda iken upload limitinde source address konumundadır.
    •  “bandwidth-percent” opsiyonu ile toplam bant genişliğinin ne kadarının % cinsinden kullanılacağı belirlenebilir.
     root@SRX# set firewall policer shape if-exceeding ?
     Possible completions:
        bandwidth-limit Bandwidth limit (32000..50000000000 bits per second)
        bandwidth-percent Bandwidth limit in percentage (1..100 percent)

About Emre BAŞTUĞ

Emre BAŞTUĞ