Ipele ekuro n pese nikan ni wiwo olominira ilana ilana jeneriki ti o pese awọn iṣẹ ipilẹ fun yiyo data lati awọn apo-iwe, ṣiṣe awọn iṣẹ data, ati iṣakoso sisan. Awọn ofin sisẹ ati awọn olutọju-ila-ilana ni a ṣe akojọpọ sinu bytecode ni aaye olumulo, lẹhin eyi ti a ti kojọpọ bytecode sinu ekuro nipa lilo wiwo Netlink ati ṣiṣe ni ekuro ni ẹrọ foju foju pataki kan ti o ṣe iranti ti BPF (Awọn Ajọ Packet Berkeley). Ọna yii ngbanilaaye lati dinku iwọn iwọn koodu sisẹ ti n ṣiṣẹ ni ipele ekuro ati gbe gbogbo awọn iṣẹ ti awọn ofin itọka ati ọgbọn fun ṣiṣẹ pẹlu awọn ilana sinu aaye olumulo.
Awọn imotuntun akọkọ:
- Atilẹyin fun awọn sakani ni awọn asopọ (concatenation, awọn edidi ti awọn adirẹsi ati awọn ebute oko oju omi ti o rọrun lafiwe). Fun apẹẹrẹ, fun ṣeto “whitelist” ti awọn eroja rẹ jẹ asomọ, titọka asia “aarin” yoo fihan pe eto le pẹlu awọn sakani ninu asomọ (fun asomọ “ipv4_addr. ipv4_addr. inet_service” o ṣee ṣe tẹlẹ lati ṣe atokọ gangan gangan. ibaamu ti awọn fọọmu "192.168.10.35. 192.68.11.123", ati bayi o le pato awọn ẹgbẹ ti awọn adirẹsi "80-192.168.10.35-192.168.10.40").
tabili ip foo {
ṣeto akojọ funfun {
tẹ ipv4_addr. ipv4_addr. inet_iṣẹ
awọn asia aarin
eroja = {192.168.10.35-192.168.10.40. 192.68.11.123-192.168.11.125. 80}
}igi ẹwọn {
iru àlẹmọ kio prerouting ayo àlẹmọ; silẹ eto imulo;
ip saddr. ip baba. tcp dport @whitelist gba
}
} - Ninu awọn eto ati awọn atokọ maapu, o ṣee ṣe lati lo itọsọna “typeof”, eyiti o pinnu ọna kika ti eroja nigbati o baamu.
Fun apere:tabili ip foo {
ṣeto akojọ funfun {
oriṣi ip saddr
eroja = {192.168.10.35, 192.168.10.101, 192.168.10.135}
}igi ẹwọn {
iru àlẹmọ kio prerouting ayo àlẹmọ; silẹ eto imulo;
ip baba @whitelist gba
}
}tabili ip foo {
map addr2mark {
typeof ip saddr: ami meta
eroja = {192.168.10.35: 0x00000001, 192.168.10.135: 0x00000002}
}
} - Ṣe afikun agbara lati lo awọn idapọ ninu awọn asopọ NAT, eyiti o fun ọ laaye lati pato adirẹsi ati ibudo nigba asọye awọn iyipada NAT ti o da lori awọn atokọ maapu tabi awọn eto ti a darukọ:
nft add ofin ip nat pre dnat ip addr. ibudo to ip saddr map {1.1.1.1: 2.2.2.2. ọgbọn }
nft ṣafikun maapu ip nat awọn ibi {tẹ ipv4_addr. inet_iṣẹ: ipv4_addr. inet_iṣẹ \; }
nft add ofin ip nat pre dnat ip addr. ibudo to ip saddr. tcp dport maapu @destinations - Atilẹyin fun isare ohun elo pẹlu diẹ ninu awọn iṣẹ sisẹ ti a ṣe nipasẹ kaadi nẹtiwọọki. Isare ti wa ni sise nipasẹ awọn ethtool IwUlO ("ethtool -K eth0 hw-tc-offload on"), lẹhin eyi o ti wa ni mu ṣiṣẹ ni nftables fun awọn ifilelẹ ti awọn pq lilo asia "offload". Nigbati o ba nlo ekuro Linux 5.6, isare ohun elo jẹ atilẹyin fun ibaramu aaye akọsori ati ayewo wiwo ti nwọle ni apapo pẹlu gbigba, sisọnu, pidánpidán (dup), ati awọn apo-iwe firanšẹ siwaju (fwd). Ninu apẹẹrẹ ti o wa ni isalẹ, awọn iṣẹ ti sisọ awọn apo-iwe ti o nbọ lati adirẹsi 192.168.30.20 ni a ṣe ni ipele kaadi nẹtiwọki, laisi gbigbe awọn apo-iwe si ekuro:
# o nran file.nft
tabili netdev x {
ẹwọn y {
iru àlẹmọ kio ingress ẹrọ eth0 ayo 10; awọn asia offload;
ip saddr 192.168.30.20 silẹ
}
}
# nft -f file.nft - Alaye ti ilọsiwaju nipa ipo ti aṣiṣe ninu awọn ofin.
# nft paarẹ ofin ip yz mu 7
Aṣiṣe: Ko le ṣe ilana ofin: Ko si iru faili tabi ilana
pa ofin ip yz ọwọ 7
^# nft paarẹ ofin ip xx mu 7
Aṣiṣe: Ko le ṣe ilana ofin: Ko si iru faili tabi ilana
pa ofin ip xx kuro 7
^# nft paarẹ tabili twst
Aṣiṣe: Ko si iru faili tabi ilana; ṣe o tumọ si tabili ‘idanwo' ni idile ip?
pa twst tabili
^^^^Apeere akọkọ fihan pe tabili “y” ko si ninu eto naa, keji ti olutọju “7” ti nsọnu, ati ẹkẹta ti titẹ titẹ ti han nigbati o ba tẹ orukọ tabili naa.
- Atilẹyin ti a ṣafikun fun ṣiṣayẹwo wiwo ẹrú nipa sisọ “meta sdif” tabi “meta sdifname”:
... meta sdifname vrf1 ...
- Atilẹyin ti a ṣafikun fun awọn iṣẹ iṣipopada sọtun tabi sosi. Fun apẹẹrẹ, lati yi aami apo-iwe ti o wa tẹlẹ silẹ nipasẹ 1 bit ati ṣeto bit kekere si 1:
Ami meta ṣeto aami meta lshift 1 tabi 0x1…
- Aṣayan "-V" ti ṣe lati ṣe afihan alaye ti ikede ti o gbooro sii.
# nft -V
nfttables v0.9.4 (Jive ni marun)
cli: readline
json: bẹẹni
minigmp: rara
libxtables: bẹẹni - Awọn aṣayan laini aṣẹ gbọdọ wa ni pato ni bayi ṣaaju awọn aṣẹ. Fun apẹẹrẹ, o nilo lati pato “nft -a list ruleset”, ati ṣiṣe “nft list ruleset -a” yoo ja si aṣiṣe.
orisun: opennet.ru