Parzûna pakêtê ya nftables 1.0.0 berdan

Serbestberdana parzûna pakêtê nftables 1.0.0 hate weşandin, ku navberên fîlterkirina pakêtê ji bo IPv4, IPv6, ARP û pirên torê yek dike (mebest ew e ku li şûna iptables, ip6table, arptables û ebtables). Guhertinên ku ji bo xebitandina serbestberdana nftables 1.0.0 hewce ne di kernel Linux 5.13 de cih digirin. Guherînek girîng a di hejmara guhertoyê de bi ti guhertinên bingehîn re têkildar nabe, lê tenê encamek berdewamiya domdar a hejmarkirinê di nîşana dehiyê de ye (veberdana berê 0.9.9 bû).

Pakêta nftables hêmanên parzûna pakêtê yên ku di cîhê bikarhêner de dimeşin vedihewîne, dema ku xebata asta kernelê ji hêla binepergala nf_tables ve tê peyda kirin, ku ji berdana 3.13-an vir ve beşek ji kernel Linux-ê ye. Asta kernel tenê navgînek serbixwe-protokolek gelemperî peyda dike ku fonksiyonên bingehîn ji bo derxistina daneyan ji pakêtan, pêkanîna operasyonên daneyê, û kontrolkirina herikînê peyda dike.

Rêgezên fîlterkirinê û rêwerzên protokol-taybet di cîhê bikarhêner de di nav bytekodê de têne berhev kirin, pişt re ev bytekod bi karanîna navgîniya Netlink-ê di kernelê de tê barkirin û di kernelê de di makîneyek virtual ya taybetî ya ku BPF (Parzeyên Pakêta Berkeley) tîne bîra xwe de, tê darve kirin. Ev nêzîkatî dihêle hûn bi girîngî mezinahiya koda fîlterkirinê ya ku di asta kernelê de tê xebitandin kêm bikin û hemî fonksiyonên qaîdeyên parskirinê û mantiqê ji bo xebata bi protokolan re li cîhê bikarhêner biguhezînin.

Nûvekirinên sereke:

  • Piştgiriya ji bo hêmana maskê ya "*" li navnîşên mîhengan hate zêdekirin, ku ji bo pakêtên ku nekevin bin hêmanên din ên ku di berhevokê de hatine destnîşan kirin têne destnîşan kirin. sifrê x { lîsteya astengkirina nexşeyê { type ipv4_addr : alayên hukmê hêmanên navberê = { 192.168.0.0/16 : qebûl kirin, 10.0.0.0/8 : qebûl kirin, * : avêtin } } zincîre y { binivîsin çengelê parzûnê 0; polîtîka qebûl dikin; ip saddr vmap @blocklist } }
  • Mimkun e ku meriv bi vebijarka "--define" ji rêzika fermanê guherbaran diyar bike. # cat test.nft sifrê netdev x { zincîra y { cîhazên têketina hookê parzûnê binivîsin = $dev priority 0; drop Policy; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • Di navnîşên nexşeyê de, karanîna bêjeyên domdar (dewletdar) destûr tê dayîn: fîltera sifrê ya inet { nexşeya portmapê {binivîse inet_service : hêmanên kontra = {22 pakêtên jimarvan 0 byte 0: jump ssh_input, * pakêtên jimarvan 0 byte 0 : drop}} chain ssh_input { } chain wan_input { tcp dport vmap @portmap } chain prerouting { type filter hook prerouting priority raw; polîtîka qebûl dikin; iif vmap { "lo" : jump wan_input } }
  • Fermana "lîstika çengelan" hat zêdekirin da ku navnîşek hilkêşkeran ji bo malbatek pakêtek diyar nîşan bide: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 zincîra netdev xy [nf_tables] +0000000300 zincîra inet mw [nf_thooks] { -0000000100 zincîra ip ab [nf_tables] +0000000300 zincîra inet mz [nf_tables] } hook pêş { -0000000225 selinux_ipv4_forward 0000000000 zincîra ip-ya 0000000225-4 zincîra ip-ê [0000000225] v4_output } hook postrouting { +XNUMX XNUMX selinux_ipvXNUMX_postroute } }
  • Blokên rêzê dihêle ku bêjeyên jhash, symhash û numgen werin berhev kirin da ku pakêtan li rêzên li cîhê bikarhêner belav bikin. … dorê ji bo symhash mod 65536 … alayên dorê ji numgen inc mod 65536 re derbas dibin… dorê ji jhash oif re. meta mark mod 32 "queue" di heman demê de dikare bi navnîşên nexşeyê re were hev kirin da ku li cîhê bikarhêner li ser bingeha bişkokên keyfî rêzek hilbijêrin. ... alayên rêzê ji nexşeya oifname re derbas dibin { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • Mimkûn e ku guhêrbarên ku navnîşek sazkirî di nav çend nexşeyan de vedihewîne berfireh bikin. pênasekirina navberan = { eth0, eth1 } sifrê ip x { zincîre y { 0 0; polîtîka qebûl dikin; iifname vmap { lo : qebûl, $interfaces : drop } } } # nft -f x.nft # nft lîsteya qaîdeyên tabloya ip x { zincîra y { type fîlter hook input priority 0; polîtîka qebûl dikin; iifname vmap { "lo" : qebûl, "eth1" : avêtin, "ethXNUMX" : avêtin } }
  • Lihevkirina vmaps (nexşeya biryarê) di navberan de destûr e: # nft qaîdeya zêde bike xy tcp dport . ip saddr vmap {1025-65535. 192.168.10.2: qebûl bike}
  • Hevoksaziya hêsankirî ya ji bo nexşeyên NAT. Destûr dide ku rêzikên navnîşan diyar bike: ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } an navnîşanên IP-yê yên eşkere û port: ... dnat bo ip saddr map { 10.141.11.4:192.168.2.3. . 80 } an berhevokên rêzikên IP û portan: ... dnat to ip saddr . nexşeya tcp dport {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }

Source: opennet.ru

Add a comment