ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π²ΡΠΏΡΡΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° nftables 1.0.1, ΡΠ½ΠΈΡΠΈΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π΄Π»Ρ IPv4, IPv6, ARP ΠΈ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΌΠΎΡΡΠΎΠ² (Π½Π°ΡΠ΅Π»Π΅Π½ Π½Π° Π·Π°ΠΌΠ΅Π½Ρ iptables, ip6table, arptables ΠΈ ebtables). ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π²ΡΠΏΡΡΠΊΠ° nftables 1.0.1 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΡΠΎΡΡΠ°Π² ΡΠ΄ΡΠ° Linux 5.16-rc1.
αααα αα nftables αα½αααΆααααΆαααΆαα»ααααααααα αααααααααΎαααΆααααα»αα αααααα’αααααααΎααααΆαα αααααααααααΆαααΆαααααα·αααΊαααααααΌαααΆααααααααααααααααααα nf_tables αααααΆααααααα½αααααΊαααααΈαα»α α αΆααααΆααααΈααΆαα ααααααΆα 3.13 α ααααα·αααΊααααααααααα ααα»α αααααΆααα―αααΆααααααα·ααΈααΆαααΌαα αααααααααα»αααΆαααΆααΌαααααΆααααααΆααααΆαααΆααααα·ααααααααΈαααα ααααααααΆα ααααα·ααααα·ααΆααα·αααααα αα·αααΆααααααααααααα αΌαα
α αααΆααααααΆαα αααα αα·αα’ααααααααααΆαααΆααα·ααΈααΆαααΆααααΆααααααΌαααΆαα αααααααΆ bytecode αααα»αα αααααα’αααααααΎααααΆαα αααααΆαααα bytecode αααααααΌαααΆααααα»ααα αααα»αααΊααααααααααΎα ααα»α αααααΆαα Netlink α αΎαααααΌαααΆαααααα·ααααα·αααα»αααΊααααα αααα»ααααΆαααΈααα·αααα·ααα·ααααααααΉαααΎαααα BPF (Berkeley Packet Filters)α αα·ααΈααΆααααααααα’αα»ααααΆαα±ααα’αααααΆααααααααααΆαααααΆααααΌαααα αααααΌαααααααααααα»αααααΎαααΆααα ααααα·αααΊααα α αΎαααααΆααααΈαα»αααΆαααΆααα’ααααα αααΆααααα αα·ααααααα·ααααΆαααααΆααααααΎααΆαααΆαα½ααα·ααΈααΆααα αααα»αααα αα’αααααααΎααααΆααα
ααΆαα αααααααα·αααααΆαααα
- Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ set- ΠΈ map-ΡΠΏΠΈΡΠΊΠΎΠ².
- Π£ΡΠΊΠΎΡΠ΅Π½Π° ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° set- ΠΈ map-ΡΠΏΠΈΡΠΊΠΎΠ².
- Π£ΡΠΊΠΎΡΠ΅Π½ Π²ΡΠ²ΠΎΠ΄ ΠΈΠ·Π±ΡΠ°Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡ ΠΈ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ Π² Π±ΠΎΠ»ΡΡΠΈΡ Π½Π°Π±ΠΎΡΠ°Ρ ΠΏΡΠ°Π²ΠΈΠ». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«nft list rulesetΒ» Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π½Π°Π±ΠΎΡΠ° ΠΏΡΠ°Π²ΠΈΠ», Π½Π°ΡΡΠΈΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ 100 ΡΡΡΡΡ ΡΡΡΠΎΠΊ, ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 3.049 ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π° ΠΏΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±Π»ΠΈΡ nat ΠΈ filter (Β«nft list table natΒ», Β«nft list table filterΒ») ΡΠΎΠΊΡΠ°ΡΠ°Π΅ΡΡΡ Π΄ΠΎ 1.969 ΠΈ 0.697 ΡΠ΅ΠΊΡΠ½Π΄.
- Π£ΡΠΊΠΎΡΠ΅Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ Β«βterseΒ» ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠ°Π²ΠΈΠ» Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ set- ΠΈ map-ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ.
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΡΡΠ°ΡΠΈΠΊΠ° ΠΈΠ· ΡΠ΅ΠΏΠΎΡΠΊΠΈ Β«egressΒ», ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΉ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ ΡΡΠΎΠ²Π½Π΅, ΡΡΠΎ egress-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ΅ netdev (hook egress), Ρ.Π΅. Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΊΠΎΠ³Π΄Π° Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΡ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ° ΡΠ΄ΡΠ°. table netdev filter { chain egress { type filter hook egress devices = { eth0, eth1 } priority 0; meta priority set ip saddr map { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±Π°ΠΉΡΠΎΠ² Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ. # nft add rule x y @ih,32,32 0x14000000 counter # nft add rule x y @ih,32,32 set 0x14000000 counter
ααααα: opennet.ru