nftables pakete iragazkiaren bertsioa 1.0.0

Packet filter nftables 1.0.0 kaleratzea argitaratu da, IPv4, IPv6, ARP eta sareko zubietarako paketeak iragazteko interfazeak bateratuz (iptables, ip6table, arptables eta ebtables ordezkatzera zuzenduta). nftables 1.0.0 bertsioak funtziona dezan beharrezkoak diren aldaketak Linux 5.13 nukleoan sartzen dira. Bertsio-zenbakiaren aldaketa esanguratsu bat ez dago oinarrizko aldaketarik, baizik eta zenbakikuntzak idazkera hamartarren jarraipen koherentearen ondorioa baino ez da (aurreko bertsioa 0.9.9 zen).

nftables paketeak erabiltzailearen espazioan exekutatzen diren pakete-iragazki osagaiak biltzen ditu, kernel mailako lana, berriz, nf_tables azpisistemak eskaintzen du, 3.13 bertsiotik Linux nukleoaren parte izan dena. Nukleo mailak protokolotik independentea den interfaze generiko bat eskaintzen du, paketeetatik datuak ateratzeko, datu-eragiketak egiteko eta fluxu-kontrolerako oinarrizko funtzioak eskaintzen dituena.

Iragazte-arauak eta protokoloen berariazko kudeatzaileak bytecode batean konpilatzen dira erabiltzailearen espazioan, eta, ondoren, bytecode hau nukleoan kargatzen da Netlink interfazea erabiliz eta nukleoan exekutatzen da BPF (Berkeley Packet Filters) gogorarazten duen makina birtual berezi batean. Ikuspegi honek nukleo mailan exekutatzen den iragazketa-kodearen tamaina nabarmen murrizteko eta protokoloekin lan egiteko analisi-arauak eta logika funtzio guztiak erabiltzaileen espaziora mugitzeko aukera ematen du.

Berrikuntza nagusiak:

  • "*" maskara-elementuaren euskarria gehitu da multzo-zerrendetan, multzoan definitutako beste elementu batzuetan sartzen ez diren paketeetan abiarazten dena. table x { map blocklist { type ipv4_addr : epaiaren banderak tarte elementuak = { 192.168.0.0/16 : onartu, 10.0.0.0/8 : onartu, * : jaregin } } chain y { type filter hook prerouting lehentasuna 0; politika onartu; ip saddr vmap @blocklist } }
  • Komando-lerrotik aldagaiak defini daitezke "--define" aukera erabiliz. # cat test.nft table netdev x { chain y { type filter hook ingress devices = $dev lehentasuna 0; politika jaitsiera; } } # nft β€”define dev="{ eth0, eth1 }" -f test.nft
  • Map-zerrendetan, adierazpen konstanteak (egoerak) erabiltzea onartzen da: table inet filter { map portmap { type inet_service : epaiaren kontagailuaren elementuak = { 22 kontagailu pakete 0 byte 0 : salto ssh_input, * kontagailu pakete 0 byte 0 : drop } } chain ssh_input { } chain wan_input { tcp dport vmap @portmap } chain prerouting { type filter hook prerouting lehentasuna raw; politika onartu; iif vmap { "lo": salto wan_input } } }
  • "list hooks" komandoa gehitu da pakete-familia jakin baterako kudeatzaileen zerrenda bistaratzeko: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw [nf_tables] } hook input { -0000000100 chain ip ab [nf_tables] +0000000300 chain inet mz [nf_tables] } hook aurrera { -0000000225 selinux_ipv4_forward 0000000000 chain ip ac [nf_tables] -0000000225 irteera -4 } hook postroute { +0000000225 4 selinux_ipvXNUMX_postroute } }
  • Ilara-blokeek jhash, symhash eta numgen adierazpenak konbinatzeko aukera ematen dute paketeak erabiltzaile-espazioko ilaretan banatzeko. … ilara symhash mod 65536 … ilararen banderak saihestu numgen inc mod 65536 … ilara jhash oif . meta mark mod 32 "ilara" mapa zerrendekin ere konbina daiteke erabiltzaile-espazioko ilara bat hautatzeko gako arbitrarioetan oinarrituta. ... ilararen banderak oifname mapara igarotzen dira { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • Multzo zerrenda bat barne hartzen duten aldagaiak hainbat mapetan zabal daitezke. define interfaces = { eth0, eth1 } table ip x { chain y { type filter hook sarrerako lehentasuna 0; politika onartu; iifname vmap { lo : onartu, $ interfaces : drop } } } # nft -f x.nft # nft list ruleset table ip x { chain y { type filter hook input priority 0; politika onartu; iifname vmap { "lo": onartu, "eth0": jaregin, "eth1": jaregin } } }
  • vmaps (epai-mapa) tarteka konbinatzea onartzen da: # nft add rule xy tcp dport . ip saddr vmap {1025-65535. 192.168.10.2: onartu }
  • Sintaxi sinplifikatua NAT mapak egiteko. Helbide-barrutiak zehazteko baimena: ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } edo IP helbide eta ataka esplizituak: ... dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 . 80 } edo IP barruti eta ataken konbinazioak: ... dnat to ip saddr . tcp dport mapa {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }

Iturria: opennet.ru

Gehitu iruzkin berria