iptables(8)

Från Wiki.linux.se -Linux wikipedia på Svenska.
Version från den 20 april 2026 kl. 09.57 av Admin (diskussion | bidrag) (→‎KOLOFON)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

iptables(8)

NAMN

iptables/ip6tables — administrationsverktyg för IPv4/IPv6-paketfiltrering och NAT

SYNOPSIS

iptables [-t tabell] {-A|-C|-D|-V} kedja regelspecifikation

ip6tables [-t tabell] {-A|-C|-D|-V} kedja regelspecifikation

iptables [-t tabell] -I kedja [regelnummer] regelspecifikation

iptables [-t tabell] -R kedja regelnummer regelspecifikation

iptables [-t tabell] -D kedja regelnummer

iptables [-t tabell] -S [kedja [regelnummer]]

iptables [-t tabell] {-F|-L|-Z} [kedja [regelnummer]] [alternativ...]

iptables [-t tabell] -N kedja

iptables [-t tabell] -X [kedja]

iptables [-t tabell] -P kedja policy

iptables [-t tabell] -E gammalt-kedjenamn nytt-kedjenamn

regelspecifikation := [matchningar...] [mål]

matchning := -m matchnamn [alternativ-för-matchning]

mål := -j målnamn [alternativ-för-mål]

BESKRIVNING

iptables och ip6tables används för att konfigurera, underhålla och inspektera tabeller med IPv4- och IPv6-regler för paketfiltrering i Linux-kärnan.

Flera olika tabeller kan definieras. Varje tabell innehåller ett antal inbyggda kedjor och kan också innehålla användardefinierade kedjor.

Varje kedja är en lista med regler som kan matcha en uppsättning paket. Varje regel anger vad som ska göras med ett paket som matchar. Detta kallas ett mål (target), och målet kan vara ett hopp till en användardefinierad kedja i samma tabell.

MÅL

En brandväggsregel anger kriterier för ett paket och ett mål. Om paketet inte matchar undersöks nästa regel i kedjan. Om det matchar avgör målets värde vad som händer härnäst.

Målet kan vara:

  • namnet på en användardefinierad kedja
  • ett av målen som beskrivs i iptables-extensions(8)
  • ett av specialvärdena ACCEPT, DROP eller RETURN
ACCEPT
släpp igenom paketet
DROP
kasta bort paketet
RETURN
sluta traversera denna kedja och återuppta vid nästa regel i den föregående (anropande) kedjan

Om slutet av en inbyggd kedja nås, eller om en regel i en inbyggd kedja med mål RETURN matchas, avgör kedjans policy paketets öde.

TABELLER

Det finns för närvarande fem oberoende tabeller. Vilka som finns tillgängliga beror på kärnans konfiguration och vilka moduler som är laddade.

-t, --table tabell
anger vilken tabell kommandot ska arbeta mot. Om kärnan är konfigurerad med automatisk modulladdning försöker systemet ladda rätt modul om den inte redan är laddad.

filter

Detta är standardtabellen om inget -t anges.

Den innehåller de inbyggda kedjorna:

  • INPUT — för paket som är avsedda för lokala sockets
  • FORWARD — för paket som routas genom maskinen
  • OUTPUT — för lokalt genererade paket

nat

Denna tabell används när ett paket som skapar en ny anslutning påträffas.

Den innehåller följande inbyggda kedjor:

  • PREROUTING — för att ändra paket så snart de kommer in
  • INPUT — för att ändra paket som är avsedda för lokala sockets
  • OUTPUT — för att ändra lokalt genererade paket före routning
  • POSTROUTING — för att ändra paket precis innan de lämnar systemet

IPv6-NAT stöds sedan kärna 3.7.

mangle

Denna tabell används för specialiserad modifiering av paket.

Fram till kärna 2.4.17 hade den två inbyggda kedjor:

  • PREROUTING
  • OUTPUT

Sedan kärna 2.4.18 stöds även:

  • INPUT
  • FORWARD
  • POSTROUTING

raw

Denna tabell används främst för att konfigurera undantag från anslutningsspårning tillsammans med målet NOTRACK.

Den registreras med högre prioritet i netfilter-hooks och anropas därför före ip_conntrack eller andra IP-tabeller.

