nftables pakkasía 1.0.0 útgáfa

Útgáfa pakkasíunnar nftables 1.0.0 hefur verið gefin út, sem sameinar pakkasíuviðmót fyrir IPv4, IPv6, ARP og netbrýr (sem miða að því að skipta um iptables, ip6table, arptables og ebtables). Breytingarnar sem þarf til að nftables 1.0.0 útgáfan virki eru innifalin í Linux 5.13 kjarnanum. Veruleg breyting á útgáfunúmeri er ekki tengd neinum grundvallarbreytingum, heldur er hún aðeins afleiðing af stöðugu áframhaldi númera í aukastaf (fyrri útgáfa var 0.9.9).

nftables pakkinn inniheldur pakkasíuhluti sem keyra í notendarými, en kjarnastigsvinnan er veitt af nf_tables undirkerfinu, sem hefur verið hluti af Linux kjarnanum frá útgáfu 3.13. Kjarnastigið veitir aðeins almennt samskiptaóháð viðmót sem veitir grunnaðgerðir til að vinna gögn úr pökkum, framkvæma gagnaaðgerðir og flæðisstýringu.

Síureglurnar sjálfar og siðareglur sértækar meðhöndlarar eru settar saman í notendarými bækióða, eftir það er þessum bætikóða hlaðið inn í kjarnann með því að nota Netlink viðmótið og keyrt í kjarnanum í sérstakri sýndarvél sem líkist BPF (Berkeley Packet Filters). Þessi nálgun gerir það mögulegt að minnka verulega stærð síunarkóðans sem keyrir á kjarnastigi og færa allar aðgerðir þáttunarreglna og rökfræði þess að vinna með samskiptareglur inn í notendarýmið.

Helstu nýjungar:

  • Stuðningur fyrir „*“ grímuþáttinn hefur verið bætt við settalista, sem er ræstur fyrir alla pakka sem falla ekki undir aðra þætti sem eru skilgreindir í settinu. table x { map blocklist { type ipv4_addr : verdict flags interval elements = { 192.168.0.0/16 : accept, 10.0.0.0/8 : accept, * : drop } } keðja y { type filter hook prerouting priority 0; stefna samþykkja; ip saddr vmap @blocklist } }
  • Það er hægt að skilgreina breytur frá skipanalínunni með því að nota "--define" valkostinn. # cat test.nft table netdev x { chain y { type filter hook ingress devices = $dev forgang 0; stefnufall; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • Í kortalistum er notkun stöðugra (stateful) tjáninga leyfð: table inet filter { map portmap { type inet_service : verdict counter elements = { 22 teljarapakkar 0 bæti 0 : jump ssh_input, * teljapakkar 0 bæti 0 : drop } } keðja ssh_input { } keðja wan_input { tcp dport vmap @portmap } keðjuforleiðing { tegund síunarkróks forleiðarforgangur hrár; stefna samþykkja; iif vmap { "lo": hoppa wan_input } }
  • Bætt við "list hooks" skipun til að birta lista yfir meðhöndlara fyrir tiltekna pakkafjölskyldu: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw [nf_hook-tables] } { -0000000100 keðja ip ab [nf_tables] +0000000300 keðja inet mz [nf_tables] } krókur áfram { -0000000225 selinux_ipv4_forward 0000000000 keðja inet mz [nf_tables] } krókur áfram { -0000000225 selinux_ipv4_forward 0000000225 keðja inet mz [nf_tables] } krókur áfram { -4 selinux_ipvXNUMX_forward XNUMX keðja inet mz [nf_tables] } krókur áfram { -XNUMX selinux_ipvXNUMX_forward XNUMX chain XNUMX_output } hook postroute { +XNUMX XNUMX selinux_ipvXNUMX_postroute } }
  • Biðraðirblokkir leyfa jhash, symhash og numgen tjáningu að vera sameinuð til að dreifa pökkum í biðraðir í notendarými. … biðröð til symhash mod 65536 … biðröð fánar fara framhjá til numgen inc mod 65536 … biðröð í jhash oif . meta mark mod 32 "queue" er einnig hægt að sameina við kortalista til að velja biðröð í notendarými byggt á handahófskenndum lyklum. ... biðraðarfánar fara framhjá nafnakorti { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • Það er hægt að stækka breytur sem innihalda settalista í nokkur kort. skilgreina tengi = { eth0, eth1 } tafla ip x { keðja y { type filter hook input priority 0; stefna samþykkja; iifname vmap { lo : accept, $interfaces : drop } } } # nft -f x.nft # nft listi reglusetttafla ip x { chain y { type filter hook input priority 0; stefna samþykkja; iifname vmap { "lo": samþykkja, "eth0": falla, "eth1": falla } }
  • Það er leyfilegt að sameina vmaps (dómakort) með millibili: # nft add rule xy tcp dport . ip saddr vmap {1025-65535. 192.168.10.2 : samþykkja }
  • Einfölduð setningafræði fyrir NAT kortlagningu. Leyft að tilgreina vistfangasvið: ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } eða skýr IP vistföng og tengi: ... dnat til ip saddr map { 10.141.11.4: 192.168.2.3 . 80 } eða samsetningar af IP sviðum og höfnum: ... dnat til ip saddr . tcp dport kort {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }

Heimild: opennet.ru

Bæta við athugasemd