A ti tu àlẹ̀mọ́ packet nftables 0.9.9 sílẹ̀. Ó so àwọn ìsopọ̀ àlẹ̀mọ́ packet pọ̀ fún IPv4, IPv6, ARP, àti àwọn afárá nẹ́tíwọ́ọ̀kì (tí a fojú sí gẹ́gẹ́ bí àyípadà fún iptables, ip6table, arptables, àti ebtables). Ìkàwé libnftnl 1.2.0 tí ó tẹ̀lé e, èyí tí ó pèsè API ìpele kékeré fún ìbáṣepọ̀ pẹ̀lú ètò nf_tables, ni a ti tú jáde ní àkókò kan náà. Àwọn àyípadà tí a nílò fún nftables 0.9.9 ni a ti fi kún kernel. Linux 5.13-rc1.
Àpò nftables ní àwọn èròjà àlẹ̀mọ́ packet tí ó ń ṣiṣẹ́ ní ààyè olùlò, nígbàtí iṣẹ́ ìpele kernel ni a ń pèsè láti ọwọ́ nf_tables subsystem, èyí tí ó jẹ́ ara kernel. Linux Láti ìgbà tí a ti tú 3.13 jáde, ìfọwọ́sowọ́pọ̀ gbogbogbòò tí kò ní ìlànà nìkan ni a pèsè ní ìpele kernel, èyí tí ó ń pèsè iṣẹ́ ìpìlẹ̀ fún yíyọ dátà kúrò nínú àwọn packets, ṣíṣe àwọn iṣẹ́ dátà, àti ìṣàkóso ìṣàn.
Àwọn àlẹ̀mọ́ náà ń darí ara wọn, àwọn olùdarí ìlànà náà sì ni a ń kó jọ sínú bytecode nínú ààyè olùlò, lẹ́yìn èyí ni a ó fi bytecode yìí sínú kernel nípa lílo Netlink interface tí a ó sì ṣe é nínú kernel ní pàtàkì kan. foju ẹrọ, tí ó jọ BPF (Berkeley Packet Filters). Ọ̀nà yìí gba ààyè fún ìdínkù pàtàkì nínú ìwọ̀n kódì ìfọ́mọ́lẹ̀ tí ó ń ṣiṣẹ́ ní ìpele kernel, ó sì ń gbé gbogbo ìtúpalẹ̀ òfin àti ìlànà ìlànà sínú ààyè olùlò.
Awọn imotuntun akọkọ:
- Agbara lati gbe iṣelọpọ ṣiṣan lọ si ẹgbẹ ohun ti nmu badọgba nẹtiwọọki ti ni imuse, mu ṣiṣẹ ni lilo asia 'offload'. Flowtable jẹ ẹrọ kan fun iṣapeye ọna ti itọsọna soso, ninu eyiti aye pipe ti gbogbo awọn ẹwọn ilana ilana ofin ti lo nikan si soso akọkọ, ati gbogbo awọn apo-iwe miiran ninu sisan ni a firanṣẹ taara. tabili ip agbaye {flowtable f {kio ingress ayo àlẹmọ + 1 awọn ẹrọ = {lan3, lan0, wan} flags offload } pq siwaju { Iru àlẹmọ kio siwaju ayo àlẹmọ; imulo gba; ip protocol {tcp, udp} sisan fi @f } pq post {iru nat kio postrouting ayo àlẹmọ; imulo gba; oifname "wan" masquerade } }
- Atilẹyin ti a ṣafikun fun sisọ asia oniwun kan si tabili lati rii daju lilo iyasoto ti tabili nipasẹ ilana kan. Nigbati ilana kan ba pari, tabili ti o ni nkan ṣe pẹlu rẹ yoo paarẹ laifọwọyi. Alaye nipa ilana ti han ni awọn ofin idalenu ni awọn fọọmu ti a ọrọìwòye: tabili ip x {# progname nft flags eni pq y {type filter hook input ayo filter; imulo gba; awọn apo-iwe counter 1 baiti 309}}
- Atilẹyin ti a ṣafikun fun sipesifikesonu IEEE 802.1ad (stacking VLAN tabi QinQ), eyiti o ṣalaye ọna kan fun aropo awọn aami VLAN pupọ sinu fireemu Ethernet kan. Fun apẹẹrẹ, lati ṣayẹwo awọn iru ti ita Ethernet fireemu 8021ad ati vlan id=342, o le lo awọn ikole ... ether iru 802.1ad vlan id 342 lati ṣayẹwo awọn ita iru ti Ethernet fireemu 8021ad/vlan id=1, iteeye 802.1 q/vlan id=2 ati siwaju sii IP packet encapsulation: ... ether iru 8021ad vlan id 1 vlan iru 8021q vlan id 2 vlan iru ip counter
- Atilẹyin ti a ṣafikun fun ṣiṣakoso awọn orisun ni lilo awọn ẹgbẹ awọn ẹgbẹ iṣakoso iṣọkan v2. Iyatọ bọtini laarin awọn ẹgbẹ v2 ati v1 ni lilo awọn ilana awọn ẹgbẹ ẹgbẹ ti o wọpọ fun gbogbo awọn iru awọn orisun, dipo awọn ipo iyasọtọ fun ipin awọn orisun Sipiyu, fun ṣiṣakoso agbara iranti, ati fun I/O. Fun apẹẹrẹ, lati ṣayẹwo boya baba ti iho ni ipele akọkọ cgroupv2 baamu iboju “system.slice”, o le lo ikole: ... socket cgroupv2 ipele 1 “system.slice”
- A fi agbara kun lati ṣayẹwo awọn paati ti awọn apo-iwe SCTP (iṣẹ ti o nilo fun iṣẹ yoo han ninu kernel Linux 5.14). Fún àpẹẹrẹ, láti ṣàyẹ̀wò bóyá pákẹ́ẹ̀tì kan ní ìpín kan pẹ̀lú irú 'dátà' àti pápá 'irú': … dátà chunk sctp wà … irú data chunk sctp 0
- Imuṣiṣẹ ti iṣẹ ikojọpọ ofin ti ni iyara nipasẹ isunmọ igba meji ni lilo asia “-f”. Ijade ti atokọ awọn ofin tun ti ni iyara.
- Fọọmu iwapọ kan fun ṣayẹwo boya o ti ṣeto awọn iwọn asia ti pese. Fun apẹẹrẹ, lati ṣayẹwo pe awọn bit ipo snat ati dnat ko ṣeto, o le pato: ... ipo ct! snat,dnat lati ṣayẹwo pe a ti ṣeto syn bit ni bitmask syn,ack: ... tcp flags syn / syn,ack lati ṣayẹwo pe fin ati rst bits ko ni ṣeto ni bitmask syn, ack, fin, akọkọ: ... tcp awọn asia ! = fin, rst / syn, ack, fin, akọkọ
- Gba ọrọ-ọrọ “idajọ” laaye ninu ṣeto/mapu iru awọn asọye: fi maapu xm {typeof iifname . ip ilana th dport: idajo;}
orisun: opennet.ru