Den innehåller:

  • PREROUTING — för paket som anländer via valfritt nätverksgränssnitt
  • OUTPUT — för paket som genereras av lokala processer

security

Denna tabell används för nätverksregler för Mandatory Access Control (MAC), till exempel sådana som aktiveras av målen SECMARK och CONNSECMARK.

MAC implementeras av Linux Security Modules som exempelvis SELinux.

security-tabellen anropas efter filter-tabellen, så att eventuella DAC-regler i filter får verkan innan MAC-regler.

Den innehåller:

  • INPUT
  • OUTPUT
  • FORWARD

ALTERNATIV

Alternativen som känns igen av iptables och ip6tables kan delas in i flera grupper.

KOMMANDON

Dessa alternativ anger vilken åtgärd som ska utföras. Endast ett av dem får anges på kommandoraden, om inget annat uttryckligen sägs.

-A, --append kedja regelspecifikation
lägg till en eller flera regler sist i den valda kedjan. Om käll- och/eller destinationsnamn löses till mer än en adress läggs en regel till för varje möjlig adresskombination.
-C, --check kedja regelspecifikation
kontrollera om en regel som matchar specifikationen finns i den valda kedjan. Detta använder samma logik som -D, men ändrar inte den befintliga konfigurationen. Returkoden anger om regeln hittades eller inte.
-D, --delete kedja regelspecifikation
-D, --delete kedja regelnummer
radera en eller flera regler från den valda kedjan. Regeln kan anges antingen som ett regelnummer eller som en regelspecifikation att matcha mot.
-I, --insert kedja [regelnummer] regelspecifikation
infoga en eller flera regler i den valda kedjan vid angivet regelnummer. Om regelnummer är 1 infogas regeln först i kedjan. Detta är också standard om inget regelnummer anges.
-R, --replace kedja regelnummer regelspecifikation
ersätt en regel i den valda kedjan. Om källa och/eller destination löses till flera adresser misslyckas kommandot. Regler numreras från 1.
-L, --list [kedja]
lista alla regler i den valda kedjan. Om ingen kedja väljs listas alla kedjor. Kommandot gäller den angivna tabellen; standard är filter.

Exempel:

iptables -t nat -n -L

Det används ofta tillsammans med -n för att undvika långsamma omvända DNS-uppslagningar.

Det är tillåtet att även ange -Z, så att kedjorna listas och nollställs atomiskt.

De exakta reglerna visas först när du använder:

iptables -L -v

eller iptables-save(8).

-S, --list-rules [kedja]
skriv ut alla regler i den valda kedjan. Om ingen kedja väljs skrivs alla kedjor ut, på liknande sätt som iptables-save.
-F, --flush [kedja]
töm den valda kedjan, eller alla kedjor i tabellen om ingen anges. Detta motsvarar att ta bort alla regler en efter en.
-Z, --zero [kedja [regelnummer]]
nollställ paket- och byteräknare i alla kedjor, eller endast i angiven kedja, eller endast i angiven regel. Kan kombineras med -L för att visa räknarna precis innan de nollställs.
-N, --new-chain kedja
skapa en ny användardefinierad kedja med det angivna namnet. Det får inte redan finnas ett mål med det namnet.
-X, --delete-chain [kedja]
radera den angivna kedjan. Det får inte finnas några referenser till kedjan. Kedjan måste också vara tom. Om inget argument anges raderas alla tomma kedjor i tabellen. Tomma inbyggda kedjor kan endast raderas med iptables-nft.
-P, --policy kedja mål
sätt policy för en inbyggd kedja. Policymålet måste vara antingen ACCEPT eller DROP.
-E, --rename-chain gammalt nytt
byt namn på en användardefinierad kedja. Detta är endast kosmetiskt och påverkar inte tabellens struktur.
-h
visa hjälptext

PARAMETRAR

Följande parametrar utgör en regelspecifikation.

