Nftables packet tātari tuku 1.0.0

Kua whakaputahia te tukunga o nga packet filter nftables 1.0.0, me te whakakotahi i nga hononga tātari packet mo IPv4, IPv6, ARP me nga piriti whatunga (e whai ana ki te whakakapi i nga iptables, ip6table, arptables me nga ebtables). Ko nga huringa e hiahiatia ana mo te tukunga nftables 1.0.0 ki te mahi kei roto i te kernel Linux 5.13. Ko te huringa nui i roto i te tau putanga karekau e hono ki nga huringa taketake, engari he hua noa na te haere tonutanga o te tatau i roto i te tohu ira (ko te tukunga o mua ko 0.9.9).

Kei roto i te kete nftables nga waahanga tātari packet e rere ana i te waahi kaiwhakamahi, i te wa e whakaratohia ana te mahi taumata-kero e te nf_tables subsystem, he waahanga o te kernel Linux mai i te tukunga 3.13. Ko te taumata kernel e whakarato ana i te atanga kawa-motuhake noa e whakarato ana i nga mahi taketake mo te tango raraunga mai i nga paatete, te mahi raraunga, me te whakahaere rere.

Ko nga ture tātari ma ratou ano me nga kaikawe kawa motuhake ka whakahiatohia ki te bytecode mokowā-kaiwhakamahi, muri iho ka utaina tenei bytecode ki roto i te kernel ma te whakamahi i te atanga Netlink ka mahia i roto i te kernel i roto i te miihini mariko motuhake e rite ana ki te BPF (Berkeley Packet Filters). Ko tenei huarahi ka taea te whakaiti i te rahi o te waehere tātari e rere ana i te taumata kernel me te neke i nga mahi katoa o nga ture parsing me te arorau o te mahi me nga kawa ki te waahi kaiwhakamahi.

Nga mahi hou:

  • Ko te tautoko mo te huānga kanohi kanohi "*" kua taapirihia ki te tautuhi i nga rarangi, ka whakaohohia mo nga kohinga kaore e taka ki raro i etahi atu huānga kua tautuhia ki te huinga. ripanga x { mapi paraka { momo ipv4_addr : haki whakatau huānga wā = { 192.168.0.0/16 : whakaae, 10.0.0.0/8 : whakaae, * : maturuturu } } mekameka y { momo tātari matau prerouting matua 0; whakaae kaupapa here; ip saddr vmap @blocklist } }
  • Ka taea te tautuhi i nga taurangi mai i te raina whakahau ma te whakamahi i te waahanga "--define". # cat test.nft table netdev x { chain y { type filter hook ingress devices = $dev priority 0; takahanga kaupapa here; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • I roto i nga rarangi mapi, ka whakaaetia te whakamahi i nga korero tuturu: te tātari inet ripanga {map portmap { momo inet_service : huānga counter verdict = {22 paita porotiti 0 paita 0: peke ssh_input, * paita porotiti 0 paita 0: maturuturu } } chain ssh_input { } chain wan_input { tcp dport vmap @portmap } chain prerouting { type filter hook prerouting priority raw; whakaae kaupapa here; iif vmap {"lo": peke wan_input }} }
  • Kua taapirihia te whakahau "matau rarangi" hei whakaatu i te rarangi o nga kaikawe mo tetahi whanau paatete: # nft rarangi matau ip taputapu eth0 whanau ip { te whakauru matau { +0000000010 mekameka netdev xy [nf_tables] +0000000300 mekameka inet mw [nf_tables] } urunga matau { -0000000100 mekameka ip ab [nf_tables] +0000000300 mekameka inet mz [nf_tables] } matau whakamua { -0000000225 selinux_ipv4_forward 0000000000 mekameka ip ac [nf_tables] 0000000225 4 riipene ip ac [nf0000000225_] poupou matau { +4 XNUMX selinux_ipvXNUMX_postroute } }
  • Ka taea e nga poraka rarangi te whakakotahi i nga korero jhash, symhash, me te numgen ki te tohatoha i nga paatete ki nga rarangi i te waahi kaiwhakamahi. … tūtira ki te symhash mod 65536 … tūtira haki hipa ki numgen inc mod 65536 … tūtira ki jhash oif . Ka taea hoki te whakakotahi i te tohu meta mod 32 "tutira" ki nga rarangi mahere hei kowhiri i tetahi rarangi i roto i nga waahi kaiwhakamahi i runga i nga taviri koretake. ... ka hipa nga haki tūtira ki te mapi oifname { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • Ka taea te whakawhänui i nga taurangi kei roto he rarangi huinga ki roto i nga mapi maha. tautuhia nga atanga = { eth0, eth1 } ripanga ip x { mekameka y { momo tātari matau whakauru matua 0; whakaae kaupapa here; iifname vmap {lo: whakaae, $atanga: maturuturu } } } # nft -f x.nft # nft rarangi rarangi ture tepu ip x { mekameka y { momo tātari matau whakauru matua 0; whakaae kaupapa here; iifname vmap {"lo": whakaae, "eth0": maturuturu, "eth1": maturuturu } } }
  • Ko te whakakotahi i nga vmaps (mapi whakatau) i nga waahi ka whakaaetia: # nft taapiri ture xy tcp dport . ip saddr vmap {1025-65535. 192.168.10.2 : whakaae }
  • He wetereo ngawari mo nga mahere NAT. Ka whakaaetia ki te tautuhi i nga awhe wahitau: ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } ranei nga wahitau IP marama me nga tauranga: ... dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 : . 80 } he huinga ranei o nga awhe IP me nga tauranga: ... dnat to ip saddr . tcp dport mapi {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }

Source: opennet.ru

Tāpiri i te kōrero