Nftables packet tātari tuku 1.0.3

Ko te tukunga o nga paatete packet nftables 1.0.3 kua whakaputaina, he whakakotahi i nga atanga tātari paatete 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.3 ki te mahi kei roto i te kernel Linux 5.18.

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:

  • Ka tautokohia e nga rarangi rarangi ingoa hono atanga whatunga ma te kanohi kanohi, hei tauira, kua tohua ma te whakamahi i te tohu “*”: table inet testifsets { set simple_wild { type ifname flags interval elements = { “abcdef*”, “othername”, “ppp0” } } mekameka v4icmp { momo tātari matau tāuru matua 0; whakaae kaupapa here; iifname @simple_wild mokete porotiti 0 paita 0 iifname { “abcdef*”, “eth0” } mokete porotiti 0 paita 0 } }
  • I whakatinanahia te hanumi aunoa o nga huānga rarangi-huinga i te wa e mahi ana. I mua, i te wa i whakatauhia te "hanumi-aunoa", i mahia te whakakotahitanga i te wa e whakapuakihia ana nga ture, engari inaianei ka mahi ano ka taapirihia nga waahanga hou i te wa e mahi ana. Hei tauira, i te wahanga whakapuakanga, ko te rarangi huinga y { flags interval auto-merge huānga = {1.2.3.0, 1.2.3.255, 1.2.3.0/24, 3.3.3.3, 4.4.4.4, 4.4.4.4-4.4.4.8 , 3.3.3.4 , 3.3.3.5 } } ka huri hei huānga = { 1.2.3.0/24, 3.3.3.3-3.3.3.5, 4.4.4.4-4.4.4.8 } katahi ka taapirihia e koe nga huānga hou # nft tāpiri huānga ip xy {1.2.3.0 -1.2.4.255, 3.3.3.6} ka rite ki nga huānga = {1.2.3.0-1.2.4.255, 3.3.3.3-3.3.3.6, 4.4.4.4-4.4.4.8}

    Ina tangohia e koe nga mea takitahi mai i te rarangi ka taka ki roto i nga tuemi awhe o naianei, ka whakapotohia, ka wehea ranei te awhe.

  • Ko te tautoko mo te whakakotahi i nga ture whakamaori wahitau maha (NAT) ki roto i te rarangi mapi kua taapirihia ki te kaihoroi ture, ka karangahia ina tohua te whiringa "-o/—optimize". Hei tauira, mo te huinga # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; takahanga kaupapa here; ip saddr 1.1.1.1 tcp dport 8000 snat ki 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat ki 5.5.5.5:90 }}

    Ko te mahi "nft -o -c -f ruleset.nft" ka huri i nga ture motuhake "ip saddr" ki te rarangi mahere: snat ki ip saddr . tcp dport map {1.1.1.1. 8000: 4.4.4.4. 80, 2.2.2.2. 8001: 5.5.5.5. 90}

    Waihoki, ka taea te huri i nga korero mata ki nga rarangi mahere: # cat ruleset.nft table ip x { […] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 goto @stdn_d62 78 160,128x0e0e haere ki nat_dns_this_31393032383939353831343037320 udp roa 5301-62 @th,78 160,128x0e0e goto nat_dns_saturn_31363436323733373931323934300 udp roa 5301-62 @th,78 160,128x0 0e goto nat_dns_saturn_32393535373539353636383732310 udp roa 5302-62 @th,78 160,128x0e0e goto nat_dns_saturn_38353439353637323038363633390 maturuturu } }

    i muri i te arotautanga ka whiwhi matou i te rarangi mapi: udp roa . @th,160,128 vmap { 47-63 . 0x0e373135363130333131303735353203 : goto nat_dns_dnstc, 62-78 . 0x0e31393032383939353831343037320e : goto nat_dns_this_5301, 62-78 . 0x0e31363436323733373931323934300e : goto nat_dns_saturn_5301, 62-78 . 0x0e32393535373539353636383732310e : goto nat_dns_saturn_5302, 62-78 . 0x0e38353439353637323038363633390e : goto nat_dns_saturn_5303 }

  • Ka whakaaetia te whakamahi i nga korero mata i roto i nga mahi whakakotahi. Hei tauira: #nft tāpiri ture xy ip saddr. @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2 . 0x1e } ranei tepu x {set y {typeof ip saddr. @ih,32,32 huānga = { 1.1.1.1 . 0x14 } } }
  • He tautoko taapiri mo te tautuhi i nga apure pane integer i roto i nga mahi honohono: ripanga inet t {mapi m1 {typeof udp length . @ih,32,32 : haki whakatau huānga wā = {20-80. 0x14 : whakaae, 1-10 . 0xa : maturuturu } } mekameka c { momo tātari matau urunga matua 0; takahanga kaupapa here; roa udp. @ih,32,32 vmap @m1 } }
  • He tautoko taapiri mo te tautuhi i nga whiringa TCP (ka mahi anake me te kernel Linux 5.18+): nga haki tcp syn reset tcp option sack-perm
  • Kua whakaterehia te mahinga o nga whakahau whakaputa mekameka (“nft list chain xy”).

Source: opennet.ru

Tāpiri i te kōrero