utgivning av paketfilter , som utvecklas som en ersÀttning för iptables, ip6tables, arptables och ebtables genom att förena grÀnssnitten för paketfiltrering för IPv4, IPv6, ARP och nÀtverksbroar. Paketet nftables innehÄller komponenter för paketfiltrering som arbetar i anvÀndarrummet, medan subsystemet nf_tables i kÀrnan, som ingÄr i Linux-kÀrnan frÄn version 3.13, ansvarar för arbetet. NödvÀndiga Àndringar för att fÄ nftables 0.9.5 att fungera ingÄr i kÀrnan. .
PÄ kÀrnnivÄ tillhandahÄlls endast ett gemensamt grÀnssnitt, oberoende av specifik protokoll och ger grundlÀggande funktioner för att extrahera data frÄn paket, utföra operationer med data och kontrollera flödet. Regler för filtrering och protokollspecifika behandlare kompileras direkt till bytekod i anvÀndarrummet, varefter denna bytekod laddas in i kÀrnan via Netlink-grÀnssnittet och utförs i kÀrnan i en speciell virtuell maskin som liknar BPF (Berkeley Packet Filters). Detta tillvÀgagÄngssÀtt möjliggör en betydande minskning av storleken pÄ filtreringskoden som körs pÄ kÀrnnivÄ och flyttar alla funktioner för reglerdjup och logik av protokoll till anvÀndarrummet.
Huvudsakliga nyheter:
- I seten har stöd för paket- och trafikrÀknare lagts till, kopplade till setens element. RÀknare aktiveras med nyckelordet "counter":
table ip x {
set y {
typeof ip saddr
counter
elements = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
}chain z {
type filter hook output priority filter; policy accept;
ip daddr @y
}
} - För att stÀlla in initialvÀrden för rÀknarna, till exempel för att ÄterstÀlla tidigare rÀknare efter en omstart, kan kommandot "nft -f" anvÀndas:
# cat ruleset.nft
table ip x {
set y {
typeof ip saddr
counter
elements = { 192.168.10.35 counter packets 1 bytes 84, 192.168.10.101 \
counter p 192.168.10.135 counter packets 0 bytes 0 }
}chain z {
type filter hook output priority filter; policy accept;
ip daddr @y
}
}
# nft -f ruleset.nft
# nft list ruleset
table ip x {
set y {
typeof ip saddr
counter
elements = { 192.168.10.35 counter packets 1 bytes 84, 192.168.10.101 \
counter p 192.168.10.135 counter packets 0 bytes 0 }
}chain z {
type filter hook output priority filter; policy accept;
ip daddr @y
}
} - Stöd för rÀknare har ocksÄ lagts till i flowtable:
table ip foo {
flowtable bar {
hook ingress priority -100
devices = { eth0, eth1 }
counter
}chain forward {
type filter hook forward priority filter;
flow add @bar counter
}
}För att se listan över rÀknare kan kommandot "conntrack -L" anvÀndas:
tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 packets=9 bytes=608 \
src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 packets=8 bytes=428 [OFFLOAD] mark=0 \
secctx=null use=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
packets=1005763 bytes=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
packets=967505 bytes=50310268 [OFFLOAD] mark=0 secctx=null use=2 - I anslutningssatser (concatenation, specifika kopplingar av adresser och portar som förenklar mappning) har möjligheten att anvÀnda direktivet "typeof" införts, vilket definierar datatyperna för element i komponenterna av satsen:
table ip foo {
set whitelist {
typeof ip saddr . tcp dport
elements = { 192.168.10.35 . 80, 192.168.10.101 . 80 }
}chain bar {
type filter hook prerouting priority filter; policy drop;
ip daddr . tcp dport @whitelist accept
}
} - Direktivet typeof Àr nu ocksÄ tillÀmpligt för anslutningar i map-listor:
table ip foo {
map addr2mark {
typeof ip saddr . tcp dport : meta mark
elements = { 192.168.10.35 . 80 : 0x00000001,
192.168.10.135 . 80 : 0x00000002 }
}chain bar {
type filter hook prerouting priority filter; policy drop;
meta mark set ip daddr . tcp dport map @addr2mark accept
}
} - Stöd för anslutningar med intervaller har lagts till i anonyma (namnlösa) satsar:
# nft add rule inet filter input ip daddr . tcp dport \
{ 10.0.0.0/8 . 10-23, 192.168.1.1-192.168.3.8 . 80-443 } accept - Möjlighet att förkasta paket med 802.1q (VLAN) -flaggor har erbjudits vid behandling av nÀtverksbryggor:
# nft add rule bridge foo bar ether type vlan reject with tcp reset
- Stöd för mappning efter TCP-sessionens identifierare (conntrack ID) har lagts till. För att bestÀmma conntrack ID kan alternativet "--output id" anvÀndas:
# conntrack -L âoutput id
udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 packets=2 \
bytes=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 packets=2 bytes=320 \
[ASSURED] mark=0 use=1 id=2779986232# nft add rule foo bar ct id 2779986232 counter
KĂ€lla: opennet.ru
