[OpenBSD]

[Wstecz: Listy i makra] [Spis treści] [Dalej: Filtrowanie pakietów]

PF: Tabele


Spis treści


Wprowadzenie

Tabele są wykorzystywane do przechowywania grup adresów IPv4 i/lub IPv6. Wyszukiwania w tabelach są bardzo szybkie oraz zużywają mniej pamięci i czasu procesora niż listy. Z tego powodu, tabela jest idealna do przechowywania dużej grupy adresów, albowiem czas wyszukiwania w tabeli z 50,000 adresów jest tylko nieznacznie większy niż w tabeli z 50 adresami. Tabele mogą być efektywnie stosowane w wielu miejscach:

Tabele są tworzone albo w pf.conf albo przy pomocy pfctl(8).

Konfiguracja

W pf.conf tabele są tworzone przy pomocy dyrektywy table. Następujące atrybuty mogą być podawane dla każdej tabeli:

Przykład:

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 mogą być także podawane z użyciem modyfikatora negacji (lub "not") jak np:

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

Tabela goodguys będzie teraz pasowała do wszystkich adresów w sieci 192.0.2.0/24 poza adresem 192.0.2.5.

Zwróć uwagę, że nazwy tabel zawsze otoczone są nawiasami trójkątnymi (< >).

Tabele mogą być także zainicjowane na podstawie plików tekstowych zawierających listy adresów IP i sieci:

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

block in on fxp0 from <spammers> to any

Plik /etc/spammers zwiera listę adresów IP - i/lub bloki sieciowe CIDR, każdy w oddzielnej linii. Każda linia zaczynająca się od # jest traktowana jako komentarz i ignorowana.

Manipulacje za pomocą pfctl

Tabelami można manipulować ręcznie poprzez program pfctl(8). Dla przykładu, aby dodać wpisy do utworzonej wyżej tabeli <spammers> można użyć:
# pfctl -t spammers -Tadd 218.70.0.0/16

Komenda ta utworzy tabelę <spammers>, jeśli jeszcze nie istnieje. Aby wyświetlić adresy z tabeli stosuje się:

# pfctl -t spammers -Tshow
Argument -v może także być użyty wraz z -Tshow, aby wyświetlić statystyki dla każdego z wpisów. Aby usunąć adres z tabeli korzysta się z:
# pfctl -t spammers -Tdelete 218.70.0.0/16

Więcej informacji o manipulowaniu tabelami przy pomocy pfctl dostępnych jest w manualu pfctl(8).

Specyfikowanie adresów

Host może być zdefiniowany nie tylko przy pomocy adresu IP ale także przez podanie jego nazwy. Kiedy nazwa hosta rozwijana jest do adresu IP, wszystkie otrzymywane w ten sposób adresy IPv4 i IPv6 są wstawiane do tabeli. Adresy IP mogą być także wprowadzane do tabeli poprzez podanie odpowiedniej nazwy interfejsu sieciowego lub słowa kluczowego self. W takim wypadku, wszystkie adresy przypisane do tego interfejsu(ów) będą dodane do tabeli.

Dopasowywanie adresu

Wyszukanie adresu w tabeli zwróci najlepiej pasujący wpis. Pozwala to na tworzenie takich tabel jak ta:
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

Adres każdego pakietu przychodzącego na interfejsie dc0 będzie porównywany z tabelą <goodguys>:

[Wstecz: Listy i makra] [Spis treści] [Dalej: Filtrowanie pakietów]


[wstecz] www@openbsd.org
Originally [OpenBSD: tables.html,v 1.9 ]
$Translation: tables.html,v 1.5 2004/01/12 17:37:46 pl-team Exp $
$OpenBSD: tables.html,v 1.5 2004/01/16 21:01:34 jufi Exp $