[OpenBSD]

[Předchozí: Seznamy a Makra] [Obsah] [Další: Filtrování paketů]

PF: Tabulky


Obsah


Úvod

Tabulka se používá k uložení skupiny IPv4 a/nebo IPv6 adres. Vyhledávání v tabulce jsou velmi rychlá a spotřebují méně paměti a procesorového času než seznamy. Z těchto důvodů je tabulka ideální pro udržování velké skupiny adres, protože vyhledávací čas v tabulce s 50.000 adresami je jen nepatrně větší oproti tabulce s 50 adresami. Tabulky mohou být použity nasledujícími způsoby:

Tabulky se vytvářejí buď v pf.conf nebo použitím pfctl(8).

Konfigurace

V pf.conf se tabulky vytvářejí pomocí table direktivy. Nasledující atributy mohou být specifikovány pro každou tabulku:

Napří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

Addresses can also be specified using the negation (or "not") modifier such as:

table <goodguys> { 192.0.2.0/24, !192.0.2.5 }

Tabulka goodguys bude nyní platná pro všechny adresy v 192.0.2.0/24 sití kromě 192.0.2.5.

Všimněte si, že jména tabulek jsou vždy uzavřena do < > špičatých závorek.

Tabulky mohou být také vytvořeny z textových souborů obsahujících IP adresy a sítě:

table <spammers> persist file "/etc/spammers"

block in on fxp0 from <spammers> to any

Soubor /etc/spammers může obsahovat seznam IP adres a/nebo CIDR bloky sítí, jeden na každý řádek. Jakýkoliv řádek začínající s # je považován za komentář a ignorován.

Manipulace pomocí pfctl

Tabulky je možno spravovat za chodu pomocí pfctl(8). Například pro přidání záznamů do <spammers> tabulky vytvořené v předchozím kroku:
# pfctl -t spammers -T add 218.70.0.0/16

Také to vytvoří <spammers> tabulku pokud ještě neexistovala. Pro vypsání adres v tabulce:

# pfctl -t spammers -T show
Přepínač -v může být použit s -T show pro zobrazení statistik pro každý záznam v tabulce. Pro odstranění adres z tabulky:
# pfctl -t spammers -T delete 218.70.0.0/16

Pro více informací o manipulaci tabulek s pfctl si prosím přečtěte pfctl(8) man stránku.

Specifikování adres

Mimo specifikování pomocí IP adres mohou být systémy specifikovány take pomocí jejich jména. Když je jméno přeloženo na IP adresu, tak všechny výsledné IPv4 a IPv6 adresy jsou uloženy do tabulky. IP adresy mohou také být do tabulky zadány specifikováním platného jména síťového rozhraní, skupiny síťového rozhraní nebo klíčového slova self. Tabulka poté bude obsahovat všechny IP adresy přiřazené pro danné rozhraní nebo skupinu nebo systém (včetně lokálního rozhraní).

Jediný limit při specifikování adres je, že 0.0.0.0/0 a 0/0 nebudou v tabulkách fungovat. Alternativou je zadat adresu na "tvrdo" nebo použít makro.

Vyhledání adres

Vyhledání adresy v tabulce vrátí nejbližší odpovídající záznam. To umožňuje vytváření tabulek jako např.:
table <goodguys> { 172.16.0.0/16, !172.16.1.0/24, 172.16.1.100 }

block in on dc0
pass  in on dc0 from <goodguys>

Jakýkoliv paket přicházející přes dc0 bude mít jeho zdrojovou adresu vyhledánu v tabulce <goodguys>:

[Předchozí: Seznamy a Makra] [Obsah] [Další: Filtrování paketů]


[back] www@openbsd.org
$OpenBSD: tables.html,v 1.11 2012/11/04 08:15:48 ajacoutot Exp $