ะžะฟัƒะฑะปะธะบะพะฒะฐะฝ ะฒั‹ะฟัƒัะบ ะฟะฐะบะตั‚ะฝะพะณะพ ั„ะธะปัŒั‚ั€ะฐ nftables 1.0.1, ัƒะฝะธั„ะธั†ะธั€ัƒัŽั‰ะตะณะพ ะธะฝั‚ะตั€ั„ะตะนัั‹ ั„ะธะปัŒั‚ั€ะฐั†ะธะธ ะฟะฐะบะตั‚ะพะฒ ะดะปั IPv4, IPv6, ARP ะธ ัะตั‚ะตะฒั‹ั… ะผะพัั‚ะพะฒ (ะฝะฐั†ะตะปะตะฝ ะฝะฐ ะทะฐะผะตะฝัƒ iptables, ip6table, arptables ะธ ebtables). ะะตะพะฑั…ะพะดะธะผั‹ะต ะดะปั ั€ะฐะฑะพั‚ั‹ ะฒั‹ะฟัƒัะบะฐ nftables 1.0.1 ะธะทะผะตะฝะตะฝะธั ะฒะบะปัŽั‡ะตะฝั‹ ะฒ ัะพัั‚ะฐะฒ ัะดั€ะฐ Linux 5.16-rc1.

เบŠเบธเบ” nftables เบ›เบฐเบเบญเบšเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบšเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบฅเบฐเบ”เบฑเบš kernel เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป‚เบ”เบเบฅเบฐเบšเบปเบšเบเปˆเบญเบ nf_tables, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ Linux kernel เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบ›เปˆเบญเบ 3.13. เบฅเบฐเบ”เบฑเบš kernel เบชเบฐเบซเบ™เบญเบ‡เบžเบฝเบ‡เปเบ•เปˆเบชเปˆเบงเบ™เบ•เบดเบ”เบ•เปเปˆเปเบšเบšเป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเปเบžเบฑเบเป€เบเบฑเบ”, เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป„เบซเบผ.

เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เปเบฅเบฐเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™เป„เบ”เป‰เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ bytecode เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ bytecode เบ™เบตเป‰เบ–เบทเบเป‚เบซเบฅเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ kernel เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš Netlink เปเบฅเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™ kernel เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual เบžเบดเป€เบชเบ”เบ—เบตเปˆเบฅเบฐเบ™เบถเบเป€เบ–เบดเบ‡ 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

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™