-4, --ipv4
har ingen effekt i iptables och iptables-restore. Om en regel med -4 används med ip6tables-restore ignoreras den tyst. Detta gör det möjligt att ha IPv4- och IPv6-regler i samma regelfil.
-6, --ipv6
om en regel med -6 används med iptables-restore ignoreras den tyst. I andra fall blir det fel. Detta gör det möjligt att ha IPv4- och IPv6-regler i samma fil. Har ingen effekt i ip6tables och ip6tables-restore.
[!] -p, --protocol protokoll
protokollet som regeln eller paketet ska kontrolleras mot. Det kan vara tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp, mh, specialordet all, ett numeriskt värde eller ett protokollnamn från /etc/protocols. Ett ! framför inverterar testet. Värdet 0 motsvarar all.
[!] -s, --source adress[/ mask][',...]
källspecifikation. Adressen kan vara ett nätverksnamn, värdnamn, nätverksadress med mask eller en vanlig IP-adress. Värdnamn löses endast en gång innan regeln skickas till kärnan. Att använda namn som kräver fjärruppslagning, till exempel DNS, är en dålig idé. Masken kan vara en IPv4-nätmask eller ett tal som anger antal ettor från vänster. --src är ett alias. Flera adresser kan anges, men detta expanderar till flera regler vid -A.
[!] -d, --destination adress[/ mask][',...]
destinationsspecifikation. --dst är ett alias.
-m, --match match
ange en matchningsmodul. Matchningarna utgör villkoren under vilka målet aktiveras. De utvärderas från vänster till höger och med kortslutningslogik.
-j, --jump mål
ange vilket mål som ska användas om paketet matchar regeln. Målet kan vara en användardefinierad kedja, ett inbyggt specialmål eller en utökning.
-g, --goto kedja
fortsätt bearbetningen i en användarspecificerad kedja. Till skillnad från --jump kommer RETURN inte att återuppta bearbetningen i denna kedja utan i kedjan som anropade den via --jump.
[!] -i, --in-interface namn
namnet på gränssnittet genom vilket paketet togs emot. Gäller bara för kedjorna INPUT, FORWARD och PREROUTING. Om namnet slutar med + matchar alla gränssnitt som börjar med detta namn.
[!] -o, --out-interface namn
namnet på gränssnittet genom vilket paketet ska skickas ut. Gäller för kedjorna FORWARD, OUTPUT och POSTROUTING. Om namnet slutar med + matchar alla gränssnitt som börjar med detta namn.
[!] -f, --fragment
regeln gäller endast andra och senare IPv4-fragment av fragmenterade paket. Sådana paket kan inte matcha regler som specificerar portar eller ICMP-typ. Om ! används gäller regeln endast första fragment eller ofragmenterade paket. Detta alternativ gäller endast IPv4.
-c, --set-counters paket byte
initiera paket- och byteräknarna för en regel vid INSERT, APPEND eller REPLACE.

ANDRA ALTERNATIV

-v, --verbose
utförlig utmatning. Visar gränssnittsnamn, regelalternativ, TOS-masker samt paket- och byteräknare. För listning visas suffixen K, M eller G för 1000, 1 000 000 respektive 1 000 000 000, om inte -x används. Om alternativet anges flera gånger kan mer detaljerad felsökningsinformation visas.
-V, --version
visa programmets version och den kärn-API-version som används
-w, --wait [sekunder]
vänta på xtables-låset. Normalt avslutas programmet om låset inte kan tas. Med detta alternativ väntar det tills låset blir tillgängligt, antingen obegränsat eller så länge som anges.
-n, --numeric
numerisk utmatning. IP-adresser och portnummer visas numeriskt istället för som värdnamn, nätverksnamn eller tjänstenamn.
-x, --exact
visa exakta värden för paket- och byteräknare istället för avrundade värden.
--line-numbers
lägg till radnummer när regler listas
--modprobe= kommando
använd det angivna kommandot för att ladda nödvändiga moduler
--compat
endast för nft-varianter. Lägg till kompatibilitetsdata till en regels userdata för att underlätta tolkning av äldre versioner.

Miljövariabeln XTABLES_COMPAT kan användas för att åsidosätta standardinställningen.

LÅSFIL

iptables använder filen:

/run/xtables.lock

för att ta ett exklusivt lås vid start.

Miljövariabeln XTABLES_LOCKFILE kan användas för att ändra standardvärdet.

MATCHNINGS- OCH MÅLUTÖKNINGAR

iptables kan använda utökade moduler för paketmatchning och mål.

En lista över dessa finns i manualsidan:

iptables-extensions(8)

DIAGNOSTIK

Olika felmeddelanden skrivs till standard error.

Returkoder:

  • 0 — korrekt funktion
  • 2 — ogiltiga eller felaktigt använda kommandoradsparametrar
  • 3 — inkompatibilitet mellan kärna och användarrymd
  • 4 — resursproblem, till exempel upptaget lås, minnesallokeringsfel eller fel från kärnan
  • 1 — andra fel

BUGGAR

Buggar? Vad är det? ;-)

Du kan vilja titta på:

https://bugzilla.netfilter.org/

iptables avslutas omedelbart med felkod 111 om det upptäcker att det anropades som ett setuid-to-root-program.

iptables kan inte användas säkert på detta sätt eftersom det litar på delade bibliotek (matchningar och mål) som laddas vid körning, och sökvägen kan styras via miljövariabler.

KOMPATIBILITET MED IPCHAINS

Denna version av iptables liknar ipchains av Rusty Russell.

De viktigaste skillnaderna är:

  • kedjorna INPUT och OUTPUT traverseras endast för paket som kommer in till respektive genereras från den lokala värden
  • varje paket passerar därför normalt bara en av tre kedjor, förutom loopback-trafik
  • -i syftar på inmatningsgränssnittet
  • -o syftar på utmatningsgränssnittet
  • båda kan användas för paket som går genom FORWARD

De olika formerna av NAT har separerats ut. Med standardtabellen filter fungerar iptables som en ren paketfiltermekanism med valfria utökningsmoduler.

Följande alternativ hanteras därför annorlunda:

-j MASQ
-M -S
-M -L

Det finns även flera andra ändringar i iptables.

SE ÄVEN

Dokumenten:

  • packet-filtering-HOWTO beskriver paketfiltrering med iptables
  • NAT-HOWTO beskriver NAT
  • netfilter-extensions-HOWTO beskriver utökningar som inte finns i standarddistributionen
  • netfilter-hacking-HOWTO beskriver netfilters interna funktion

Se även:

https://www.netfilter.org/

FÖRFATTARE

Rusty Russell skrev ursprungligen iptables, i tidig konsultation med Michael Neuling.

Marc Boucher fick Rusty att överge ipnatctl genom att argumentera för ett generiskt ramverk för paketurval i iptables. Han skrev sedan mangle-tabellen, owner-matchningen, mark-funktionaliteten och gjorde mycket annat.

James Morris skrev TOS-målet och tos-matchningen.

Jozsef Kadlecsik skrev målet REJECT.

Harald Welte skrev målen ULOG och NFQUEUE, det nya libiptc, samt TTL-, DSCP- och ECN-matchningar och mål.

Netfilter Core Team består av:

  • Jozsef Kadlecsik
  • Pablo Neira Ayuso
  • Eric Leblond
  • Florian Westphal
  • Arturo Borrero Gonzalez

Tidigare medlemmar i kärnteamet är:

  • Marc Boucher
  • Martin Josefsson
  • Yasuyuki Kozakai
  • James Morris
  • Harald Welte
  • Rusty Russell

Man-sidan skrevs ursprungligen av Herve Eychenne <rv@wallfire.org>.

VERSION

Denna manualsida gäller för iptables/ip6tables 1.8.11.

KOLOFON

Denna sida är en del av projektet iptables (administrera och underhålla paketfilterregler).

Information om projektet finns på:

http://www.netfilter.org/

Om du har en felrapport för denna manualsida, se:

http://bugzilla.netfilter.org/

Denna sida hämtades från projektets Git-arkiv:

git://git.netfilter.org/iptables

den 2026-01-16. Vid den tidpunkten var datumet för den senaste commit som hittades i arkivet 2025-11-27.

Om du upptäcker renderingsproblem i denna HTML-version av sidan, eller tror att det finns en bättre eller mer uppdaterad källa för sidan, eller om du har rättelser eller förbättringar till informationen i denna kolofon (som inte är en del av originalmanualsidan), skicka e-post till:

man-pages@man7.org

Sidslut

Orginalhemsidan på Engelska :https://man7.org/linux/man-pages/man8/iptables.8.html Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.