Сатҳи ядро танҳо интерфейси мустақили протоколро таъмин мекунад, ки вазифаҳои асосиро барои истихроҷи додаҳо аз пакетҳо, иҷрои амалиёти додаҳо ва назорати ҷараён таъмин мекунад. Қоидаҳои филтркунӣ ва коркардкунандагони мушаххаси протокол дар фазои корбар ба байткод тартиб дода мешаванд, ки пас аз он ин байткод бо истифода аз интерфейси Netlink ба ядро бор карда мешавад ва дар ядро дар мошини махсуси виртуалӣ, ки BPF (Беркли Пакет Филтрҳо) ба хотир меорад, иҷро карда мешавад. Ин равиш ба шумо имкон медиҳад, ки андозаи коди филтркуниро, ки дар сатҳи ядро кор мекунад, хеле кам кунед ва тамоми функсияҳои қоидаҳои таҳлил ва мантиқи кор бо протоколҳоро ба фазои корбар интиқол диҳед.
Навовариҳои асосӣ:
- Дастгирии ҳисобкунакҳои маҷмӯӣ ва трафики бо унсурҳои маҷмӯи алоқаманд ба маҷмӯаҳо илова карда шудааст. Ҳисобкунакҳо бо истифода аз калимаи калидии "counter" фаъол карда мешаванд:
ҷадвали ip x {
муқаррар y {
typeof ip saddr
шунидан
унсурҳо = {192.168.10.35, 192.168.10.101, 192.168.10.135}
}занҷир z {
навъи филтр қалмоқе филтри афзалиятнок баромад; қабули сиёсат;
ip daddr @y
}
} - Барои муқаррар кардани арзишҳои ибтидоии ҳисобкунакҳо, масалан, барои барқарор кардани ҳисобкунакҳои қаблӣ пас аз бозоғозӣ, шумо метавонед фармони "nft -f" -ро истифода баред:
# cat ruleset.nft
ҷадвали ip x {
муқаррар y {
typeof ip saddr
шунидан
унсурҳо = {192.168.10.35 бастаҳои муқобил 1 байт 84, 192.168.10.101 \
counter p 192.168.10.135 пакетҳои ҳисобкунанда 0 байт 0 }
}занҷир z {
навъи филтр қалмоқе филтри афзалиятнок баромад; қабули сиёсат;
ip daddr @y
}
}
# nft -f ruleset.nft
#nft маҷмӯи қоидаҳои рӯйхат
ҷадвали ip x {
муқаррар y {
typeof ip saddr
шунидан
унсурҳо = {192.168.10.35 бастаҳои муқобил 1 байт 84, 192.168.10.101 \
counter p 192.168.10.135 пакетҳои ҳисобкунанда 0 байт 0 }
}занҷир z {
навъи филтр қалмоқе филтри афзалиятнок баромад; қабули сиёсат;
ip daddr @y
}
} - Дастгирии муқобил инчунин ба ҷадвали flowable илова карда шудааст:
table ip foo {
сатри ҷадвали ҷараён {
Афзалияти воридшавии қалмоқ -100
дастгоҳҳо = {eth0, eth1}
шунидан
}занҷир ба пеш {
навъи филтр қалмоқ филтри афзалиятнок;
ҷараёнро илова кунед @bar counter
}
}Посмотреть список счётчиков можно командной «conntrack -L»:
tcp 6 src = 192.168.10.2 dst = 10.0.1.2 варзиш = 47278 dport = 5201 пакет = 9 байт = 608 \
src = 10.0.1.2 dst = 10.0.1.1 варзиш = 5201 dport = 47278 бастаҳо = 8 байт = 428 [OFFLOAD] тамға = 0 \
secctx = истифодаи нул = 2 TCP 6 src = 192.168.10.2 dst = 10.0.1.2 варзиш = 47280 dport = 5201 \
бастаҳо = 1005763 байт = 44075714753 src = 10.0.1.2 dst = 10.0.1.1 варзиш = 5201 dport = 47280 \
бастаҳо = 967505 байт = 50310268 [OFFLOAD] аломат = 0 secctx = истифодаи бенуксон = 2 - Дар маҷмӯаҳои пайвастшавӣ (пайванд, бастаҳои муайяни суроғаҳо ва портҳое, ки муқоисаро содда мекунанд) мумкин аст дастури “typeof”-ро истифода бурд, ки намуди додаҳои элементҳоро барои қисмҳои таркибии элементҳои маҷмӯи муайян мекунад:
table ip foo {
муқаррар кардани рӯйхати сафед {
typeof ip saddr. tcp dport
унсурҳои = {192.168.10.35. 80, 192.168.10.101. 80}
}бари занҷир {
навъи филтр қалмоқе пеш аз масир филтри афзалиятнок; паст кардани сиёсат;
ип падар. tcp dport @whitellist қабул кунед
}
} - Директиваи typeof ҳоло ба ҳамроҳшавӣ дар рӯйхатҳои харитаҳо низ дахл дорад:
table ip foo {
харитаи addr2mark {
typeof ip saddr. tcp dport: аломати мета
унсурҳои = {192.168.10.35. 80 : 0x00000001,
192.168.10.135. 80 : 0x00000002 }
}бари занҷир {
навъи филтр қалмоқе пеш аз масир филтри афзалиятнок; паст кардани сиёсат;
Мета тамға маҷмӯи IP daddr. харитаи tcp dport @addr2mark қабул
}
} - Дастгирии иловашуда барои пайвастани диапазон дар маҷмӯаҳои беном (номнашуда):
# nft илова кардани қоида inet филтри вуруди ip daddr. tcp dport\
{10.0.0.0/8. 10-23, 192.168.1.1-192.168.3.8. 80-443 } кабул кунед - Имконияти партофтани пакетҳо бо парчамҳои 802.1q (VLAN) ҳангоми коркарди пулҳои шабакавӣ таъмин карда шудааст:
# nft илова пули қоида foo bar ether навъи vlan рад бо аз нав танзимкунии tcp
- Дастгирии иловашуда барои мувофиқат тавассути идентификатори сессияи TCP (ID conntrack). Барои муайян кардани ID-и conntrack, шумо метавонед имконоти "--output id" -ро истифода баред:
# conntrack -L — ID-и баромад
udp 17 18 src = 192.168.2.118 dst = 192.168.2.1 варзиш = 36424 dport = 53 бастаҳо = 2 \
байт = 122 src = 192.168.2.1 dst = 192.168.2.118 варзиш = 53 dport = 36424 пакет = 2 байт = 320 \
[БОВАР] тамға = 0 истифода = 1 ID = 2779986232# nft илова кардани қоида foo bar ct id 2779986232 counter
Манбаъ: opennet.ru