Ar ôl blwyddyn o ddatblygiad
Mae lefel y 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 rhesymeg hidlo ei hun a thrinwyr protocol-benodol yn cael eu crynhoi i beitcode yn y gofod defnyddiwr, ac ar ôl hynny mae'r beitcode hwn yn cael ei lwytho i'r cnewyllyn gan ddefnyddio'r rhyngwyneb Netlink a'i weithredu mewn peiriant rhithwir arbennig sy'n atgoffa rhywun o BPF (Berkeley Packet Filters). Mae'r dull hwn yn caniatáu ichi leihau'n sylweddol faint y cod hidlo sy'n rhedeg ar lefel y cnewyllyn a symud holl swyddogaethau rheolau dosrannu a rhesymeg ar gyfer gweithio gyda phrotocolau i ofod defnyddwyr.
Prif arloesiadau:
- Cefnogaeth IPsec, gan ganiatáu paru cyfeiriadau twnnel yn seiliedig ar becyn, ID cais IPsec, a thag SPI (Mynegai Paramedr Diogelwch). Er enghraifft,
... ipsec yn ip saddr 192.168.1.0/24
... ipsec yn spi 1-65536Mae hefyd yn bosibl gwirio a yw llwybr yn mynd trwy dwnnel IPsec. Er enghraifft, i rwystro traffig nad yw trwy IPSec:
… hidlydd allbwn rt ipsec gollyngiad ar goll
- Cefnogaeth i IGMP (Protocol Rheoli Grŵp Rhyngrwyd). Er enghraifft, gallwch ddefnyddio rheol i ddileu ceisiadau aelodaeth grŵp IGMP sy'n dod i mewn
nft ychwanegu rheol netdev foo bar math igmp aelodaeth-ymholiad cownter galw heibio
- Posibilrwydd defnyddio newidynnau i ddiffinio cadwyni trosiannol (neidio / goto). Er enghraifft:
diffinio dest = ber
ychwanegu rheol ip foo bar jump $dest - Cefnogaeth i fasgiau i adnabod systemau gweithredu (Olion Bysedd OS) yn seiliedig ar werthoedd TTL yn y pennawd. Er enghraifft, i farcio pecynnau yn seiliedig ar yr anfonwr OS, gallwch ddefnyddio'r gorchymyn:
... meta marc set osf ttl skip enw map { "Linux" : 0x1,
"Windows": 0x2,
"MacOS": 0x3,
"anhysbys" : 0x0 }
... osf ttl skip version "Linux: 4.20" - Y gallu i gyd-fynd â chyfeiriad ARP yr anfonwr a chyfeiriad IPv4 y system darged. Er enghraifft, i gynyddu rhifydd y pecynnau ARP a anfonwyd o'r cyfeiriad 192.168.2.1, gallwch ddefnyddio'r rheol ganlynol:
bwrdd arp x {
cadwyn y {
math bachyn hidlydd mewnbwn hidlydd blaenoriaeth; derbyn polisi;
arp saddr ip 192.168.2.1 pecynnau cownter 1 beit 46
}
} - Cefnogaeth i anfon ceisiadau ymlaen yn dryloyw trwy ddirprwy (tproxy). Er enghraifft, i ailgyfeirio galwadau i borth 80 i borthladd dirprwy 8080:
tabl ip x {
cadwyn y {
bachyn hidlydd math prerouting blaenoriaeth -150; derbyn polisi;
tcp dport 80 tproxy i:8080
}
} - Cefnogaeth ar gyfer marcio socedi gyda'r gallu i gael y marc gosod ymhellach trwy setsockopt () yn y modd SO_MARK. Er enghraifft:
tabl inet x {
cadwyn y {
bachyn hidlydd math prerouting blaenoriaeth -150; derbyn polisi;
tcp dport 8080 marc gosod marc soced
}
} - Cefnogaeth ar gyfer pennu enwau testun â blaenoriaeth ar gyfer cadwyni. Er enghraifft:
nft ychwanegu cadwyn ip x amrwd { bachyn hidlydd math rhag-lwybro blaenoriaeth amrwd; }
nft ychwanegu cadwyn ip x hidlydd { bachyn hidlydd yn rhag-gyfeirio'r hidlydd blaenoriaeth; }
nft ychwanegu cadwyn ip x filter_later { math bachyn hidlydd rhag-gyfeirio'r hidlydd blaenoriaeth + 10; } - Cefnogaeth i dagiau SELinux (Secmark). Er enghraifft, i ddiffinio'r tag "sshtag" mewn cyd-destun SELinux, gallwch redeg:
nft ychwanegu hidlydd inet secmark sshtag "system_u:object_r: ssh_server_packet_t:s0"
Ac yna defnyddiwch y label hwn yn y rheolau:
nft ychwanegu rheol mewnbwn hidlydd inet tcp dport 22 meta secmark set “sshtag”
nft ychwanegu secmapping hidlydd inet map { type inet_service : secmark; }
nft ychwanegu elfen hidlo inet secmapping { 22 : "sshtag" }
nft ychwanegu rheol inet hidlydd mewnbwn meta secmark set tcp dport map @secmapping - Y gallu i nodi porthladdoedd sydd wedi'u neilltuo i brotocolau ar ffurf testun, fel y'u diffinnir yn y ffeil /etc/services. Er enghraifft:
nft ychwanegu rheol xy tcp dport "ssh"
nft list ruleset -l
bwrdd x {
cadwyn y {
...
tcp dport "ssh"
}
} - Y gallu i wirio'r math o ryngwyneb rhwydwaith. Er enghraifft:
ychwanegu rheol inet raw prerouting meta iifkind "vrf" derbyn
- Gwell cefnogaeth ar gyfer diweddaru cynnwys setiau yn ddeinamig trwy nodi'n benodol y faner “ddeinamig”. Er enghraifft, i ddiweddaru set "s" i ychwanegu'r cyfeiriad ffynhonnell ac ailosod y cofnod os nad oes pecynnau am 30 eiliad:
ychwanegu tabl x
ychwanegu set xs { math ipv4_addr; maint 128; terfyn amser 30s; baneri deinamig; }
ychwanegu cadwyn xy { blaenoriaeth mewnbwn bachyn hidlydd math 0; }
ychwanegu rheol xy update @s { ip saddr } - Posibilrwydd gosod amod terfyn amser ar wahân. Er enghraifft, i ddiystyru'r terfyn amser rhagosodedig ar gyfer pecynnau sy'n cyrraedd porthladd 8888, gallwch nodi:
hidlydd ip bwrdd {
goramser ct ymosodol-tcp {
protocol tcp;
l3proto ip;
polisi = {sefydlwyd: 100, close_wait: 4, cau: 4}
}
allbwn cadwyn {
...
terfyn amser tcp dport 8888 ct gosod "ymosodol-tcp"
}
} - Cefnogaeth NAT i deulu anadweithiol:
tabl inet nat {
...
ip6 daddr marw::2::1 dnat i farw:2::99
} - Gwell adroddiadau gwallau teipio:
nft ychwanegu prawf hidlo cadwyn
Gwall: Dim ffeil neu gyfeiriadur o'r fath; oeddech chi'n ei olygu tabl “hidlo” yn ip teulu?
ychwanegu prawf hidlo cadwyn
^^^^^^ - Y gallu i nodi enwau rhyngwyneb mewn setiau:
gosod sc {
teipiwch inet_service . ifenw
elfennau = { "ssh". "eth0" }
} - Cystrawen rheolau lliffwrdd wedi'i diweddaru:
nft ychwanegu tabl x
nft ychwanegu flowtable x ft { bachyn mynediad blaenoriaeth 0; dyfeisiau = { eth0, wlan0 }; }
...
nft ychwanegu rheol x protocol ip ymlaen { tcp, udp } llif ychwanegu @ft - Gwell cefnogaeth JSON.
Ffynhonnell: opennet.ru