lb condition
lb condition komutu, bir aksiyonun hangi trafikte uygulanacağını belirleyen koşulları oluşturur. Koşul tek başına bir şey yapmaz: bir aksiyona ya da profile bağlandığında, o işin yalnız eşleşen isteklerde çalışmasını sağlar. Panel karşılığı Conditions bölümüdür.
İlk yazılan alan criteria'dır
Neye bakılacağı önce seçilir; hangi alanların isteneceğini bu seçim belirler. Ölçüt yazılmadan başka alan listelenmez.
Komut Özeti
Yazım Sırası
lb condition add criteria path--content_placement start --name yonetim-yolulb action update id <aksiyon> --cond <koşul>Zorunlu Alanlar
Ölçüt bu komutta bir ayırıcıdır: CLI önce criteria ister, ardından o ölçütün zorunlu alanlarını sırayla sorar. Ölçüte özel zorunlu alanlar satırda -- ile başlayan alan olsa bile öneksiz yazılır ve hepsi tamamlanmadan -- ile başlayan hiçbir alan kabul edilmez. Listede olmayan ölçütlerde ek zorunlu alan yoktur.
| Sıra | Alan | Durum | Değer |
|---|---|---|---|
| 1 | criteria | Zorunlu | Kırk iki ölçütten biri; Tab listeler |
| 2 | query | Koşullu zorunlu | req_body · res_body · query_param · path · pathq · url ölçütlerinde aranacak değer |
| 2 · 3 | headerName · query | Koşullu zorunlu | http_header; başlık adı ve aranacak değer |
| 2 · 3 | cookieName · query | Koşullu zorunlu | user_cookie · be_cookie; çerez adı ve aranacak değer |
| 2 · 3 | rdpCookieName · query | Koşullu zorunlu | rdp_cookie; RDP çerez adı ve aranacak değer |
| 2 · 3 | mapKey · mapContent | Koşullu zorunlu | custom_map; aranacak anahtar ve liste içeriği |
| 2 | acceptLanguage | Koşullu zorunlu | accept_language; dil kodu |
| 2 · 3 | srcIpType · country · city · src · asn | Koşullu zorunlu | src_ip; önce tür, sonra türe göre ülke, şehir, adres ya da ASN |
| 2 | dst | Koşullu zorunlu | dst; hedef adres |
| 2 | manualCondContent | Koşullu zorunlu | manualCond; koşul ifadesi |
| 2 · 3 | smartVar · smartOperator | Koşullu zorunlu | smartCond; değişken ve işleç. Ardından işlecin değer alanı istenir (bkz. Dinamik Koşullar) |
| 2 · 3 | agsVar · agsOperator | Koşullu zorunlu | agsCond; değişken ve işleç. Ardından işlecin değer alanı istenir |
| 4 · 5 | smartStrRefValue · staticStrRefValue · staticRegexRefValue · smartIntRefValue · smartIntRefFrom · smartIntRefTo · staticIpCidrRefValue.ip · staticIpCidrRefValue.cidr | Koşullu zorunlu | smartCond ve agsCond; seçilen işlecin değer alanı. Hangisinin isteneceği Dinamik Koşullar tablosundadır; bool işlecinde değer alanı yoktur |
Her Ölçütte Bulunabilen Alanlar
| Alan | Ne yapar | Arkasına ne yazılır |
|---|---|---|
--name | Koşula ad verir; adlandırılan koşul başka yerlerden seçilebilir | Koşulun adı. Zorunlu değildir |
--content_placement | Aranan değerin nasıl eşleşeceğini belirler | exactMatch tam eşleşme (varsayılan) · start ile başlar · end ile biter · sub içerir · regex düzenli ifade · found alanın yalnız varlığına bakar |
--caseInsensitive | Eşleştirmede büyük ve küçük harf ayrımını kaldırır | true · false (varsayılan false) |
--condLoc | Koşulun istekte mi yanıtta mı değerlendirileceğini seçer | atRequest (varsayılan) · atResponse |
--condPro | Koşulun hangi aşamada değerlendirileceğini seçer | atRequest (varsayılan) · atResponse |
Bu alanların hangi ölçütte açıldığı ölçütün türüne bağlıdır: eşleştirme biçimi ve harf duyarlılığı yalnız metin arayan ölçütlerde, --condLoc ile --condPro yalnız aşama seçilebilen ölçütlerde görünür.
Ölçütler
Aşağıdaki tablolarda kırk iki ölçütün tamamı, zorunlu ve ölçüte özel isteğe bağlı alanlarıyla verilmiştir. Yukarıdaki ortak alanlar tekrar yazılmamıştır.
İçerik Eşleştiren Ölçütler
criteria | Panel karşılığı | Zorunlu alanlar | Ölçüte özel isteğe bağlı alanlar |
|---|---|---|---|
path | Path | query | — |
pathq | Path + query | query | — |
url | URL | query | — |
query_param | Query parameter | query | — |
http_header | HTTP header | headerName · query | — |
user_cookie | User cookie name | cookieName · query | — |
be_cookie | Server cookie name | cookieName · query | — |
rdp_cookie | RDP cookie | rdpCookieName · query | — |
req_body | HTTP request body | query | --bodySize |
res_body | HTTP response body | query | --bodySize |
İstemciyi Tanıyan Ölçütler
criteria | Panel karşılığı | Zorunlu alanlar | Ölçüte özel isteğe bağlı alanlar |
|---|---|---|---|
browser | Browser | — | --browserName.N |
operatingSystem | Operating system | — | --operatingSystem.N |
mobile | Mobile platform | — | --mobilePlatform.N |
bot | Bot type | — | --botType.N |
nettype_group | Network type group | — | --nettypeGroup.N |
nettype_category | Network type category | — | --nettypeCategory.N |
blacklist_ip_category | Blacklist IP category | — | --blacklistIpCategory |
accept_language | Client language preference | acceptLanguage | --acceptLanguageCompare.N |
Adres ve Port Ölçütleri
criteria | Panel karşılığı | Zorunlu alanlar | Ölçüte özel isteğe bağlı alanlar |
|---|---|---|---|
src_ip | Source IP | srcIpType → türe göre country · city · src · asn | — |
dst | Destination IP | dst | — |
dst_port | Destination port | — | --dst_port.op · --dst_port.val |
Sayısal Ölçütler
criteria | Panel karşılığı | Zorunlu alanlar | Ölçüte özel isteğe bağlı alanlar |
|---|---|---|---|
status | Status code | — | --status_op.op · --status_op.val |
resp_time | Server response time | — | --resp_time_op.op · --resp_time_op.val |
nbsrv | Number of active servers | — | --nbsrv_op.op · --nbsrv_op.val |
req_size | Request size (bytes) | — | --req_size_op.op · --req_size_op.val |
res_size | Response size (bytes) | — | — |
fe_conn | Frontend connection | — | --fe_conn_op.op · --fe_conn_op.val |
fe_sess_rate | Frontend number of new sessions / s | — | --fe_sess_rate_op.op · --fe_sess_rate_op.val |
fe_req_rate | Frontend number of HTTP requests / s | — | --fe_req_rate_op.op · --fe_req_rate_op.val |
TLS Ölçütleri
criteria | Panel karşılığı | Zorunlu alanlar | Ölçüte özel isteğe bağlı alanlar |
|---|---|---|---|
ssl_fc_cipher | SSL cipher | — | — |
ssl_fc_protocol | SSL version | — | — |
ssl_fc_sni | SSL SNI info | — | — |
Kimlik ve WAF Ölçütleri
criteria | Panel karşılığı | Zorunlu alanlar | Ölçüte özel isteğe bağlı alanlar |
|---|---|---|---|
http_auth | User authentication | — | --userPassPairs.N.username · --userPassPairs.N.password |
waf_attack_id | WAF attack ID | — | --wafAttackIds.N |
waf_attack_group | WAF attack group | — | --wafAttackGroups.N |
Liste ve Dinamik Ölçütler
criteria | Panel karşılığı | Zorunlu alanlar | Ölçüte özel isteğe bağlı alanlar |
|---|---|---|---|
url_list | Response based URL list | — | — |
custom_map | Dynamic list | mapKey · mapContent | --mapMethod |
manualCond | Manual condition | manualCondContent | — |
smartCond | Dynamic condition | smartVar · smartOperator | — |
agsCond | AGS condition | agsVar · agsOperator | — |
trackingCond | Tracking condition | trackingCondCriteria · trackingCondOp.val · trackingTableTag | --trackingCondOp.op |
quarantineCond | Quarantine condition | trackingCondCriteria · trackingCondOp.val | --trackingCondOp.op |
Ölçüt Alanlarının Karşılıkları
| Alan | Ne yapar | Arkasına ne yazılır |
|---|---|---|
query | Aranacak değeri taşır | Aranan metin; nasıl eşleşeceğini --content_placement belirler |
headerName | Hangi HTTP başlığına bakılacağını belirler | Başlık adı, örneğin X-Forwarded-For |
cookieName | Hangi çereze bakılacağını belirler | Çerez adı |
rdpCookieName | Hangi RDP çerezine bakılacağını belirler | RDP çerez adı |
--bodySize | Gövdenin kaç baytının çözümleneceğini sınırlar | Bayt sayısı |
--browserName.N · --operatingSystem.N · --mobilePlatform.N · --botType.N | İstemcinin hangi tarayıcı, işletim sistemi, mobil platform ya da bot türünde olduğuna bakar | Listeden seçilen değerler; her biri kendi indeksiyle |
--nettypeGroup.N · --nettypeCategory.N | Kaynak adresin ağ türü grubuna ya da kategorisine bakar | Listeden seçilen değerler |
--blacklistIpCategory | Kaynak adresin hangi kara liste kategorisinde olduğuna bakar | Kategori değeri |
acceptLanguage | İstemcinin dil tercihine bakar | Dil kodu |
--acceptLanguageCompare.N | Karşılaştırılacak ek dilleri belirler | Dil kodları |
srcIpType | Kaynak adresin nasıl belirleneceğini seçer | country ülkeye göre · city şehre göre · manual elle yazılan adres · asn otonom sistem numarasına göre |
country · city · src · asn | Seçilen türe göre karşılaştırılacak değeri taşır | Ülke, şehir, adres ya da ASN; hangisinin isteneceğini srcIpType belirler |
dst | Hedef adrese bakar | IP adresi |
--dst_port.op · --dst_port.val · --dst_port.val2 | Hedef portu bir eşikle ya da aralıkla karşılaştırır | İşleç (varsayılan =), sayı ve aralıkta üst sınır |
--status_op.op · --status_op.val · --status_op.val2 | Yanıtın durum kodunu karşılaştırır | İşleç, sayı ve aralıkta üst sınır |
--resp_time_op.op · --resp_time_op.val · --resp_time_op.val2 | Arka ucun yanıt süresini karşılaştırır | İşleç, süre değeri ve aralıkta üst sınır |
--nbsrv_op.op · --nbsrv_op.val · --nbsrv_op.val2 | Ayakta olan sunucu sayısını karşılaştırır | İşleç, sayı ve aralıkta üst sınır |
--req_size_op.op · --req_size_op.val · --req_size_op.val2 | İstek boyutunu karşılaştırır | İşleç, bayt sayısı ve aralıkta üst sınır |
--fe_conn_op.op · --fe_conn_op.val · --fe_conn_op.val2 | Karşılama tarafındaki bağlantı sayısını karşılaştırır | İşleç, sayı ve aralıkta üst sınır |
--fe_sess_rate_op.op · --fe_sess_rate_op.val · --fe_sess_rate_op.val2 | Saniyedeki yeni oturum sayısını karşılaştırır | İşleç, sayı ve aralıkta üst sınır |
--fe_req_rate_op.op · --fe_req_rate_op.val · --fe_req_rate_op.val2 | Saniyedeki istek sayısını karşılaştırır | İşleç, sayı ve aralıkta üst sınır |
--userPassPairs.N.username · --userPassPairs.N.password | Temel kimlik doğrulamada kabul edilecek kullanıcıları tanımlar | Kullanıcı adı ve parola; her çift kendi indeksiyle |
--wafAttackIds.N · --wafAttackGroups.N | WAF'ın işaretlediği saldırı kimliğine ya da grubuna bakar | Kimlik ya da grup değerleri |
mapKey · mapContent | Dinamik listede hangi anahtarın hangi liste içinde aranacağını belirler | Aranacak anahtar ve liste içeriği |
--mapMethod | Dinamik liste aramasının biçimini seçer | exactMatch (varsayılan) · start · end · sub · regex · ip |
manualCondContent | Koşulu doğrudan ifade olarak yazar | Koşul ifadesi |
smartVar · agsVar | Dinamik koşulda hangi değişkene bakılacağını belirler | Değişken adı |
trackingCondCriteria | Takip tablosunda hangi ölçünün izleneceğini seçer | Takip ölçütü |
trackingCondOp.val · --trackingCondOp.op · --trackingCondOp.val2 | İzlenen ölçüyü bir eşikle ya da aralıkla karşılaştırır | Sayı, işleç (varsayılan =) ve aralıkta üst sınır |
trackingTableTag | Hangi takip tablosuna bakılacağını belirler | Tablo etiketi; yalnız trackingCond ölçütünde istenir |
Sayısal Karşılaştırma Alanları
Sayısal ölçütlerin hepsi aynı üç parçalı yapıyı kullanır: işleç, değer ve aralık işleci seçildiğinde ikinci değer.
| Parça | Ne yapar | Arkasına ne yazılır |
|---|---|---|
--<ölçüt>_op.op | Karşılaştırma işlecini seçer | = eşit (varsayılan) · < küçük · > büyük · - aralık. İşaret içerdiği için çift tırnak içinde yazılır |
--<ölçüt>_op.val | Karşılaştırılacak değeri verir | Sayı; aralıkta alt sınırdır |
--<ölçüt>_op.val2 | Aralığın üst sınırını verir | Sayı; yalnız --<ölçüt>_op.op "-" yazıldığında açılır |
Bu yapıyı kullanan alanlar: status_op · dst_port · resp_time_op · nbsrv_op · req_size_op · fe_conn_op · fe_sess_rate_op · fe_req_rate_op · trackingCondOp. Örneğin durum kodunu 500 ile 599 arasında aramak için --status_op.op "-" --status_op.val 500 --status_op.val2 599 yazılır.
Dinamik Koşullar: İşleç ve Değer Alanı
smartCond ve agsCond ölçütlerinde önce bakılacak değişken (smartVar ya da agsVar), sonra işleç yazılır. Değerin hangi alana yazılacağını seçilen işleç belirler.
| İşleç | Ne yapar | Değer alanı |
|---|---|---|
strEq | Metin birebir eşit mi | smartStrRefValue |
strSub | Metin içeriyor mu | staticStrRefValue |
strStart | Metin ile başlıyor mu | staticStrRefValue |
strEnd | Metin ile bitiyor mu | staticStrRefValue |
strRegex | Düzenli ifadeye uyuyor mu | staticRegexRefValue |
intEq | Sayı eşit mi | smartIntRefValue |
intGt | Sayı büyük mü | smartIntRefValue |
intLt | Sayı küçük mü | smartIntRefValue |
intRange | Sayı iki değer arasında mı | smartIntRefFrom ve smartIntRefTo |
bool | Değer doğru mu | Değer alanı yoktur |
ipCidr | Adres verilen ağa düşüyor mu | staticIpCidrRefValue.ip ve staticIpCidrRefValue.cidr |
İşleç yazıldığı anda ilgili değer alanı zorunlu olur ve öneksiz yazılır; öteki değer alanları listeden düşer.
Örnekler
Güncelleme ve Silme
Bilinmesi Gerekenler
- Koşul tek başına çalışmaz. Bir aksiyona (
lb action→--cond), önbellek kuralına ya da profil alanına bağlandığında devreye girer. - Ad zorunlu değildir. Adsız koşul da oluşturulabilir; ancak başka yerlerden seçilebilmesi için ad vermek işi kolaylaştırır.
- İşleç değerleri tırnak ister.
>ve<gibi işaretler komut satırında ayrıştırıcı için özel anlam taşır; çift tırnak içinde yazılır. - Değer alanını işleç belirler. Dinamik koşullarda işleç değiştiğinde önceki değer alanı listeden düşer, yenisi zorunlu olur.
- Eşleştirme biçimi her ölçütte bulunmaz.
--content_placementve--caseInsensitiveyalnız metin arayan ölçütlerde görünür.
