Hāʻawi ka pae kernel i kahi kikowaena kūʻokoʻa protocol generic e hāʻawi i nā hana maʻamau no ka unuhi ʻana i ka ʻikepili mai nā ʻeke, ka hana ʻana i nā hana ʻikepili, a me ka mana kahe. Hoʻohui ʻia nā lula kānana a me nā mea hoʻohana kikoʻī protocol i ka bytecode ma kahi o ka mea hoʻohana, ma hope o ka hoʻouka ʻia ʻana o kēia bytecode i loko o ka kernel me ka hoʻohana ʻana i ka interface Netlink a hoʻokō ʻia i loko o ka kernel i kahi mīkini virtual kūikawā e hoʻomanaʻo ana i ka BPF (Berkeley Packet Filters). ʻO kēia ala e hiki ai iā ʻoe ke hōʻemi nui i ka nui o ke code kānana e holo ana ma ka pae kernel a hoʻoneʻe i nā hana āpau o nā lula parsing a me nā loiloi no ka hana ʻana me nā protocols i loko o kahi mea hoʻohana.
Nā hana hou nui:
- Kākoʻo no nā pae i nā pilina (concatenation, kekahi pūʻulu o nā helu a me nā awa e maʻalahi i ka hoʻohālikelike). No ka laʻana, no kahi "whitelist" hoʻonohonoho nona nā mea i hoʻopili ʻia, e hōʻike ana i ka hae "interval" e hōʻike ana e hiki i ka set ke hoʻokomo i nā pae i loko o ka hoʻopili (no ka hoʻopili "ipv4_addr . ipv4_addr. pili o ke ʻano "192.168.10.35. 192.68.11.123", a i kēia manawa hiki iā ʻoe ke kuhikuhi i nā pūʻulu o nā helu "80-192.168.10.35-192.168.10.40".
papa ip foo {
hoʻonohonoho i ka papa inoa keʻokeʻo {
ʻano ipv4_addr . ipv4_addr. inet_service
kauā hae
mau mea = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
}kaulahao kaula {
ʻano kānana hook prerouting priority kānana; hāʻule kulekele;
ip saddr. ip papa. tcp dport @whitelist e ʻae
}
} - I nā pūʻulu a me nā papa inoa palapala, hiki ke hoʻohana i ke kuhikuhi "typeof", e hoʻoholo ai i ke ʻano o ka mea i ka wā e pili ana.
Eia kekahi laʻana:papa ip foo {
hoʻonohonoho i ka papa inoa keʻokeʻo {
typeof ip saddr
ʻeleʻele = {192.168.10.35, 192.168.10.101, 192.168.10.135 }
}kaulahao kaula {
ʻano kānana hook prerouting priority kānana; hāʻule kulekele;
ip daddr @whitelist e ʻae
}
}papa ip foo {
palapala 'āina addr2mark {
typeof ip saddr: hōʻailona meta
ʻeleu = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
}
} - Hoʻohui ʻia ka hiki ke hoʻohana i nā hui i loko o NAT bindings, kahi e hiki ai iā ʻoe ke kuhikuhi i kahi helu a me ke awa ke wehewehe ʻana i nā loli NAT e pili ana i nā papa inoa palapala a i ʻole nā papa inoa.
nft add rule ip nat pre dnat ip addr . awa i ip saddr palapala 'āina {1.1.1.1 : 2.2.2.2. kanakolu }
nft hoʻohui i ka palapala ʻāina ip nat destinations { type ipv4_addr . inet_service: ipv4_addr. inet_service \\; }
nft add rule ip nat pre dnat ip addr . awa i ip saddr. tcp dport palapala 'āina @destinations - Kākoʻo no ka wikiwiki ʻana o ka mīkini me kekahi mau hana kānana i hana ʻia e ke kāleka pūnaewele. Hoʻohana ʻia ka wikiwiki ma o ka pono ethtool ("ethtool -K eth0 hw-tc-offload on"), a laila hoʻāla ʻia i nā nftables no ke kaulahao nui me ka hoʻohana ʻana i ka hae "offload". I ka hoʻohana ʻana i ka Linux kernel 5.6, kākoʻo ʻia ka wikiwiki ʻana o ka mīkini no ka hoʻohālikelike ʻana i ke kahua poʻomanaʻo a me ka nānā ʻana i ke kikowaena komo i hui pū ʻia me ka loaʻa ʻana, hoʻolei ʻana, kope kope (dup), a me ka hoʻouna ʻana (fwd). Ma ka laʻana ma lalo nei, hana ʻia nā hana o ka hoʻokuʻu ʻana i nā ʻeke mai ka helu helu 192.168.30.20 ma ka pae kāleka pūnaewele, me ka ʻole o ka hāʻawi ʻana i nā ʻeke i ka kernel:
# popoki waihona.nft
papa netdev x {
kaulahao y {
type filter hook ingress device eth0 priority 10; nā hae hoʻoili;
ip saddr 192.168.30.20 hāʻule
}
}
# nft -f waihona.nft - Hoʻonui ʻia ka ʻike e pili ana i kahi o kahi hewa i nā lula.
# nft delete rule ip yz handle 7
Hapa: ʻAʻole hiki ke hoʻoponopono i ka lula: ʻAʻohe faila a papa kuhikuhi paha
holoi i ka rule ip yz handle 7
^# nft delete rule ip xx handle 7
Hapa: ʻAʻole hiki ke hoʻoponopono i ka lula: ʻAʻohe faila a papa kuhikuhi paha
Holoi i ka rule ip xx handle 7
^# nft holoi i ka papa ʻaina twst
Hapa: ʻAʻohe faila a papa kuhikuhi paha; 'Ōlelo 'oe i ka papa ‘test' ma ka 'ohana ip?
holoi papa twst
^^^^Hōʻike ka laʻana mua ʻaʻole ka papa ʻaina "y" i loko o ka ʻōnaehana, ʻo ka lua e nalowale ana ka mea hoʻokele "7", a ʻo ke kolu e hōʻike ʻia kahi ʻōkuhi typo i ke kākau ʻana i ka inoa papa.
- Hoʻohui i ke kākoʻo no ka nānā ʻana i ka interface kauā ma ka wehewehe ʻana i ka "meta sdif" a i ʻole "meta sdifname":
... meta sdifname vrf1 ...
- Kākoʻo hoʻohui ʻia no nā hana hoʻololi ʻākau a hema paha. No ka laʻana, e hoʻololi i kahi lepili packet i waiho ʻia e 1 bit a hoʻonoho i ka bit liʻiliʻi i 1:
… hoʻonohonoho ʻia ka māka meta i ka hoʻololi 1 a i ʻole 0x1…
- Hoʻokō ʻia ke koho "-V" no ka hōʻike ʻana i ka ʻike manaʻo lōʻihi.
# nft -V
nftables v0.9.4 (Jive ma Five)
cli:readline
json: ʻae
minigmp: ʻaʻole
libxtables: ʻae - Pono e kuhikuhi ʻia nā koho laina kauoha ma mua o nā kauoha. No ka laʻana, pono ʻoe e kuhikuhi i ka "nft -a list ruleset", a me ka holo ʻana i "nft list ruleset -a" e hopena i kahi hewa.
Source: opennet.ru