Hidlydd pecyn nftables 1.0.0 rhyddhau

Mae rhyddhau hidlydd pecyn nftables 1.0.0 wedi'i gyhoeddi, gan uno rhyngwynebau hidlo pecynnau ar gyfer IPv4, IPv6, ARP a phontydd rhwydwaith (gyda'r nod o ddisodli iptables, ip6table, arptables a ebtables). Mae'r newidiadau sydd eu hangen ar gyfer rhyddhau nftables 1.0.0 i weithio wedi'u cynnwys yn y cnewyllyn Linux 5.13. Nid yw newid sylweddol yn rhif y fersiwn yn gysylltiedig ag unrhyw newidiadau sylfaenol, ond yn hytrach yn ganlyniad i barhad cyson rhifo mewn nodiant degol (0.9.9 oedd y datganiad blaenorol).

Mae'r pecyn nftables yn cynnwys cydrannau hidlo pecyn sy'n rhedeg yng ngofod y defnyddiwr, tra bod y gwaith lefel cnewyllyn yn cael ei ddarparu gan yr is-system nf_tables, sydd wedi bod yn rhan o'r cnewyllyn Linux ers rhyddhau 3.13. Mae'r lefel cnewyllyn yn darparu rhyngwyneb protocol-annibynnol generig yn unig sy'n darparu swyddogaethau sylfaenol ar gyfer tynnu data o becynnau, perfformio gweithrediadau data, a rheoli llif.

Mae'r rheolau hidlo eu hunain a thrinwyr protocol-benodol yn cael eu crynhoi i god byte gofod defnyddiwr, ac ar Γ΄l hynny mae'r cod byte hwn yn cael ei lwytho i'r cnewyllyn gan ddefnyddio'r rhyngwyneb Netlink a'i weithredu yn y cnewyllyn mewn peiriant rhithwir arbennig sy'n debyg i BPF (Berkeley Packet Filters). Mae'r dull hwn yn ei gwneud hi'n bosibl lleihau'n sylweddol faint y cod hidlo sy'n rhedeg ar lefel y cnewyllyn a symud holl swyddogaethau rheolau dosrannu a rhesymeg gweithio gyda phrotocolau i ofod defnyddwyr.

Prif arloesiadau:

  • Mae cefnogaeth i'r elfen mwgwd β€œ*” wedi'i ychwanegu at restrau gosod, sy'n cael ei sbarduno ar gyfer unrhyw becynnau nad ydynt yn dod o dan elfennau eraill a ddiffinnir yn y set. tabl x { blocklist map { math ipv4_addr : baneri rheithfarn elfennau cyfwng = { 192.168.0.0/16 : derbyn, 10.0.0.0/8 : derbyn, * : gollwng } } cadwyn y { bachyn hidlydd math rhagflaenu blaenoriaeth 0; derbyn polisi; ip saddr vmap @blocklist } }
  • Mae'n bosibl diffinio newidynnau o'r llinell orchymyn gan ddefnyddio'r opsiwn "--define". # cat test.nft table netdev x { cadwyn y { math dyfeisiau mynediad bachyn hidlydd = $dev blaenoriaeth 0; gollwng polisi; } } # nft β€”define dev = " { eth0, eth1 }" -f test.nft
  • Mewn rhestrau mapiau, caniateir defnyddio mynegiadau cyson (stateful): table inet filter { map portmap { type inet_service : verdict counter elements = { 22 pecyn cownter 0 beit 0 : jump ssh_input, * pecynnau cownter 0 beit 0 : drop } } cadwyn ssh_input { } cadwyn wan_input { tcp dport vmap @portmap } rhag-lwybro cadwyn { bachyn ffilter yn rhag-gyfeirio Γ’ blaenoriaeth amrwd; derbyn polisi; iif vmap { " lo " : naid wan_input } } }
  • Ychwanegwyd gorchymyn "bachau rhestr" i ddangos rhestr o drinwyr ar gyfer teulu pecyn penodol: # nft list bachau dyfais ip eth0 teulu ip { bachyn ingress { +0000000010 cadwyn netdev xy [nf_tables] +0000000300 cadwyn inet mw [nf_tables] } mewnbwn bachyn { -0000000100 cadwyn ip ab [nf_tables] +0000000300 cadwyn inet mz [nf_tables] } bachyn ymlaen { -0000000225 selinux_ipv4_forward 0000000000 cadwyn ip ac [nf_tables] 0000000225p ip ac [nf_tables] 4} allbwn selinux_ipv0000000225_ymlaen } llwybro bachyn { +4 XNUMX selinux_ipvXNUMX_postroute } }
  • Mae blociau ciw yn caniatΓ‘u cyfuno mynegiadau jhash, symhash, a numgen i ddosbarthu pecynnau i giwiau yn y gofod defnyddiwr. … ciw i symhash mod 65536 … ciw fflagiau ffordd osgoi i numgen gan gynnwys mod 65536 … ciw i jhash oif . Gall meta mark mod 32 "ciw" hefyd gael ei gyfuno Γ’ rhestrau mapiau i ddewis ciw yn y gofod defnyddiwr yn seiliedig ar allweddi mympwyol. ... ffordd osgoi baneri ciw i fap oifname { " eth0 " : 0 , " ppp0 " : 2 , "eth1" : 2 }
  • Mae'n bosibl ehangu newidynnau sy'n cynnwys rhestr set i sawl map. define interfaces = { eth0, eth1 } tabl ip x { cadwyn y { math bachyn hidlydd blaenoriaeth mewnbwn 0; derbyn polisi; iifname vmap { lo : derbyn, $interfaces : drop } } # nft -f x.nft # nft list ruleset table ip x { cadwyn y { math bachyn hidlydd blaenoriaeth mewnbwn 0; derbyn polisi; iifname vmap { "lo" : derbyn, "eth0" : gollwng, "eth1" : gollwng } }
  • Caniateir cyfuno vmaps (map rheithfarn) bob hyn a hyn: # nft ychwanegu rheol xy tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : derbyn }
  • Cystrawen symlach ar gyfer mapiau NAT. Caniateir nodi ystodau cyfeiriadau: ... map snat i ip saddr { 10.141.11.4 : 192.168.2.2-192.168.2.4 } neu gyfeiriadau IP a phorthladdoedd penodol: ... dnat i ip saddr map { 10.141.11.4 : 192.168.2.3 : . 80 } neu gyfuniadau o ystodau IP a phorthladdoedd: ... dnat i ip saddr . map tcp dport { 192.168.1.2 . 80:10.141.10.2-10.141.10.5. 8888-8999 }

Ffynhonnell: opennet.ru

Ychwanegu sylw