[Předchozí: Seznamy a makra]
[Obsah]
[Dále: Options]
PF: Tabulky
Obsah
Introduction
Tabulky jsou používány k uložení skupiny IPv4 a/nebo IPv6 adres.
Vyhledávání v tabulkách je velmi rychlé a potřebuje méně paměti a
procesorového času než seznamy.
Z tohoto důvodu je tabulka ideální pro uložení velké skupiny adres,
protože vyhledání v tabulce obsahující 50.000 adres je jen o málo
pomalejší než v tabulce s 50 adresami. Tabulky mohou být použity namísto
zdrojových a cílových adres v pravidlech
filter,
scrub,
nat,
a redirection,
ale nemohou být použity jako cílové adresy v pravidlech nat
nebo v routovacích volbách (route-to, reply-to,
dup-to) filtrovacích pravidel. Tabulky se vytvářejí v souboru
/etc/pf.conf nebo pomocí
pfctl(8).
Konfigurace
V souboru pf.conf se tabulky vytvářejí direktivou
table. Pro každou tabulku mohou být specifikovány následující
vlastnosti:
- const - obsah této tabulky nemůže být změněn poté, co je
vytvořena. Pokud tento atribut není specifikován,
pfctl(8) může být kdykoliv použit k přidání nebo odebrání
adresy z tabulky, i při běhu v úrovni
securelevel(7) dva nebo vyšší.
- persist - způsobí, že jádro ponechá tabulku v paměti i když
ji nepoužívá žádné pravidlo. Bez této volby jádro automaticky odstraní
tabulku při odstraňovaní posledního pravidla na ní odkazujícího.
Příklad:
table <goodguys> { 192.0.2.0/24 }
table <rfc1918> const { 192.168.0.0/16, 172.16.0.0/12, \
10.0.0.0/8 }
table <spammers> persist
block in on fxp0 from { <rfc1918>, <spammers> } to any
pass in on fxp0 from <goodguys> to any
Adresy mohou být také specifikovány pomocí negačního modifikátoru (nebo
"not"), např.:
table <goodguys> { 192.0.2.0/24, !192.0.2.5 }
Tabulka goodguys nyní odpovídá všem adresám v síti 192.0.2.0/24
s výjimkou 192.0.2.5.
Všimněte si, že názvy tabulek jsou vždy uzavřeny mezi < >.
Tabulky také mohou být načteny z textového souboru obsahujícího seznam
IP adres a sítí:
table <spammers> persist file "/etc/spammers"
block in on fxp0 from <spammers> to any
Soubor /etc/spammers y obsahoval seznam IP adres, na každém
řádku jednu. Každá řádka začínající # je považována za komentář
a je ignorována.
Manipulace pomocí pfctl
Tabulky mohou být měněny za běhu pomocí
pfctl(8).
Například přidání položky do tabulky <spammers> vytvořené výše:
# pfctl -t spammers -Tadd 218.70.0.0/16
Tím bude také vytvořena tabulka <spammers>, pokud ještě
neexistovala. Pro vypsání adres v tabulce:
# pfctl -t spammers -Tshow
Volba -v může být také použita spolu s -Tshow k
vypsání statistik pro každou položku tabulky. Odstranění adresy z
tabulky:
# pfctl -t spammers -Tdelete 218.70.0.0/16
Další informace o manipulování s tabulkami pomocí pfctl
naleznete v
pfctl(8).
Specifikování adres
Kromě specifikování IP adresou může být počítač také určen svým
hostname. když je jméno převedeno na IP adresu, všechny výsledné IPv4 a
IPv6 adresy jsou přidány do tabulky. IP adresy mohou být také zadány
určením platného názvu rozhraní nebo klíčovým slovem self,
které způsobí přidání všech adres asociovaných s rozhraním(i) do
tabulky.
Address Matching
Vyhledání adresy v tabulce vrátí nejpřesněji odpovídající položku. To
umožňuje vutvoření tabulky jako třeba:
table <goodguys> { 172.16.0.0/16, !172.16.1.0/24, 172.16.1.100 }
block in on dc0 all
pass in on dc0 from <goodguys> to any
Zdrojová adresa každého paketu procházejícího rozhraním dc0 bude
porovnána s tabulkou <goodguys>:
- 172.16.50.5 - nejpřesnějsí shoda je 172.16.0.0/16; paket odpovídí
tabulce a bude puštěn
- 172.16.1.25 - nejpřesnější shoda je !172.16.1.0/24; paket odpovídá
položce tabulku, ale tato položko je negovaná (používá modifikátor "!");
paket neodpovídá tabulce a bude zablokován
- 172.16.1.100 - přesně odpovídá 172.16.1.100; paket odpovídá tabulce
a bude puštěn
- 10.1.4.55 - neodpovídá tabulce a bude zablokován
[Předchozí: Seznamy a makra]
[Obsah]
[Dále: Options]
www@openbsd.org
Originally [OpenBSD: tables.html,v 1.6 ]
$Translation: tables.html,v 1.3 2003/11/10 13:34:59 horacio Exp $
$OpenBSD: tables.html,v 1.3 2003/11/10 14:42:48 horacio Exp $