Iptables
- iptables -[ADC] chain rule-specification [options]
- iptables -I chain [rulenum] rule-specification [options]
- iptables -R chain rulenum rule-specification [options]
- iptables -D chain rulenum [options]
- iptables -[LFZ] [chain] [options]
- iptables -N chain
- iptables X [chain]
- iptables -P chain target [options]
- iptables -E old-chain-name new-chain-name
Targets
- ACCEPT ... paket projde
- DROP ... paket se zahodí
- QUEUE ... paket se předá do userspace (pokud je to povolený v kernelu)
- RETURN ... paket se vrátí do předchozího řetězce
Tabulky
- -t, --table table ... specifikuje, se kterou tabulkou se bude pracovat (kernel autoloadne modul)
- filter ... výchozí tabulka, obsahuje chainy INPUT (pakety do stroje), FORWARD (skrz), OUTPUT (ven)
- nat ... pro pakety vytvářející nová spojení, PREROUTING, OUTPUT, POSTROUTING
- mangle ... INPUT, FORWARD, POSTROUTING
Příkazy
- -A,--append chain rule-specification ... přidání pravidla do určitého chainu
- -D,--delete chain rule-specification ... smaže určité pravidlo
- -D,--delete chain rulenum ... smaže pravidlo na řádku rulenum
- -I,--insert chain [rulenum] rule-specification ... vloží pravidlo na řádek rulenum
- -R,--replace chain rulenum rule-specification ... nahradí pravidlo na řádek rulenum
- -L,--list [chain] ... vypíše všechna pravidla nebo pravidla v uričém chainu (s -n nedělá DNS lookups)
- -F,--flush [chain] ... smaže pravidle (v chainu)
- -Z,--zero [chain] ... vymaže počítadla paketů
- -N,--new-chain chain ... založí nový chain
- -X,--delete-chain [chain] ... mazání řetězců
- -P,--policy chain target ... nastavení polici pro vestavěné řetězce
- -E,--rename-chain old new .. přejmenování
- -h .. help
Parametry
- -p,--protocol [!] protocol ... tcp,udp,icmp,all,číslo
- -s,--source [!] address[/mask] ... zdrojová adresa, alias --src
- -d,--destination [!] address[/mask] ... cílová adresa, alias --dst
- -j,--jump target ... co dělat s paketem
- -i,--in-interface [!] name ... jméno rozhraní na kterém paket přijímáme (eth+ = všechny rozhraní s názvem "eth"), jen pro pakety vstupující do INPUT,FORWARD,PREROUTING
- -o,--out-interface [!] name ... jméno rozhraní na kterém paket odesíláme, FORWARD,OUTPUT,POSTROUTING
- [!] -f,--fragment ... platí pro fragmenty, s ! platí jen pro hlavičky (první paket) nebo nefragmentované pakety
- -c,--set-counters PKTS BYTES ... nastavuje paket a bytes počítadla (během INSERT,APPEND,REPLACE)
- -v,--verbose ... ukecanost
- -n,--numeric ... nedělá dns dotazz
- -x,--exact ... plná čísla, nepřepočítává countery při listu na MB, GB, etc
- --line-numbers ... při listingu zobrazuje čísla řádek (rulenum)
- --modprobe=command ... při vkládání pravidel nahraje moduly
match extensions pro tcp
- --source-port [!] port[:port] ... zdrojový port nebo rozsah portů, alias --sport
- --destination-port [!] port[:port] ... cílový port nebo rozsah portů, alias --sport
- --tcp-flags [!] mask comp ... match pro pakety s příznakem, SYN ACK FIN RST URG PSH ALL NONE
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN ... platí jen pro pakety se SYN flagem nasteveno a ACK,FIN a RST nenastaveno
- [!] --syn ... match pro pakety se SYN bez ACK a FIN
- --tcp-option [!] number ... match pokud je TCP option nastaveno
- --mss value[:value] ... match TCP SYN nebo SYN/ACK se specifickou hodnotou MSS (max velikosti paketu)
match extensions pro udp
- --source-port [!] port[:port] ... zdrojový port nebo rozsah portů, alias --sport
- --destination-port [!] port[:port] ... cílový port nebo rozsah portů, alias --sport
match extensions pro icmp
- --icmp-type [!] typename ... match pro určité icmp (iptables -p icmp -h)
- --mac-source [!] address ... match pro mac adresu ve formátu xx:xx:xx:xx:xx:xx pro PREROUTING,FORWARD,INPUT
match extensions pro limit
- --limit rate ... def 3/hour (/second,/minute,/hour,/day)
- --limit-burst number ... maximum paketů co jsou match pro pravidlo na začátku, def 5
Layer 7 filter modul ipt_layer7
iptables ... -m layer7 --l7proto jmeno -j ...
QoS pro typ protokolu
iptables -t mangle -A POSTROUTING -m layer7 --l7proto imap -j MARK --set-mark 3 tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 3 fw flowid 1:3
Pocet paketu, ve kterych layer7 filter cmucha se nastavuje v
/proc/net/layer7_numpackets echo 16 > /proc/net/layer7_numpackets