[LINUX] man nftables Japanische Übersetzung

Japanische Übersetzung des von man nftables angezeigten Handbuchs.

Name

nft-Nftables Framework Management Tool zur Paketfilterung und -klassifizierung

Überblick

nft [ -nNscae ] [ -I directory ] [ -f filename | -i | cmd ...]
nft -h
nft -v

Erläuterung

nft ist ein Befehlszeilenprogramm, das vom Linux-Kernel des nftables-Frameworks zum Festlegen, Verwalten und Überprüfen von Regeln für die Paketfilterung und -klassifizierung verwendet wird. Das Linux-Kernel-Subsystem ist als nf_tables bekannt, wobei nf für Netfilter steht.

Möglichkeit

Führen Sie nft --help aus, um eine vollständige Zusammenfassung der Optionen anzuzeigen.

Eingabedateiformat

Sprachkonvention

Die Eingabe wird zeilenweise analysiert. Wenn das letzte Zeichen in einer Zeile (unmittelbar vor dem Zeilenvorschubzeichen) ein nicht zitierter Backslash (\) ist, wird die nächste Zeile als Fortsetzung behandelt. Mehrere Befehle in derselben Zeile können mit einem Semikolon (; ) getrennt werden.

Das Hash-Symbol (#) startet den Kommentar. Alle nachfolgenden Zeichen in derselben Zeile werden ignoriert.

Bezeichner beginnen mit einem alphabetischen Zeichen (az, AZ), mit null oder mehr alphanumerischen Zeichen (az, AZ, 0-9), einem Schrägstrich (/), einem Backslash (\) und einem Unterstrich () Es folgen die Zeichen `` _``) und Punkte (`` .``). Bezeichner, die unterschiedliche Zeichen verwenden oder mit Schlüsselwörtern in Konflikt stehen, müssen in doppelte Anführungszeichen gesetzt werden (`` " `).

Datei lesen

Mit der include-Anweisung können Sie andere Dateien lesen. Das Verzeichnis, in dem nach Include-Dateien gesucht werden soll, kann mit der Option -I / --includepath angegeben werden. Um dieses Verhalten zu überschreiben, stellen Sie dem Pfad entweder ". /" Vor, um die Aufnahme der Dateien im aktuellen Arbeitsverzeichnis (dh der relativen Pfade) zu erzwingen, oder verwenden Sie den absoluten Pfad "/". Gibt den Speicherort der dargestellten Datei an.

Wenn -I / --includepath nicht angegeben ist, verwendet nft das zur Kompilierungszeit angegebene Standardverzeichnis. Dieses Standardverzeichnis kann mit der Option -h / --help abgerufen werden.

Die include-Anweisung unterstützt die üblichen Shell-Platzhaltersymbole (*, ? , []). Wenn in der include-Anweisung ein Platzhaltersymbol verwendet wird, tritt kein Fehler auf, auch wenn die include-Anweisung nicht übereinstimmt. Auf diese Weise können Sie ein möglicherweise leeres Include-Verzeichnis angeben, z. B. "include / etc / firewall / rules / *". Platzhalterübereinstimmungen werden alphabetisch gelesen. Dateien, die mit einem Punkt ( .) beginnen, stimmen in der include-Anweisung nicht überein.

Variables Symbol

Definition des variablen Ausdrucks

$variable

Variablensymbole können mit der Anweisung define definiert werden. Variablenreferenzen sind Ausdrücke, mit denen andere Variablen initialisiert werden können. Der Umfang der Definition ist der aktuelle Block und alle darin enthaltenen Blöcke.

Beispiel für die Verwendung von Variablen


define int_if1 = eth0
define int_if2 = eth1
define int_ifs = { $int_if1, $int_if2 }

filter input iif $int_ifs accept

Adresse Familie

Die Adressfamilie bestimmt den Typ des verarbeiteten Pakets. Für jede Adressfamilie enthält der Kernel Hooks, die bestimmte Phasen des Paketverarbeitungsprozesses darstellen. Diese Hooks rufen nftables auf, wenn die Regeln des Hooks existieren.

Alle Bezeichner enthalten eine Adressfamilie, da sich alle nftables-Objekte in einem adressfamilienspezifischen Namespace befinden. Wenn Sie einen Bezeichner ohne Adressfamilie angeben, wird standardmäßig die IP-Familie verwendet.

IPV4 / IPV6 / INET-Adressfamilie

Die IPv4 / IPv6 / Inet-Adressfamilie verarbeitet IPv4, IPv6 oder beide Pakettypen. Sie enthalten fünf Hooks in verschiedenen Paketverarbeitungsstufen des Netzwerkstapels.

Hook der IPv4 / IPv6 / Inet-Adressfamilie

Haken Erläuterung
prerouting Alle in das System eintretenden Pakete werden vom Prerouting-Hook verarbeitet. Es wird vor dem Routing-Prozess aufgerufen und zum frühen Filtern oder Ändern von Paketattributen verwendet, die sich auf das Routing auswirken.
input An das lokale System gelieferte Pakete werden vom Eingabehaken verarbeitet.
forward An einen anderen Host weitergeleitete Pakete werden vom Forward-Hook verarbeitet.
output Von lokalen Prozessen gesendete Pakete werden vom Ausgabehaken verarbeitet.
postrouting Alle Pakete, die das System verlassen, werden vom Postrouting-Hook verarbeitet.

ARP-Adressfamilie

Die ARP-Adressfamilie verarbeitet vom System gesendete und empfangene ARP-Pakete. Dies wird normalerweise verwendet, um ARP-Pakete für das Clustering zu entstellen.

ARP-Adressfamilien-Hook

Haken Erläuterung
input An das lokale System gelieferte Pakete werden vom Eingabehaken verarbeitet.
output Vom lokalen System gesendete Pakete werden vom Ausgabehaken verarbeitet.

Brückenadressfamilie

Die Bridge-Adressfamilie verarbeitet Ethernet-Pakete, die das Bridge-Gerät passieren.

Die Liste der unterstützten Hooks entspricht der obigen IPv4 / IPv6 / Inet-Adressfamilie.

NETDEV-Adressfamilie

Die Netdev-Adressfamilie verarbeitet Pakete vom Eingang.

Hook der Netdev-Adressfamilie

Haken Erläuterung
ingress Alle in das System eintretenden Pakete werden von diesem Hook verarbeitet. Wird vor dem Layer 3-Protokollhandler aufgerufen und kann zum frühen Filtern und Überwachen verwendet werden.

Regelsatz

{list | flush} ruleset [family]
export [ruleset] format

Das Schlüsselwort ruleset wird verwendet, um den gesamten Satz von Tabellen, Ketten usw. zu identifizieren, die sich derzeit im Kernel befinden. Die folgenden Regelsatzbefehle sind vorhanden.

Es ist möglich, die Liste einzuschränken und nur bestimmte Adressfamilien zu löschen. Eine Liste der gültigen Familiennamen finden Sie oben unter Adressfamilie (#Adressfamilie).

Beachten Sie, dass die durch den Export erzeugte Ausgabe entgegen den Erwartungen nicht mit "nft -f" analysiert werden kann. Stattdessen dient die Ausgabe des Befehls list diesem Zweck.

Tabelle

{add | create} table [family] table [ { flags flags } ]
{delete | list | flush} table [family] table
delete table [family] handle handle

Tabellen sind Container für Ketten, Mengen und zustandsbehaftete Objekte. Sie werden durch Adressfamilie und Namen identifiziert. Die Adressfamilie muss IP, IP6, Inet, Arp, Bridge, Netdev sein. Die Inet-Adressfamilie ist eine Dummy-Familie, mit der hybride IPv4 / IPv6-Tabellen erstellt werden. Sie können das Schlüsselwort meta expression `nfproto`` verwenden, um den Familienkontext (IPv4 oder IPv6) zu testen, in dem das Paket verarbeitet wird. Wenn keine Adressfamilie angegeben ist, wird standardmäßig IP verwendet. Der einzige Unterschied zwischen add und create besteht darin, dass create einen Fehler zurückgibt, während add keinen Fehler zurückgibt, wenn die angegebene Tabelle bereits vorhanden ist.

Tabellenflag

Flagge Erläuterung
dormant Tabelle wird nicht ausgewertet(Basiskette ist nicht registriert)

Beispiel für das Hinzufügen, Ändern oder Löschen einer Tabelle


#Starten Sie nft im interaktiven Modus
nft --interactive

#Erstellen Sie eine neue Tabelle.
create table inet mytable

#Neue Basiskette hinzufügen:Holen Sie sich das Eingabepaket
add chain inet mytable myin { type filter hook input priority 0; }

#Fügen Sie der Kette einen einzelnen Zähler hinzu
add rule inet mytable myin counter

#Deaktivieren Sie die Tabelle vorübergehend(Regeln werden nicht ausgewertet)
add table inet mytable { flags dormant; }

#Reaktivieren Sie den Tisch:
add table inet mytable

Kette

{add | create} chain [family] table chain [ { type type hook hook [device device] priority priority ; [policy policy ;] } ]
{delete | list | flush} chain [family] table chain
delete chain [family] table handle handle
rename chain [family] table chain newname

Eine Kette ist ein Container mit Regeln. Es gibt zwei Arten von Ketten, Basisketten und reguläre Ketten. Die Basiskette ist der Einstiegspunkt für Pakete aus dem Netzwerkstapel. Regelmäßige Ketten können als Sprungziele verwendet werden und dienen zur besseren Regelbildung.

Für die Basiskette sind Parameter für Typ, Hook und Priorität erforderlich.

Unterstützte Kettentypen

Art Familie Haken Erläuterung
filter all all Standardkettentyp, der ohne zu zögern verwendet werden kann.
nat ip, ip6 prerouting, input, output, postrouting Diese Art von Kette führt eine Netzwerkadressübersetzung basierend auf dem Conntrack-Eintrag durch. Nur das erste Paket der Verbindung durchläuft tatsächlich diese Kette. Die Regel ist normalerweise ein Conntrack-Eintrag, der erstellt wird(Zum Beispiel NAT-Anweisung)Definieren Sie die Details von.
route ip, ip6 output Wenn ein Paket diese Art von Kette durchläuft und akzeptiert werden soll, wird eine neue Routensuche durchgeführt, wenn sich der relevante Teil des IP-Headers geändert hat. Dies implementiert einen Richtlinienrouting-Selektor, beispielsweise in nftables.

Abgesehen von den oben genannten Sonderfällen (z. B. unterstützt der Nat-Typ keine Forward-Hooks oder der Route-Typ unterstützt nur Output-Hooks) gibt es zwei weitere bemerkenswerte Macken.

Der Parameter priority akzeptiert einen vorzeichenbehafteten ganzzahligen Wert, der die Reihenfolge angibt, in der Ketten mit demselben Hook-Wert durchlaufen werden. Die Reihenfolge ist aufsteigend. Das heißt, Werte mit niedriger Priorität haben Vorrang vor Werten mit hoher Priorität.

In der Basiskette können Sie auch Kettenrichtlinien festlegen. Die Richtlinie legt fest, was mit Paketen geschieht, die von den vordefinierten Regeln nicht explizit akzeptiert oder abgelehnt werden. Die unterstützten Richtlinienwerte sind "Akzeptieren" (Standard) oder "Löschen".

Regel

[add | insert] rule [family] table chain [ {handle | position} handle | index index] statement...
replace rule [family] table chain handle handle statement...
delete rule [family] table chain handle handle

Die Regel wird der Kette der angegebenen Tabelle hinzugefügt. Wenn keine Familie angegeben ist, wird die IP-Familie verwendet. Eine Regel besteht aus zwei Arten von Komponenten gemäß einer Reihe von grammatikalischen Regeln. Ausdrücke und Aussagen.

Die Befehle zum Hinzufügen und Einfügen unterstützen beliebige Positionsbezeichner. Dies ist entweder ein Handle oder ein Index (beginnend mit Null) einer vorhandenen Regel. Intern wird der Speicherort der Regel immer durch das Handle identifiziert, und die Konvertierung aus dem Index erfolgt im Benutzerbereich. Wenn nach der Konvertierung gleichzeitig Regelsatzänderungen auftreten, hat dies zwei mögliche Auswirkungen. Wenn eine Regel vor der referenzierten Regel eingefügt oder gelöscht wird, kann sich der gültige Regelindex ändern. Wenn die referenzierte Regel gelöscht wird, wird der Befehl vom Kernel zurückgewiesen, als ob ein ungültiges Handle angegeben worden wäre.

Beispiel für das Hinzufügen einer Regel zur Eingabekette der IP-Tabelle


# 'ip filter'Es wird erwartet
nft add rule filter output ip daddr 192.168.0.0/24 accept
#Gleicher Befehl, etwas detaillierter
nft add rule ip filter output ip daddr 192.168.0.0/24 accept

Beispiel für das Löschen einer Regel aus der Inet-Tabelle


nft -a list ruleset

table inet filter {
  chain input {
    type filter hook input priority 0; policy accept;
    ct state established,related accept # handle 4
    ip saddr 10.1.1.1 tcp dport ssh accept # handle 5
    ...

#Löschen Sie die Regel von Handle 5.
nft delete rule inet filter input handle 5

einstellen

nftables bietet zwei Arten von Mengenkonzepten. Anonyme Mengen sind Mengen, die keinen bestimmten Namen haben. Die Elemente der Gruppe sind in geschweiften Klammern eingeschlossen, und die Elemente werden beim Erstellen von Regeln, die die Gruppe verwenden, durch Kommas getrennt. Wenn die Regel gelöscht wird, wird auch die Menge gelöscht. Sie können sie nicht aktualisieren. Das heißt, sobald ein anonymer Satz deklariert ist, kann er nur aktualisiert werden, wenn die Regeln, die den anonymen Satz verwenden, gelöscht oder geändert wurden.

Ein Beispiel für das Akzeptieren eines bestimmten Subnetzes und Ports mithilfe eines anonymen Satzes


nft add rule filter input ip saddr { 10.0.0.0/8, 192.168.0.0/16 } tcp dport { 22, 443 } accept

Benannte Mengen sind die ersten Mengen, die definiert werden müssen, bevor sie in einer Regel referenziert werden können. Im Gegensatz zu anonymen Sets können Elemente jederzeit zu benannten Sets hinzugefügt oder daraus entfernt werden. Auf die Menge wird durch die Regel verwiesen, wobei der Satzname vor @ steht.

Ein Beispiel für das Akzeptieren einer Adresse und eines Ports mithilfe eines benannten Satzes


nft add rule filter input ip saddr @allowed_hosts tcp dport @allowed_ports accept

Sie müssen zuerst die Sets allow_hosts und allow_ports erstellen.

Im nächsten Abschnitt wird die Syntax von nft set beschrieben.

add set [family] table set { type type ; [flags flags ;] [timeout timeout ;] [gc-interval gc-interval ;] [elements = { element[,...] } ;] [size size ;] [policy policy ;] [auto-merge auto-merge ;] }
{delete | list | flush} set [family] table set
delete set [family] table handle handle
{add | delete} element [family] table set { element[,...] }

Ein Satz ist ein Elementcontainer eines benutzerdefinierten Datentyps, der durch einen benutzerdefinierten Namen eindeutig identifiziert und an eine Tabelle angehängt wird.

Spezifikationen festlegen

Stichwort Erläuterung Art
type Elementdatentyp festlegen String: ipv4_addr, ipv6_addr, ether_addr, inet_proto, inet_service, mark
flags Setzen Sie die Flagge String: constant, interval, timeout
timeout Die Zeit, die ein Element in der Menge verbleibt. Set ist der Paketpfad(Regelsatz)Erforderlich, wenn hinzugefügt von. String:Einheit nach Dezimalzahl(d, h, m, s)Hinzugefügt.
gc-interval Speicherbereinigungsintervall. Nur verfügbar, wenn Timeout oder Flag Timeout aktiv ist String:Einheit nach Dezimalzahl(d, h, m, s)Hinzugefügt.
elements Elemente im Set enthalten Stellen Sie den Datentyp ein.
size Maximale Anzahl von Elementen im Satz. Set ist der Paketpfad(Regelsatz)Erforderlich, wenn hinzugefügt von. Ganzzahl ohne Vorzeichen(64-Bit)
policy Legen Sie die Richtlinie fest. String: performance [default], memory
auto-merge benachbart/Automatisches Zusammenführen doppelter Set-Elemente(Nur Intervall eingestellt)

Karte

add map [family] table map { type type [flags flags ;] [elements = { element[,...] };] [size size ;] [policy policy ;] }
{delete | list | flush} map [family] table map
{add | delete} element [family] table map { elements = { element[,...] } ; }

Karten speichern Daten basierend auf einem bestimmten Schlüssel, der als Eingabe verwendet wird, werden durch einen benutzerdefinierten Namen eindeutig identifiziert und an eine Tabelle angehängt.

Kartenspezifikationen

Stichwort Erläuterung Art
type Datentyp des Kartenelements key_name:valueGeben Sie das Format an. Typen, die als Werte verwendet werden können: ipv4_addr, ipv6_addr, ether_addr, inet_proto, inet_service, mark, counter, quota。 couterWannquotaKann nicht als Schlüsselname verwendet werden.
flags Kartenflagge String: constant, interval
elements In der Karte enthaltene Elemente Kartendatentyp
size Maximale Anzahl von Elementen in der Karte Ganzzahl ohne Vorzeichen(64-Bit)
policy Kartenrichtlinie String: performance [default], memory

Flusstabelle

{add | create} flowtable [family] table flowtable { hook hook priority priority ; devices = { device[,...] } ; }
{delete | list} flowtable [family] table flowtable

Flusstabellen können verwendet werden, um die Paketweiterleitung in der Software zu beschleunigen. Flow-Tabelleneinträge werden durch ein Tupel dargestellt, das aus einer Eingangsschnittstelle, Quell- und Zieladressen, Quell- und Zielports sowie dem Layer 3/4-Protokoll besteht. Jeder Eintrag speichert die Zielschnittstelle und die Gateway-Adresse zwischen, aktualisiert die Adresse der Zielverbindungsschicht und leitet das Paket weiter. Die ttl- und hoplimit-Felder werden ebenfalls reduziert. Die Flusstabelle bietet daher einen alternativen Pfad, mit dem das Paket den herkömmlichen Weiterleitungspfad umgehen kann. Der Flusstisch befindet sich am Eingangshaken vor dem Vorhaken. Flows aus der Forward-Kette Mit dem Offload-Ausdruck können Sie den zu entladenden Flow auswählen. Flusstabellen werden durch Adressfamilie und Namen identifiziert. Die Adressfamilie muss ip, ip6 oder inet sein. Die Inet-Adressfamilie ist eine Dummy-Familie, mit der hybride IPv4 / IPv6-Tabellen erstellt werden. Wenn keine Adressfamilie angegeben ist, wird standardmäßig IP verwendet.

Stateful Objekt

{add | delete | list | reset} type [family] table object
delete type [family] table handle handle

Stateful-Objekte werden an die Tabelle angehängt und durch einen eindeutigen Namen gekennzeichnet. Sie gruppieren statusbehaftete Informationen aus der Regel, und das Schlüsselwort "Typname" wird verwendet, um in der Regel auf sie zu verweisen. Beispiel: Zählername.

CT

ct helper helper { type type protocol protocol ; [l3proto family ;] }

Mit ct helper wird ein Verbindungsverfolgungshelfer definiert, der in Kombination mit der Anweisung ct helper set verwendet werden kann. Typ und Protokoll sind erforderlich. l3proto wird standardmäßig aus der Tabellenfamilie abgeleitet. Das heißt, wenn der Kernel dies unterstützt, versucht der Kernel, sowohl IPv4- als auch IPv6-Helfer-Backends in die Inet-Tabelle zu laden.

Conntrack-Helfer-Spezifikationen

Stichwort Erläuterung Art
type Name des Hilfstyps Zitierte Zeichenfolge(Beispiel: "ftp")
protocol Helper Layer 4-Protokoll String(Beispiel: tcp)
l3proto Helper Layer 3-Protokoll Adresse Familie(Beispiel: ip)

Definition und Zuweisung von FTP-Hilfsmitteln

Im Gegensatz zu iptables sollten Helferzuweisungen beispielsweise mit der Standard-Hook-Priorität 0 durchgeführt werden, nachdem die Conntrack-Suche abgeschlossen ist.

table inet myhelpers {
  ct helper ftp-standard {
    type "ftp" protocol tcp
  }
  chain prerouting {
    type filter hook prerouting priority 0;
    tcp dport 21 ct helper set "ftp-standard"
  }
}

Zähler

counter [packets bytes]

Zählerspezifikationen

Stichwort Erläuterung Art
packets Anfangsanzahl der Pakete Ganzzahl ohne Vorzeichen(64-Bit)
bytes Anfangsanzahl von Bytes Ganzzahl ohne Vorzeichen(64-Bit)

Quote

quota [over | until] [used]

Kontingentspezifikationen

Stichwort Erläuterung Art
quota Kontingentlimit. Wird als Kontingentname verwendet. Ganzzahl ohne Vorzeichen(64-Bit)Und die Schnur(bytes, kbytes, mbytes)Geben Sie die beiden Argumente von an.overWannuntilIst vor diesen Argumenten
used Anfangswert des verwendeten Kontingents Ganzzahl ohne Vorzeichen(64-Bit)Und die Schnur(bytes, kbytes, mbytes)Geben Sie die beiden Argumente von an.

Formel

Der Ausdruck repräsentiert entweder den Wert einer Konstanten wie einer Netzwerkadresse oder einer Portnummer oder die Daten, die während der Regelsatzauswertung aus dem Paket gesammelt wurden. Sie können Ausdrücke mit binären, logischen, relationalen und anderen Arten von Ausdrücken kombinieren, um komplexe oder relationale (übereinstimmende) Ausdrücke zu bilden. Sie werden auch als Argumente für bestimmte Arten von Vorgängen verwendet, z. B. NAT und Paketmarkierung.

Jeder Ausdruck hat einen Datentyp, der die Größe, Analyse, Darstellung und Typkompatibilität des Symbolwerts mit anderen Ausdrücken bestimmt.

Befehl DESCRIBE

describe expression

Der Befehl description zeigt Informationen über den Ausdruckstyp und dessen Datentyp an.

$ nft describe tcp flags
payload expression, datatype tcp_flag (TCP flag) (basetype bitmask, integer), 8 bits

predefined symbolic constants:
fin                           0x01
syn                           0x02
rst                           0x04
psh                           0x08
ack                           0x10
urg                           0x20
ecn                           0x40
cwr                           0x80

Datentyp

Der Datentyp bestimmt die Kompatibilität von Größe, Analyse, Darstellung und Ausdruckstyp symbolischer Werte. Es gibt mehrere globale Datentypen, und einige Ausdruckstypen definieren zusätzliche Datentypen, die für diesen Ausdruckstyp spezifisch sind. Die meisten Datentypen haben eine feste Größe, einige jedoch eine dynamische Größe. (Beispiel: String-Typ)

Typen können von Typen niedrigerer Ordnung abgeleitet werden. Der IPv4-Adresstyp wird vom Integer-Typ abgeleitet. Das heißt, Sie können die IPv4-Adresse auch als ganzzahligen Wert angeben.

In bestimmten Kontexten (Mengen- und Kartendefinitionen) müssen Sie den Datentyp explizit angeben. Jeder Typ hat einen Namen, der dafür verwendet wird.

Ganzzahliger Typ

Name Stichwort Größe Basistyp
Integer integer Variable -

Der Integer-Typ wird für Zahlen verwendet. Sie können es in Dezimal, Hexadezimal oder Oktal angeben. Der Integer-Typ ist keine feste Größe, seine Größe wird durch den verwendeten Ausdruck bestimmt.

Bitmaskentyp

Name Stichwort Größe Basistyp
Bitmask bitmask Variable integer

Der Bitmaskentyp (Bitmaske) wird für die Bitmaske verwendet.

Zeichenfolgentyp

Name Stichwort Größe Basistyp
String string Variable -

Der Zeichenfolgentyp wird für Zeichenfolgen verwendet. Die Zeichenfolge beginnt mit einem alphabetischen Zeichen (a-zA-Z), gefolgt von null oder mehr alphanumerischen Zeichen oder Zeichen und Symbolen (/, -, _, .. ) Folgt. Außerdem wird alles, was in doppelte Anführungszeichen (") eingeschlossen ist, als Zeichenfolge erkannt.

Spezifikation des Zeichenkettentyps

#Name der Schnittstelle
filter input iifname eth0

#Seltsamer Schnittstellenname
filter input iifname "(eth0)"

Adresstyp der Verbindungsschicht

Name Stichwort Größe Basistyp
Link layer address lladdr Variable integer

Der Adressentyp der Verbindungsschicht wird für die Adresse der Verbindungsschicht verwendet. Link-Layer-Adressen werden als variable Gruppe von zweistelligen Hexadezimalzahlen angegeben, die durch einen Doppelpunkt (:) getrennt sind.

Adressierung der Verbindungsschicht


#MAC-Adresse des Ethernet-Ziels
filter input ether daddr 20:c9:d0:43:12:d9

IPV4-Adresstyp

Name Stichwort Größe Basistyp
IPv4 address ipv4_addr 32 Bit integer

Der IPv4-Adresstyp wird für IPv4-Adressen verwendet. Die Adresse kann als gepunkteter Dezimal-, gepunkteter Hexadezimal-, gepunkteter Achteck-, Dezimal-, Hexadezimal-, Oktal- oder Hostname angegeben werden. Hostnamen werden mit einem Standardsystem-Resolver aufgelöst.

IPv4-Adressspezifikation


#Punkt-Dezimalschreibweise
filter output ip daddr 127.0.0.1

#Hostname
filter output ip daddr localhost

IPV6-Adresstyp

Name Stichwort Größe Basistyp
IPv6 address ipv6_addr 128 Bit integer

Der IPv6-Adresstyp wird für IPv6-Adressen verwendet. Die Adresse wird als Hostname oder als durch Doppelpunkte getrenntes hexadezimales Halbwort angegeben. Adressen können in eckige Klammern ([]) eingeschlossen werden, um sie von Portnummern zu unterscheiden.

Angabe einer IPv6-Adresse


#Loopback-Adresse weggelassen
filter output ip6 daddr ::1

#Angeben einer IPv6-Adresse in eckiger Klammer
# []Keine Portnummer(22)Wird als Teil der IPv6-Adresse analysiert.
ip6 nat prerouting tcp dport 2222 dnat to [1ce::d0]:22

Boolescher Typ

Name Stichwort Größe Basistyp
Boolean boolean 1 Bit integer

Boolesche Typen sind Syntax-Hilfstypen im Benutzerbereich. Dies ist die rechte Seite des (normalerweise impliziten) relationalen Ausdrucks und wird verwendet, um den Ausdruck auf der linken Seite in eine Boolesche Prüfung zu ändern (normalerweise "existiert").

Die folgenden Schlüsselwörter werden automatisch in einen Booleschen Typ mit dem angegebenen Wert aufgelöst.

Stichwort Wert
exists 1
missing 0

Boolesche Spezifikationen

Die folgende Formel unterstützt boolesche Vergleiche.

Formel Bewegung
fib Überprüfen Sie, ob die Route vorhanden ist.
exthdr Überprüfen Sie, ob IPv6-Erweiterungsheader vorhanden sind.
tcp option Überprüfen Sie, ob TCP-Optionsheader vorhanden sind.
#Übereinstimmung, wenn Route vorhanden ist
filter input fib daddr . iif oif exists

#Entspricht nur nicht fragmentierten IPv6-Verkehrspaketen
filter input exthdr frag missing

#Übereinstimmung, wenn die TCP-Zeitstempeloption vorhanden ist
filter input tcp option timestamp exists

ICMP-Typ

Name Stichwort Größe Basistyp
ICMP Type icmp_type 8 Bits integer

Der ICMP-Typ wird verwendet, um das Typfeld im ICMP-Header einfach anzugeben.

Sie können die folgenden Schlüsselwörter verwenden, wenn Sie den ICMP-Typ angeben:

Stichwort Wert
echo-reply 0
destination-unreachable 3
source-quench 4
redirect 5
echo-request 8
router-advertisement 9
router-solicitation 10
time-exceeded 11
parameter-problem 12
timestamp-request 13
timestamp-reply 14
info-request 15
info-reply 16
address-mask-request 17
address-mask-reply 18

Angabe des ICMP-Typs


#Ping-Paket abgleichen
filter output icmp type { echo-request, echo-reply }

ICMP-Codetyp

Name Stichwort Größe Basistyp
ICMP Code icmp_code 8 Bits integer

Der ICMP-Codetyp wird verwendet, um das Codefeld im ICMP-Header einfach anzugeben.

Sie können die folgenden Schlüsselwörter verwenden, wenn Sie den ICMP-Code angeben:

Stichwort Wert
net-unreachable 0
host-unreachable 1
prot-unreachable 2
port-unreachable 3
net-prohibited 9
host-prohibited 10
admin-prohibited 13

ICMPV6-Typ

Name Stichwort Größe Basistyp
ICMPv6 Type icmpv6_type 8 Bits integer

Der Typ ICMPv6 wird verwendet, um das Typfeld im ICMPv6-Header einfach anzugeben.

Sie können die folgenden Schlüsselwörter verwenden, wenn Sie den ICMPv6-Typ angeben:

Stichwort Wert
destination-unreachable 1
packet-too-big 2
time-exceeded 3
parameter-problem 4
echo-request 128
echo-reply 129
mld-listener-query 130
mld-listener-report 131
mld-listener-done 132
mld-listener-reduction 132
nd-router-solicit 133
nd-router-advert 134
nd-neighbor-solicit 135
nd-neighbor-advert 136
nd-redirect 137
router-renumbering 138
ind-neighbor-solicit 141
ind-neighbor-advert 142
mld2-listener-report 143

Angabe des ICMPv6-Typs


#Match ICMPv6 Ping-Paket
filter output icmpv6 type { echo-request, echo-reply }

ICMPV6-Codetyp

Name Stichwort Größe Basistyp
ICMPv6 Code icmpv6_code 8 Bits integer

Der ICMPv6-Codetyp wird verwendet, um die Codefelder im ICMPv6-Header einfach anzugeben.

Sie können die folgenden Schlüsselwörter verwenden, wenn Sie den ICMPv6-Code angeben:

Stichwort Wert
no-route 0
admin-prohibited 1
addr-unreachable 3
port-unreachable 4
policy-fail 5
reject-route 6

ICMPVX-Codetyp

Name Stichwort Größe Basistyp
ICMPvX Code icmpx_code 8 Bits integer

Die ICMPvX-Codetypabstraktion ist eine Reihe von doppelten Werten zwischen den ICMP- und ICMPv6-Codetypen, die aus der inet-Familie verwendet werden.

Sie können die folgenden Schlüsselwörter verwenden, wenn Sie den ICMPvX-Code angeben:

Stichwort Wert
no-route 0
port-unreachable 1
host-unreachable 2
admin-prohibited 3

Conntrack-Typ

Dies ist eine Übersicht über die in ct-Ausdrücken und -Anweisungen verwendeten Typen.

Name Stichwort Größe Basistyp
conntrack state ct_state 4 Bytes bitmask
conntrack direction ct_dir 8 Bits integer
conntrack status ct_status 4 Bytes bitmask
conntrack event bits ct_event 4 Bytes bitmask
conntrack label ct_label 128 Bit bitmask

Sie können Schlüsselwörter zur Vereinfachung für jeden der oben genannten Typen verwenden.

conntrack state(ct_state)

Stichwort Wert
invalid 1
established 2
related 4
new 8
untracked 64

conntrack direction(ct_dir)

Stichwort Wert
original 0
reply 1

conntrack status(ct_status)

Stichwort Wert
expected 1
seen-reply 2
assured 4
confirmed 8
snat 16
dnat 32
dying 512

conntrack event bits(ct_event)

Stichwort Wert
new 1
related 2
destroy 4
reply 8
assured 16
protoinfo 32
helper 64
mark 128
seqadj 256
secmark 512
label 1024

Die Schlüsselwörter, die für den Conntrack-Label-Typ (ct_label) angegeben werden können, werden zur Laufzeit aus / etc / connlabel.conf gelesen.

Linearer Ausdruck

Der Ausdruck der untersten Ebene ist ein linearer Ausdruck, der eine Paketnutzlast, Metadaten oder konstante oder einzelne Daten aus einem Stateful-Modul darstellt.

Meta-Ausdruck

meta {length | nfproto | l4proto | protocol | priority}
[meta] {mark | iif | iifname | iiftype | oif | oifname | oiftype | skuid | skgid | nftrace | rtclassid | ibrname | obrname | pkttype | cpu | iifgroup | oifgroup | cgroup | random | secpath}

Ein Metaausdruck sind die Metadaten, die einem Paket zugeordnet sind.

Es gibt zwei Arten von Metaausdrücken: nicht modifizierte Metaausdrücke und modifizierte Metaausdrücke. Ein qualifizierter Metaausdruck erfordert das Schlüsselwort meta vor dem Metakey. Mit nicht qualifizierten Metaausdrücken können Sie die Metakey direkt oder als qualifizierten Metaausdruck angeben. meta l4proto hilft dabei, bestimmte Transportprotokolle abzugleichen, die Teil von IPv4- oder IPv6-Paketen sind. Außerdem werden die in IPv6-Paketen vorhandenen IPv6-Erweiterungsheader übersprungen.

Meta-Ausdruckstyp

Stichwort Erläuterung Art
length Paketlänge(Teilzeitstelle) integer(32 Bit)
nfproto Die eigentliche Hook-Protokollfamilie. Nur nützlich für Inet-Tabellen integer(32 Bit)
l4proto Schicht 4-Protokoll. Überspringen Sie den IPv6-Erweiterungsheader integer(8 Bits)
protocol EtherType-Protokollwert ether_type
priority TC-Paketpriorität tc_handle
mark Paketmarke mark
iif Eingabeschnittstellenindex iface_index
iifname Name der Eingabeschnittstelle ifname
iiftype Typ der Eingabeschnittstelle iface_type
oif Index der Ausgabeschnittstelle iface_index
oifname Name der Ausgabeschnittstelle ifname
oiftype Hardwaretyp der Ausgabeschnittstelle iface_type
skuid UID, die dem ursprünglichen Socket zugeordnet ist uid
skgid GID, die der Originalbuchse zugeordnet ist gid
rtclassid Routing-Bereich realm
ibrname Name der Bridge-Schnittstelle eingeben ifname
obrname Name der Ausgangsbrückenschnittstelle ifname
pkttype Pakettyp pkt_type
cpu CPU-Nummer zur Verarbeitung des Pakets integer(32 Bit)
iifgroup Gerätegruppe empfangen devgroup
oifgroup Gerätegruppe senden devgroup
cgroup Kontrollgruppen-ID integer(32 Bit)
random Pseudozufallszahl integer(32 Bit)
secpath Boolescher Wert boolean(1 Bit)

Meta-Ausdruck spezifischer Typ

Art Erläuterung
iface_index Schnittstellenindex(32-Bit-Nummer).. Dies kann eine Nummer oder der Name einer vorhandenen Schnittstelle sein.
ifname Name der Schnittstelle(16-Byte-Zeichenfolge).. Nicht benötigt.
iface_type Oberflächentyp(16-Bit-Nummer)。
uid BENUTZERIDENTIFIKATION(32-Bit-Nummer).. Es kann als Nummer oder Benutzername angegeben werden.
gid Gruppen-ID(32-Bit-Nummer).. Kann als Nummer oder Gruppenname angegeben werden.
realm Routing-Bereich(32-Bit-Nummer).. Numerischer Wert oder/etc/iproute2/rt_realmsEs kann als der in definierte Symbolname angegeben werden.
devgroup_type Gerätegruppe(32-Bit-Nummer).. Zahlenwert oder/etc/iproute2/groupEs kann als Symbolname angegeben werden, der in definiert ist.
pkt_type Pakettyp:Unicast(An den lokalen Host),Übertragung(An alle), Multiplizieren(Zur Gruppe)。

Beispiel für die Verwendung eines Metaausdrucks


#Modifizierter Meta-Ausdruck
filter output meta oif eth0

#Nicht qualifizierter Metaausdruck
filter output oif eth0

#Pack, das das Ziel der IPSec-Verarbeitung war
raw prerouting meta secpath exists accept

FIB-Formel (Forwarding Information Base)

fib {saddr | daddr | {mark | iif | oif}} {oif | oifname | type}

Der fib-Ausdruck fragt fib (Weiterleitungsinformationsbasis) ab, um Informationen wie den von einer bestimmten Adresse verwendeten Ausgangsschnittstellenindex abzurufen. Die Eingabe ist ein Tupel von Elementen, die als Eingabe für die Fib-Suchfunktion verwendet werden.

fib Expressionsspezifischer Typ

Stichwort Erläuterung Art
oif Index der Ausgabeschnittstelle integer(32 Bit)
oifname Name der Ausgabeschnittstelle string
type Adresstyp fib_addrtype

Beispiel für die Verwendung von FIB-Ausdrücken


#Pakete ohne umgekehrten Pfad verwerfen
filter prerouting fib saddr . iif oif missing drop

#Verwerfen Sie Pakete an Adressen, die nicht auf der Schnittstelle konfiguriert sind
filter prerouting fib daddr . iif type != { local, broadcast, multicast } drop

#Spezifisch'blackhole'Führen Sie eine Suche in der Tabelle durch( 0xdead,Erfordert die richtigen IP-Regeln)
filter prerouting meta mark set 0xdead fib daddr . mark type vmap { blackhole : drop, prohibit : jump prohibited, unreachable : drop }

Routing-Formel

rt {classid | nexthop}

Ein Routing-Ausdruck bezieht sich auf die Routing-Daten, die einem Paket zugeordnet sind.

Routing-Ausdruckstyp

Stichwort Erläuterung Art
classid Routing-Bereich realm
nexthop Routing nächsten Hop ipv4_addr / ipv6_addr
mtu Maximale Segmentgröße des Root-TCP integer(16 Bit)

Routing ausdrucksspezifischer Typ

Art Erläuterung
realm Routing-Bereich(32-Bit-Nummer).. Numerisch oder/etc/iproute2/rt_realmsEs kann als der in definierte Symbolname angegeben werden.

Beispiel für die Verwendung von Routing-Ausdrücken


#IP-Familienunabhängiger RT-Ausdruck
filter output rt classid 10

#IP-familienabhängiger RT-Ausdruck
ip filter output rt nexthop 192.168.0.1
ip6 filter output rt nexthop fd00::1
inet filter output rt ip nexthop 192.168.0.1
inet filter output rt ip6 nexthop fd00::1

Nutzlastausdruck

Der Payload-Ausdruck bezieht sich auf die Daten aus der Payload des Pakets.

Ethernet-Header-Ausdruck

ether [Ethernet header field]

Ausdruckstyp des Ethernet-Headers

Stichwort Erläuterung Art
daddr Ziel-MAC-Adresse ether_addr
saddr Quell-MAC-Adresse ether_addr
type EtherType ether_type

VLAN-Header-Ausdruck

vlan [VLAN header field]
Stichwort Erläuterung Art
id VLAN ID(VID) integer(12 Bits)
cfi Canonical Format Indicator integer(1 Bit)
pcp Priority code point integer(3 Bits)
type EtherType ether_type

ARP-Header-Ausdruck

arp [ARP header field]
Stichwort Erläuterung Art
htype ARP-Hardwaretyp integer(16 Bit)
ptype EtherType ether_type
hlen Länge der Hardwareadresse integer(8 Bits)
plen Protokolladressenlänge integer(8 Bits)
operation Operation arp_op

IPV4-Header-Ausdruck

ip [IPv4 header field]
Stichwort Erläuterung Art
version IP-Header-Version(4) integer(4 Bits)
hdrlength IP-Header-Länge einschließlich Optionen integer(4 Bits)FIXME-Skalierung
dscp Differentiated Services Code Point dscp
ecn Explizite Überlastungsbenachrichtigung(Explicit Congestion Notification) ecn
length Gesamtpaketlänge integer(16 Bit)
id IP ID integer(16 Bit)
frag-off Fragmentversatz integer(16 Bit)
ttl Überlebenszeit(Time to live) integer(8 Bits)
protocol Protokoll der oberen Schicht inet_proto
checksum IP-Header-Prüfsumme integer(16 Bit)
saddr Quelladresse ipv4_addr
daddr Zieladresse ipv4_addr

ICMP-Header-Ausdruck

icmp [ICMP header field]
Stichwort Erläuterung Art
type ICMP-Typfeld icmp_type
code ICMP-Codefeld integer(8 Bits)
checksum ICMP-Prüfsummenfeld integer(16 Bit)
id Echoanforderung/Antwort-ID integer(16 Bit)
sequence Echoanforderung/Antwortsequenznummer integer(16 Bit)
gateway Gateway umleiten integer(32 Bit)
mtu MTU Pfaderkundung MTU integer(16 Bit)

IPV6-Header-Ausdruck

ip6 [IPv6 header field]

Dieser Ausdruck verweist auf das IPv6-Headerfeld. Eine Einschränkung bei der Verwendung von "ip6 nexthdr". Der Wert bezieht sich nur auf den nächsten Header. Das heißt, ip6 nexthdr tcp stimmt nur überein, wenn das ipv6-Paket keinen Erweiterungsheader enthält. Es wird nicht abgeglichen, wenn es fragmentierte Pakete oder Routing-Erweiterungsheader enthält. Verwenden Sie meta l4proto, wenn Sie mit dem tatsächlichen Transportheader übereinstimmen möchten, und ignorieren Sie stattdessen den zusätzlichen Erweiterungsheader.

Stichwort Erläuterung Art
version IP-Header-Version(6) integer(4 Bits)
dscp Differentiated Services Code Point dscp
ecn Explizite Überlastungsbenachrichtigung(Explicit Congestion Notification) ecn
flowlabel Durchflussetikett integer(20 Bits)
length Nutzlastlänge integer(16 Bit)
nexthdr nexthdr Protokoll inet_proto
hoplimit Hop Limit integer(8 Bits)
saddr Quelladresse ipv6_addr
daddr Zieladresse ipv6_addr

Übereinstimmung, wenn der erste Erweiterungsheader auf ein Fragment zeigt

ip6 nexthdr ipv6-frag counter

ICMPV6-Header-Ausdruck

icmpv6 [ICMPv6 header field]
Stichwort Erläuterung Art
type ICMPv6-Typfeld icmpv6_type
code ICMPv6-Codefeld integer(8 Bits)
checksum ICMPv6-Prüfsummenfeld integer(16 Bit)
parameter-problem Zeiger auf das Problem integer(32 Bit)
packet-too-big Übergroße MTU integer(32 Bit)
id Echoanforderung/Antwort-ID ganze Zahl(16 Bit)
sequence Echoanforderung/Antwortsequenznummer integer(16 Bit)
max-delay Maximale Antwortverzögerung für MLD-Abfragen integer(16 Bit)

TCP-Header-Ausdruck

tcp [TCP header field]
Stichwort Erläuterung Art
sport Quellport inet_service
dport Zielhafen inet_service
sequence Sequenznummer integer(32 Bit)
ackseq Zulassungsnummer integer(32 Bit)
doff Datenoffset integer(4 Bits)FIXME-Skalierung
reserved Reservierungsbereich integer(4 Bits)
flags TCP-Flag tcp_flag
window Fenster integer(16 Bit)
checksum Prüfsumme integer(16 Bit)
urgptr Notfallzeiger integer(16 Bit)

UDP-Header-Ausdruck

udp [UDP header field]
Stichwort Erläuterung Art
sport Quellport inet_service
dport Zielhafen inet_service
length Gesamtpaketlänge integer(16 Bit)
checksum Prüfsumme integer(16 Bit)

Einfacher UDP-Header-Ausdruck

udplite [UDP-Lite header field]
Stichwort Erläuterung Art
sport Quellport inet_service
dport Zielhafen inet_service
checksum Prüfsumme integer(16 Bit)

SCTP-Header-Ausdruck

sctp [SCTP header field]
Stichwort Erläuterung Art
sport Quellport inet_service
dport Zielhafen inet_service
vtag Validierungs-Tag integer(32 Bit)
checksum Prüfsumme integer(32 Bit)

DCCP-Header-Ausdruck

dccp [DCCP header field]
Stichwort Erläuterung Art
sport Quellport inet_service
dport Zielhafen inet_service

Authentifizierungsheaderausdruck

ah [AH header field]
Stichwort Erläuterung Art
nexthdr Das folgende Header-Protokoll inet_proto
hdrlength AH Header Länge integer(8 Bits)
reserved Reservierungsbereich integer(16 Bit)
spi Sicherheitsparameterindex integer(32 Bit)
sequence Sequenznummer integer(32 Bit)

Verschlüsselter Sicherheitsnutzlast-Header-Ausdruck

esp [ESP header field]
Stichwort Erläuterung Art
spi Sicherheitsparameterindex integer(32 Bit)
sequence Sequenznummer integer(32 Bit)

IPCOMP-Header-Ausdruck

comp [IPComp header field]
Stichwort Erläuterung Art
nexthdr Das folgende Header-Protokoll inet_proto
flags Flagge bitmask
cpi Komprimierungsparameterindex integer(16 Bit)

RAW-Nutzdatenausdruck

@ [base,offset,length]

Der Raw-Payload-Ausdruck weist Sie an, Längenbits zu laden, die mit Offsetbits beginnen. Bit 0 zeigt auf das erste Bit. In der Programmiersprache C entspricht dies dem höchstwertigen Bit oder "0x80" für Oktette. Diese sind nützlich, um Header abzugleichen, die noch keinen für Menschen lesbaren Vorlagenausdruck haben. Beachten Sie, dass nft keine Abhängigkeiten von unformatierten Nutzdatenausdrücken hinzufügt. Um beispielsweise das Protokollfeld im Transportheader mit Protokollnummer 5 abzugleichen, müssen Sie Pakete mit unterschiedlichen Transportheadern manuell ausschließen. Verwenden Sie beispielsweise "meta l4proto 5" vor dem Raw-Ausdruck.

Unterstützte Nutzlastprotokollbasis

Base Erläuterung
ll Verbindungsschicht wie Ethernet-Header
nh Netzwerk-Header wie IPv4 oder IPv6
th Transport-Header wie TCP

python


#Zielport, der sowohl UDP als auch TCP entspricht
inet filter input meta l4proto {tcp, udp} @th,16,16 { dns, http }

#Wenn die Zielprotokolladresse mit der angegebenen Adresse übereinstimmt
#Schreiben Sie die Zielhardwareadresse des Arp-Pakets neu.
input meta iifname enp2s0 arp ptype 0x0800 arp htype 1 arp hlen 6 arp plen 4 @nh,192,32 0xc0a88f10 @nh,144,48 set 0x112233445566 accept

Erweiterter Header-Ausdruck

Erweiterte Header-Ausdrücke beziehen sich auf Daten aus Protokoll-Headern variabler Größe, z. B. erweiterte IPv6-Header und TCP-Optionen.

nftables unterstützt derzeit das Abgleichen (Suchen) bestimmter IPv6-Erweiterungsheader oder TCP-Optionen.

hbh {nexthdr | hdrlength}
frag {nexthdr | frag-off | more-fragments | id}
rt {nexthdr | hdrlength | type | seg-left}
dst {nexthdr | hdrlength}
mh {nexthdr | hdrlength | checksum | type}
srh {flags | tag | sid | seg-left}
tcp option {eol | noop | maxseg | window | sack-permitted | sack | sack0 | sack1 | sack2 | sack3 | timestamp} tcp_option_field

Die folgende Syntax gilt nur für relationale Ausdrücke, die auf der rechten Seite einen Booleschen Typ haben und nur prüfen, ob ein Header vorhanden ist.

exthdr {hbh | frag | rt | dst | mh}
tcp option {eol | noop | maxseg | window | sack-permitted | sack | sack0 | sack1 | sack2 | sack3 | timestamp}

IPv6-Erweiterungsheader

Stichwort Erläuterung
hbh Hop für Hop
rt Routing-Header
Fragment Fragmentierungsheader
dst dst Option
mh Mobilitätsheader
srh Segment-Routing-Header

TCP-Option

Stichwort Erläuterung TCP-Optionsfeld
eol Ende der Optionsliste kind
noop 1 Byte TCP-Nr-op Option kind
maxseg Maximale TCP-Segmentgröße kind, length, size
window TCP-Fensterskalierung kind, length, count
sack-permitted Zulässiger TCP-SACK kind, length
sack TCP-selektive Bestätigung(TCP Selective Acknowledgement)(Alias für Block 0) kind, length, left, right
sack0 TCP-selektive Bestätigung(block 0) kind, length, left, right
sack1 TCP-selektive Bestätigung(block 1) kind, length, left, right
sack2 TCP-selektive Bestätigung(block 2) kind, length, left, right
sack3 TCP-selektive Bestätigung(block 3) kind, length, left, right
timestamp TCP-Zeitstempel kind, length, tsval, tsecr
#Suchen Sie nach TCP-Optionen
filter input tcp option sack-permitted kind 1 counter

#Suchen Sie nach IPv6 exthdr
ip6 filter input frag more-fragments 1 counter

CONNTRACK-Ausdruck

Der Conntrack-Ausdruck verweist auf die Metadaten des Verbindungsverfolgungseintrags, der dem Paket zugeordnet ist.

Es gibt drei Arten von Conntrack-Ausdrücken. Einige Conntrack-Ausdrücke erfordern die Flussrichtung vor der Taste "Conntrack", während andere richtungsunabhängig sind und direkt verwendet werden müssen. Die Schlüsselwörter Pakete, Bytes und avgkt können mit oder ohne Orientierung verwendet werden. Wenn Sie die Richtung weglassen, wird die Summe aus der ursprünglichen Richtung und der Antwortrichtung zurückgegeben. Gleiches gilt für Zonen. Wenn eine Richtung angegeben ist, stimmen die Zonen nur überein, wenn die Zonen-ID der angegebenen Richtung zugeordnet ist.

ct {state | direction | status | mark | expiration | helper | label | l3proto | protocol | bytes | packets | avgpkt | zone}
ct {original | reply} {l3proto | protocol | proto-src | proto-dst | bytes | packets | avgpkt | zone}
ct {original | reply} {ip | ip6} {saddr | daddr}
Stichwort Erläuterung Art
state Verbindungsstatus ct_state
direction Richtung des Pakets zur Verbindung ct_dir
status Verbindungsstatus ct_status
mark Verbindungsmarke mark
expiration Ablaufdatum der Verbindung time
helper Helfer mit der Verbindung verbunden string
label nftables enthalten Pfadconnlabel.confVerbindungsverfolgungsetikettenbit oder symbolischer Name definiert in ct_label
l3proto Verbindungsprotokoll der Schicht 3 nf_proto
saddr Quelladresse der Verbindung in der angegebenen Richtung ipv4_addr / ipv6_addr
daddr Zieladresse der Verbindung in der angegebenen Richtung ipv4_addr / ipv6_addr
protocol Layer 4-Protokoll für Verbindungen in der angegebenen Richtung inet_proto
proto-src Layer 4-Quellprotokoll in der angegebenen Richtung integer(16 Bit)
proto-dst Layer 4-Zielprotokoll in der angegebenen Richtung integer(16 Bit)
packets Die Anzahl der in der angegebenen Richtung erkannten Pakete oder die Summe des Originals und der Antwort integer(64-Bit)
bytes Anzahl der erkannten Bytes,packetsSiehe Keyword-Beschreibung integer(64-Bit)
avgpkt Durchschnittliche Bytes pro Paket,packetsSiehe Keyword-Beschreibung integer(64-Bit)
zone Verbindungszone integer(16 Bit)

Eine Beschreibung der oben genannten conntrack-spezifischen Typen finden Sie im Unterabschnitt CONNTRACK TYPES oben.

Erklärung

Die Anweisung stellt die auszuführende Aktion dar. Sie können den Kontrollfluss ändern (zurückgeben, zu einer anderen Kette springen, Pakete akzeptieren oder verwerfen) und Aktionen wie das Protokollieren und Ablehnen von Paketen ausführen.

Es gibt zwei Arten von Anweisungen. Die end-Anweisung beendet bedingungslos die Auswertung der aktuellen Regel. Nicht terminierende Anweisungen beenden die Auswertung der aktuellen Regel nur bedingt oder nie. Das heißt, sie sind in Bezug auf die Regelsatzbewertung passiv. Die Regel kann eine beliebige Anzahl nicht abschließender Anweisungen enthalten, es kann jedoch nur eine einzige abschließende Anweisung als endgültige Anweisung verwendet werden.

Urteilserklärung

Die Entscheidungsanweisung ändert den Regelsatzsteuerungsfluss und gibt eine Richtlinienentscheidung für das Paket aus.

{accept | drop | queue | continue | return}
{jump | goto} chain
#Pakete von eth0 und internes Netzwerk von_Prozess mit LAN.
filter input iif eth0 ip saddr 192.168.0.0/24 jump from_lan

#Löschen Sie alle Pakete aus der Kette eth0 mit unterschiedlichen Quelladressen.
filter input iif eth0 drop

Workload-Anweisung

Die Payload-Anweisung ändert den Inhalt des Pakets. Beispielsweise kann es verwendet werden, um das IP-DSCP-Headerfeld (differv) oder das IPv6-Flow-Label festzulegen.

Leiten Sie einige Pakete weiter, anstatt sie zu überbrücken.

# tcp:http 192.160.0.0/Leiten Sie von 16 auf Ihren lokalen Computer um und leiten Sie ihn weiter, anstatt ihn zu überbrücken
# 00:11:22:33:44:Es wird angenommen, dass 55 die lokale MAC-Adresse ist.
bridge input meta iif eth0 ip saddr 192.168.0.0/16 tcp dport 80 meta pkttype set unicast ether daddr set 00:11:22:33:44:55

#Festlegen von IPv4-DSCP-Headerfeldern
ip forward ip dscp set 42

Erweiterte Header-Anweisung

Die erweiterte Header-Anweisung ändert den Paketinhalt von Headern variabler Größe. Dies kann jetzt verwendet werden, um die maximale TCP-Segmentgröße eines Pakets zu ändern, ähnlich wie bei TCPMSS.

#Ändern Sie tcp mss
tcp flags syn tcp option maxseg size set 1360

#Stellen Sie die Größe basierend auf den Routeninformationen ein
tcp flags syn tcp option maxseg size set rt mtu

Protokollanweisung

log [prefix quoted_string] [level syslog-level] [flags log-flags]
log group nflog_group [prefix quoted_string] [queue-threshold value] [snaplen size]

Die log-Anweisung ermöglicht die Protokollierung übereinstimmender Pakete. Unter Verwendung dieser Anweisung aus einer Regel druckt der Linux-Kernel Informationen über alle übereinstimmenden Pakete, einschließlich Header-Felder, über das Kernel-Protokoll (das von dmesg (1) oder syslog gelesen werden kann). Wenn eine Gruppennummer angegeben wird, übergibt der Linux-Kernel das Paket an nfnetlink_log und sendet das Paket über den netlink-Socket an die angegebene Multicast-Gruppe. Ein oder mehrere Userspace-Prozesse können in einer Gruppe registriert sein und Pakete empfangen. Weitere Informationen finden Sie in der Dokumentation zu libnetfilter_queue. Da dies eine nicht terminierende Anweisung ist, wird die Regelauswertung fortgesetzt, nachdem das Paket protokolliert wurde.

Optionen für Protokollanweisungen

Stichwort Erläuterung Art
prefix Präfix der Protokollnachricht Zeichenfolge in Anführungszeichen
level Syslog-Protokollierungsstufe string: emerg, alert, crit, err, warn [default], notice, info, debug
group NFLOG-Gruppe, um eine Nachricht zu senden Ganzzahl ohne Vorzeichen(16 Bit)
snaplen Länge der Paketnutzlast, die in die Netlink-Nachricht aufgenommen werden soll Ganzzahl ohne Vorzeichen(32 Bit)
que-threshold Anzahl der Pakete, die im Kernel in die Warteschlange gestellt werden sollen, bevor sie an den Benutzerbereich gesendet werden Ganzzahl ohne Vorzeichen(32 Bit)

Protokollflag

Flagge Erläuterung
tcp sequence Protokollieren Sie die TCP-Sequenznummer.
tcp options Protokolloptionen für TCP-Paket-Header.
ip options IP /Protokolloptionen für IPv6-Paket-Header.
skuid Protokollieren Sie die Benutzer-ID des Prozesses, der das Paket generiert hat.
ether Dekodieren Sie die MAC-Adresse und das Protokoll.
all Aktivieren Sie alle oben genannten Protokollflags.

Verwendungsbeispiel für Protokollanweisungen


#Protokollieren Sie die UID, die die Paket- und IP-Optionen generiert hat
ip filter output log flags skuid flags ip options

#Protokollieren Sie TCP-Sequenznummern und TCP-Optionen aus TCP-Paketen
ip filter output log flags tcp sequence,options

#Aktivieren Sie alle unterstützten Protokollflags
ip6 filter output log flags all

Ablehnungserklärung

reject [ with {icmp | icmpv6 | icmpx} type {icmp_code | icmpv6_code | icmpx_code} ]
reject [ with tcp reset ]

Die Anweisung "Zurückweisen" wird verwendet, um ein Fehlerpaket als Antwort auf ein übereinstimmendes Paket zurückzusenden. Ansonsten ist es dasselbe wie drop, also ist es eine end-Anweisung, die das Durchlaufen von Regeln beendet. Diese Anweisung gilt nur für Eingabeketten, Vorwärtsketten, Ausgabeketten und benutzerdefinierte Ketten, die nur von diesen Ketten aufgerufen werden.

Die verschiedenen ICMP-Verweigerungsvariablen sind für die Verwendung mit verschiedenen Tabellenfamilien vorgesehen.

Variable Familie Art
icmp ip icmp_code
icmpv6 ip6 icmpv6_code
icmpx inet icmpx_code

Im Abschnitt Datentypen (#Datentypen) oben finden Sie eine Beschreibung der Typen und eine Liste der unterstützten Schlüsselwörter. Im Allgemeinen ist der Standardwert für die Verweigerung "Port nicht erreichbar".

Beachten Sie, dass in der Bridge-Familie Reject -Anweisungen nur in Basechains zulässig sind, die sich in Eingaben oder Prerouting einbinden.

Gegenaussage

Die counter -Anweisung legt die Anzahl der Treffer in einem Paket zusammen mit der Anzahl der Bytes fest.

counter [ packets number bytes number ]

CONNTRACK-Anweisung

Mit der Anweisung conntrack können Sie die Markierung conntrack und die Bezeichnung conntrack festlegen.

ct {mark | event | label | zone} set value

Die Anweisung ct legt die der Verbindung zugeordneten Metadaten fest. Die Zonen-ID muss zugewiesen werden, bevor eine Conntrack-Suche durchgeführt werden kann. Das heißt, dies sollte mit Prerouting und Ausgabe erfolgen (wenn lokal generierte Pakete in separaten Zonen platziert werden müssen) und die Hook-Priorität "-300" ist.

Conntrack-Anweisungstyp

Stichwort Erläuterung Wert
event Conntrack-Ereignisbit bitmask, integer(32 Bit)
helper Der Name des der Verbindung zugewiesenen ct-Hilfsobjekts Zitierte Zeichenfolge
mark Verbindungsverfolgungsmarkierung mark
label Verbindungsverfolgungsetikett label
zone Verbindungszone integer(16 Bit)
#Speichern Sie das Paket nfmark, um es zu verfolgen
ct mark set meta mark

#Richten Sie zugeordnete Zonen über die Schnittstelle ein
table inet raw {
  chain prerouting {
    type filter hook prerouting priority -300;
    ct zone set iif map { "eth1" : 1, "veth1" : 2 }
  }
  chain output {
    type filter hook output priority -300;
    ct zone set oif map { "eth1" : 1, "veth1" : 2 }
  }
}

#Begrenzen Sie die von ctnetlink gemeldeten Ereignisse
ct event set new,related,destroy

Meta-Anweisung

Die Anweisung meta legt den Wert des Metaausdrucks fest. Die vorhandenen Metafelder sind "Priorität", "Marke", "Pkt-Typ", "Nftrace".

meta {mark | priority | pkttype | nftrace} set value

Die Metaanweisung legt die dem Paket zugeordneten Metadaten fest.

Metastatement-Typ

Stichwort Erläuterung Wert
priority TC-Paketpriorität tc_handle
mark Paketmarke mark
pkttype Pakettyp pkt_type
nftrace Regelsatz-Paketverfolgung auf/aus. So überwachen Sie die Ablaufverfolgungmonitor traceVerwenden Sie den Befehl. 0, 1

Einschränkungserklärung

limit rate [over] packet_number / {second | minute | hour | day} [burst packet_number packets]
limit rate [over] byte_number {bytes | kbytes | mbytes} / {second | minute | hour | day | week} [burst byte_number bytes]

Die Anweisung limit stimmt mit dem Token-Bucket-Filter mit einer begrenzten Rate überein. Regeln, die diese Anweisung verwenden, stimmen überein, bis dieses Limit erreicht ist. Sie können dies in Kombination mit einer Protokollanweisung verwenden, um die Protokollierung einzuschränken. Das optionale Schlüsselwort "über" stimmt mit der angegebenen Rate überein.

Wert Erläuterung Art
packet_number Anzahl der Pakete Ganzzahl ohne Vorzeichen(32 Bit)
byte_number Anzahl der Bytes Ganzzahl ohne Vorzeichen(32 Bit)

NAT-Anweisung

snat to address [:port] [persistent, random, fully-random]
snat to address - address [:port - port] [persistent, random, fully-random]
dnat to address [:port] [persistent, random, fully-random]
dnat to address [:port - port] [persistent, random, fully-random]
masquerade to [:port] [persistent, random, fully-random]
masquerade to [:port - port] [persistent, random, fully-random]
redirect to [:port] [persistent, random, fully-random]
redirect to [:port - port] [persistent, random, fully-random]

Die nat Anweisung ist nur ab dem nat Kettentyp gültig.

Die Anweisungen snat und masquerade geben an, dass die Quelladresse des Pakets geändert werden sollte. snat gilt nur für Postrouting und Eingabeketten, Maskerade jedoch nur für Postrouting. Die Anweisungen dnat und redirect sind nur in der Vorroutierungs- und Ausgabekette gültig und geben an, dass die Zieladresse des Pakets geändert werden soll. Sie können auch Nicht-Basisketten verwenden, die von Basisketten vom Typ nat chain aufgerufen werden. Alle zukünftigen Pakete auf dieser Verbindung werden verworfen und die Regelauswertung wird abgebrochen.

Die masquerade -Anweisung ist eine spezielle Form von snat und verwendet immer die IP-Adresse der Zielsende-Schnittstelle. Dies ist besonders nützlich für Gateways mit dynamischen (öffentlichen) IP-Adressen.

Die redirect -Anweisung ist eine spezielle Form von dnat, die die Zieladresse immer in die Adresse des lokalen Hosts übersetzt. Dies ist nützlich, wenn Sie nur den Zielport für eingehenden Datenverkehr auf verschiedenen Schnittstellen ändern möchten.

Beachten Sie, dass jede nat-Anweisung sowohl Prerouting- als auch Postrouting-Basisketten enthalten muss. Andernfalls werden die Pakete auf der Rückroute vom Netzfilter nicht erkannt und die umgekehrte Konvertierung findet nicht statt.

NAT-Anweisungswert

Formel Erläuterung Art
address Paketquelle/Gibt an, dass die Zieladresse geändert werden muss. Sie können eine Zuordnung angeben, um eine Liste von Tupeln, die aus einem beliebigen Ausdrucksschlüssel bestehen, einem Adresswert zuzuordnen. ipv4_addr, ipv6_addr,Zum Beispielabcd::1234Oder Sie können Mapping verwenden. Meta Mark Map{ 10:192.168.1.2, 20:192.168.1.3 }
port Paketquelle/Gibt an, dass die Zieladresse geändert werden muss. Port-Nummer(16 Bit)

NAT-Anweisungsflag

Flagge Erläuterung
persistent Gleiche Quelle für jede Verbindung/Geben Sie dem Client die Zieladresse.
random Bei Verwendung wird die Portzuordnung unter Verwendung von Quell- und Zieladressen zufällig ausgewählt, und eine MD5-Hash-Mischung wird zufällig unter Verwendung des Zielports ausgesät.
fully-random Bei Verwendung werden Portzuordnungen basierend auf einem 32-Bit-Pseudozufallsalgorithmus generiert.

Verwendung von NAT-Anweisungen

#Eine Tabelle, die für alle anderen Beispiele geeignet ist/Erstellen Sie eine Ketteneinstellung
add table nat
add chain nat prerouting { type nat hook prerouting priority 0; }
add chain nat postrouting { type nat hook postrouting priority 100; }

#Adresse 1 Die Quelladresse aller über eth0 gesendeten Pakete.2.3.In 4 konvertieren
add rule nat postrouting oif eth0 snat to 1.2.3.4

#Zieladresse 192 für den gesamten über eth0 eingehenden Datenverkehr.168.1.Auf 120 umleiten
add rule nat prerouting iif eth0 dnat to 192.168.1.120

#Übersetzen Sie die Quelladresse aller über eth0 gesendeten Pakete in irgendetwas
#Lokal generierte Pakete werden als Quelle verwendet, um dasselbe Ziel zu erreichen
add rule nat postrouting oif eth0 masquerade

#Direkter eingehender TCP-Verkehr auf Port 22 zu Port 2222
add rule nat prerouting tcp dport 22 redirect to :2222

Flow-Offload-Anweisung

Mit der Flow Offload-Anweisung können Sie einen Flow auswählen, der die Übertragung über einen Layer 3-Netzwerkstapel-Bypass beschleunigt. Sie müssen den Namen der Flusstabelle angeben, um diesen Flow auszulagern.

flow offload @flowtable

Warteschlangenanweisung

Diese Anweisung verwendet den Handler nfnetlink_queue, um das Paket an den Benutzerbereich zu übergeben. Das Paket wird in eine Warteschlange gestellt, die durch eine 16-Bit-Warteschlangennummer gekennzeichnet ist. Userspace kann Pakete nach Bedarf überprüfen und ändern. Userspace muss dann das Paket aus dem Kernel löschen oder erneut einwerfen. Weitere Informationen finden Sie in der Dokumentation zu libnetfilter_queue.

queue [num queue_number] [bypass]
queue [num queue_number_from - queue_number_to] [bypass,fanout]

Wert der Warteschlangenanweisung

Wert Erläuterung Art
queue_number Stellen Sie die Warteschlangennummer ein. Der Standardwert ist 0. Ganzzahl ohne Vorzeichen(16 Bit)
queue_number_from Wenn Fanout verwendet wird, stellen Sie die anfängliche Warteschlange innerhalb des Bereichs ein. Ganzzahl ohne Vorzeichen(16 Bit)
queue_number_to Wenn Fanout verwendet wird, stellen Sie die Endwarteschlange innerhalb des Bereichs ein. Ganzzahl ohne Vorzeichen(16 Bit)

Warteschlangenanweisungsflag

Flagge Erläuterung
bypass Wenn die User Space-Anwendung nicht zurückgesetzt werden kann, übergeben Sie das Paket. Bevor Sie dieses Flag verwendenlibnetfilter_queueIn der Dokumentation unter finden Sie Empfehlungen zur Leistungsoptimierung.
fanout Verteilen Sie Pakete auf mehrere Warteschlangen.

DUP-Anweisung

Die dup-Anweisung wird verwendet, um ein Paket zu duplizieren und eine Kopie an ein anderes Ziel zu senden.

dup to device
dup to address device device

Wert der Dup-Anweisung

Formel Erläuterung Art
address Gibt an, dass eine Kopie des Pakets an das neue Gateway gesendet werden soll. ipv4_addr, ipv6_addr. Zum Beispielabcd::1234.. Oder Sie können Mapping verwenden.ip saddr map {192.168.1.2:10.1.1.1}
device Gibt an, dass eine Kopie über das Gerät gesendet werden soll. string

Beispiel für die Verwendung der Anweisung dup


#IP-Adresse 10 mit eth0.2.3.An 4 Maschinen senden
ip filter forward dup to 10.2.3.4 device "eth0"

#Kopieren Sie den Rohrahmen auf eine andere Schnittstelle
netdetv ingress dup to "eth0"
dup to "eth0"

#Map to Gateway Mit dst addr kombinieren
dup to ip daddr map { 192.168.7.1 : "eth0", 192.168.7.2 : "eth1" }

FWD-Anweisung

Die fwd-Anweisung wird verwendet, um Rohpakete an eine andere Schnittstelle umzuleiten. Es kann nur mit dem Ingress-Hook der netdev-Familie verwendet werden. Ähnlich einer dup-Anweisung, nur dass keine Kopie erstellt wird.

fwd to device

set Anweisung

Die set -Anweisung wird verwendet, um Elemente in der Menge aus dem Paketpfad dynamisch hinzuzufügen oder zu aktualisieren. set setname muss bereits in der angegebenen Tabelle vorhanden sein. Darüber hinaus müssen Sätze, die dynamisch aus dem Regelsatz nftables aktualisiert werden, sowohl eine maximale Satzgröße (um zu verhindern, dass der Speicher knapp wird) als auch eine Zeitüberschreitung (um zu verhindern, dass die Anzahl der Einträge im Satz auf unbestimmte Zeit wächst) angeben. .. Die set-Anweisung erstellt beispielsweise eine dynamische Blacklist.

{add | update} @setname {expression [timeout timeout] [comment string]}

Einfaches Beispiel für eine schwarze Liste


#Familie"ip"Tabelle"filter"Deklarieren Sie das gebundene Set. Zeitüberschreitung und Größe sind erforderlich, um Elemente aus dem Paketpfad hinzuzufügen.
nft add set ip filter blackhole "{type ipv4_addr; flags timeout; size 65536;}"

#Whitelist der internen Schnittstelle.
nft add rule ip filter input meta iifname "internal" accept

#Verwerfen Sie Pakete von IP-Adressen auf der schwarzen Liste.
nft add rule ip filter input ip saddr @blackhole counter drop

#Wenn mehr als 10 TCP-Verbindungsanforderungen pro Sekunde vorliegen, geben Sie die Quell-IP-Adresse auf die schwarze Liste.
#Die Eingabe läuft nach 1 Minute ab. Wenn der eingeschränkte Status danach weiterhin besteht, kann der Eintrag erneut hinzugefügt werden.
nft add rule ip filter input tcp flags syn tcp dport ssh meter flood size 128000 {ip saddr timeout 10s limit rate over 10 / second} add @blackhole {ip saddr timeout 1m} drop

#Überprüfen Sie den Status des Ratenbegrenzungsmessers.
nft list meter ip filter flood

#Überprüfen Sie den Inhalt des Schwarzen Lochs:
nft list set ip filter blackhole

#Fügen Sie die beiden Adressen manuell zum Set hinzu:
nft add element filter blackhole { 10.2.3.4, 10.23.1.42 }

Zusätzliche Befehle

Dies sind einige der zusätzlichen Befehle, die in nft enthalten sind.

Monitor

Mit dem Befehl monitor können Sie auf Netlink-Ereignisse warten, die vom Subsystem nf_tables im Zusammenhang mit dem Erstellen und Löschen von Objekten generiert wurden. Wenn ein Ereignis auftritt, druckt nft das überwachte Ereignis als Standardausgabe im XML-, JSON- oder nativen nft-Format.

Um Ereignisse zu filtern, die sich auf konkrete Objekte beziehen, eines der Schlüsselwörter "Tabellen", "Ketten", "Mengen", "Regeln", "Elemente", "Regelsatz" Benutzen.

Verwenden Sie die Schlüsselwörter "new" oder "destroy", um Ereignisse zu filtern, die sich auf eine bestimmte Aktion beziehen.

Drücken Sie ^ C, um den Überwachungsvorgang zu beenden.

#Hört auf alle Ereignisse und gibt einen Bericht im nativen nft-Format aus
% nft monitor

#Hört die hinzugefügte Tabelle und gibt einen Bericht im XML-Format aus
% nft monitor new tables xml

#Lauscht auf gelöschte Regeln und gibt einen Bericht im JSON-Format aus
% nft monitor destroy rules json

#Wartet auf neue und zerstörte Ketten im nativen nft-Format
% nft monitor chains

#Lauscht auf Regelsatzereignisse wie Tabellen, Ketten, Regeln, Mengen, Zähler und Kontingente im nativen nft-Format
% nft monitor ruleset

Fehlermeldung

Wenn ein Fehler erkannt wird, gibt nft die Zeile an, die den Fehler enthält, gibt die Position des fehlerhaften Teils im Eingabestream an und markiert den fehlerhaften Teil mit dem Übertrag (^). Ich werde es hochladen. Wenn der Fehler auf eine Kombination von zwei Ausdrücken oder Anweisungen zurückzuführen ist, wird der Teil, der die verletzende Einschränkung auferlegt, mit einem Tilder (~) markiert.

Für vom Kernel zurückgegebene Fehler kann nft nicht erkennen, welcher Teil der Eingabe den Fehler verursacht, und der gesamte Befehl wird markiert.

Fehler aufgrund eines falschen Ausdrucks


<cmdline>:1:19-22: Error: Interface does not exist
filter output oif eth0
                  ^^^^

Fehler durch eine ungültige Kombination zweier Ausdrücke


<cmdline>:1:28-36: Error: Right hand side of relational expression (==) must be constant
filter output tcp dport == tcp dport
                        ~~ ^^^^^^^^^

Vom Kernel zurückgegebener Fehler


<cmdline>:0:0-23: Error: Could not process rule: Operation not permitted
filter output oif wlan0
^^^^^^^^^^^^^^^^^^^^^^^

Kündigungsstatus

Bei Erfolg wird nft mit dem Status 0 beendet. Wenn ein nicht angegebener Fehler auftritt, wird er mit Status 1 beendet, Status 2 ist Status 3, wenn es sich um einen Speicherzuordnungsfehler handelt und der Netlink-Socket nicht geöffnet werden kann.

Verwandte Artikel

Es gibt ein offizielles Wiki unter https://wiki.nftables.org.

Recommended Posts

man nftables Japanische Übersetzung
Mann systemd japanische Übersetzung
sosreport Japanische Übersetzung
stromlinienförmige Erklärung japanische Übersetzung
Streamlit Tutorial Japanische Übersetzung
Dockerfile Reference Japanische Übersetzung
docker-compose --help japanische Übersetzung
Docker helfen japanische Übersetzung
Docker Build - Hilfe japanische Übersetzung
Japanische Übersetzung des sysstat-Handbuchs
Japanische Übersetzung des Linux-Handbuchs
Docker run --help japanische Übersetzung
Biopython Tutorial und Kochbuch Japanische Übersetzung (4.3)
Docker mysql Quick Reference Japanische Übersetzung
Japanische Übersetzung des e2fsprogs-Handbuchs
Biopython Tutorial und Kochbuch Japanische Übersetzung (4.1)
Biopython Tutorial und Kochbuch Japanische Übersetzung (4.5)
Biopython Tutorial und Kochbuch Japanische Übersetzung (4.8)
Biopython Tutorial und Kochbuch Japanische Übersetzung (4.7)
Japanische Übersetzung des man-db Handbuchs
Angemessene japanische Übersetzung von pytorch tensor_tutorial
Biopython Tutorial und Kochbuch Japanische Übersetzung (4.9)
Biopython Tutorial und Kochbuch Japanische Übersetzung (4.6)
Japanische Übersetzung des Util-Linux-Handbuchs
Biopython Tutorial und Kochbuch Japanische Übersetzung (4.2)
Biopython Tutorial und Kochbuch Japanische Übersetzung (4.4)
Japanische Übersetzung des iproute2-Handbuchs
Japanische Übersetzung des Apache Spark-Dokuments - Schnellstart
[Google App Engine] Benutzerobjekte (japanische Übersetzung)
Erste Schritte: 30 Sekunden für die japanische Übersetzung von Keras
Biopython Tutorial und Kochbuch Japanische Übersetzung (Kapitel 1, 2)
Japanische Übersetzung: PEP 20 - Das Zen von Python