<!doctype linuxdoc system>

<!-- Ten dokument to Rozszerzenia netfilter HOWTO -->

<!-- $Id: netfilter-extensions.sgml,v 1.1 2002/08/21 12:47:07 szopen Exp $ -->

<article>

<!-- Title information -->

<title>Rozszerzenia Netfilter HOWTO</title>
<author>Fabrice Marie <tt>fabrice@celestix.com</tt> lista pocztowa <tt>netfilter-devel@lists.samba.org</tt></author>
<date>Wersja oryginalna: 1.20</date>
<p>Oryginał tego dokumentu znajduje się pod adresem: <url url="http://netfilter.samba.org/"></>
<author>Tłumaczenie: Łukasz Bromirski, <tt>l.bromirski@mr0vka.eu.org</tt></author>
<date>Wersja tłumaczenia: 1.1, $Date: 2002/08/22 21:29:41 $</date>
<p>Oryginał tego tłumaczenia znajduje się pod adresem: <url url="http://mr0vka.eu.org/docs/tlumaczenia/netfilter-extensions.html"></p>

<abstract>
Dokument ten opisuje jak zainstalować i używać rozszerzeń do iptables dla infrastruktury netfilter.
</abstract>

<!-- Table of contents -->
<toc>

<!-- Begin the document -->

<sect>Wprowadzenie<label id="intro">

<p>Witam. Mam świetną okazję by podziękować wielu ludziom za całą masę
czasu spędzoną przy kodowaniu, testowaniu, zgłaszaniu błędów i używaniu
netfilter. Dzięki wam wszystkim !!</p>

<p>Ten dokument zakłada, że przeczytałeś i zrozumiałeś dokument Rusty'ego
<url url="http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO.html" name="Filtrowanie pakietów w Linuksie 2.4 HOWTO">.
Zakładam również, że wiesz jak prawidłowo skompilować i zainstalować kernel.</p>

<p>Dystrybucja <tt>iptables</tt> zawiera pewne rozszerzenia, które nie są
używane przez zwykłych użytkowników i tak naprawdę są nadal w jakimś
stopniu eksperymentalne, lub czekają na wprowadzenie do kernela. Zwykle
nie kompiluje się ich, chyba, że jasno sobie tego zażyczysz.</p>

<p>Najnowsza wersja tego dokumentu powinna być dostępna pod adresem
<url url="http://www.netfilter.org/documentation/index.html#HOWTO">.</p>

<p>Celem tego HOWTO jest pomoc ludziom, którzy zaczynają pracę z rozszerzeniami
netfilter, przez wyjaśnienia jak je zainstalować a następnie używać.</p>

<p>(C) 2001 Fabrice MARIE. Na licencji GNU GPL.</p>

<sect>Patch-O-Matic

<sect1>Co to jest Patch-O-Matic ?

<p>Plik Makefile <tt>iptables</tt> zawiera funkcjonalność nazwaną `patch-o-matic' (lub `p-o-m').
p-o-m kieruje twoją drogą przez proces selekcji łat, które możesz chcieć zaaplikować,
oraz automatycznie dodaje je do kernela.</p>

<p>Po pierwsze, powinieneś ściągnąć najnowsze drzewo CVS, by być pewnym że
pracujesz z najnowszymi wersjami rozszerzeń. By to zrobić, wykonaj:

<tscreen><verb>
# cvs -d :pserver:cvs@pserver.samba.org:/cvsroot login
# cvs -z3 -d :pserver:cvs@pserver.samba.org:/cvsroot co netfilter
</verb></tscreen>

<p>Stworzy to główny katalog `netfilter/' a następnie ściągnie do niego
wszystkie potrzebne pliki.</p>

<p>Upewnij się, że źródła twojego kernela są w `/usr/src/linux/'. Jeśli
z jakiś powodów kernel, który będziesz łatał nie znajduje się w tym katalogu,
musisz ustawić zmienną środowiskową KERNEL_DIR na katalog zawierający
źródła kernela:

<tscreen><verb>
# export KERNEL_DIR=/ścieżka/do/linuksa
</verb></tscreen>

<p>
 Upewnij się również, że wykonałeś sprawdzenie <bf>zależności</bf> ( ang. <em>dependencies</em> ).
 Jeśli nie jesteś pewien:

<tscreen><verb>
# cd /usr/src/linux/
# make dep
</verb></tscreen>

<p>Możesz teraz przejść do katalogu netfilter, wejść do katalogu `userspace/'
i wykonać p-o-m.

<sect1>Praca z Patch-O-Matic

<p>Uruchommy w katalogu `userspace/' p-o-m :

<tscreen><verb>
# make patch-o-matic

Welcome to Rusty's Patch-o-matic!

Each patch is a new feature: many have minimal impact, some do not.
Każda łata to nowa funkcjonalność: wiele z nich wnosi niewielkie zmiany, ale niektóre nie.
Almost every one has bugs, so I don't recommend applying them all!
Prawie każda ma jakieś błędy, więc nie rekomenduję nakładania ich w ogóle!
-------------------------------------------------------

Already applied: 2.4.1 2.4.4
Już nałożone: 2.4.1 2.4.4
Testing... name_of_the_patch NOT APPLIED ( 2 missing files)
Testuje... nazwa_łatki NIE NAŁOŻONA ( znaleziono 2 brakujące pliki )
The name_of_the_patch patch:
nazwa_łatki:
   Here usually is the help text describing what
   Tutaj znajduje się zwykle tekst objaśniający
   the patch is for, what you can expect from it,
   do czego jest łata, czego możesz się po niej spodziewać,
   and what you should not expect from it.
   a czego nie.
Do you want to apply this patch [N/y/t/f/q/?]
Czy chcesz nałożyć łatkę
</verb></tscreen>

<p>p-o-m przejdzie przez wszystkie łaty. Jeśli zostały już nałożone, zobaczysz
napis `Already applied:' w pierwszej linii. Jeśli nie, wyświetli nazwę łaty
z krótkim objaśnieniem. p-o-m poinformuje również o tym, co się dzieje:
`NOT APPLIED ( n missing files)' oznacza po prostu, że łaty jeszcze nie nałożono,
a `NOT APPLIED ( n rejects out of n hunks)' oznacza generalnie, że:

<enum>
<item>Łata nie może być nałożona, lub
<item>że łata już została włączona do kernela, który próbujesz łatać.
re trying to patch.
</enum>

Na koniec, zapyta o twoją decyzję - łatać czy nie.

<itemize>
<item>Naciśnij po prostu Enter jeśli nie chcesz jej aplikować.
<item>Naciśnij `y' jeśli chcesz by p-o-m przetestował łatę i zaaplikował ją;
jeśli test się nie powiedzie, poinformuje o tym i zapyta ponownie o
decyzję; jeśli wszystko pójdzie dobrze, zobaczysz nazwę łatki i
tekst `Already Applied'.
<item>Naciśnij `t' jeśli chcesz tylko przetestować łatę.
<item>Naciśnij `f' by p-o-m wymusił zainstalowanie łaty.
<item>Możesz również nacisnąć `q', jeśli chcesz opuścić p-o-m.
</itemize>

<p>Dobrą zasadą jest przeczytanie opisu łaty zanim się ją nałoży. Ponieważ
obecnie jest bardzo dużo oficjalnych łat dla patch-o-matic (i prawdopodobnie
jeszcze więcej nieoficjalnych) absolutnie nie zalecam stosowania ich wszystkich !
Powinieneś poważnie przemyśleć swój wybór i nałożyć tylko te, których faktycznie
potrzebujesz, nawet jeśli oznacza to rekompilację netfilter gdy będziesz
potrzebował więcej łat.</p>

<p>Stworzono nową wersję patch-o-matic, która pokazuje tylko łaty o których
wiadomo, że nałożą się bezproblemowo, lub przynajmniej nie zniszczą efektu
innych łat. By ją wywołać, napisz :

<tscreen>
<verb>
# make most-of-pom
</verb>
</tscreen>

<p>Działa to tak samo jak patch-o-matic, jeśli chodzi o łatanie. Zaoszczędzisz
sobie po prostu oglądania łat tylko dla programistów.</p>

<sect1>A co dalej ?

<p>W momencie gdy nałożyłeś już wszystkie łaty, które chciałeś, następnym krokiem będzie
rekompilacja kernela i zainstalowanie go. To HOWTO tego nie objaśni, przeczytaj
<url url="http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html" name="Linux Kernel HOWTO">.</p>

<p>Podczas konfiguracji swojego kernela, zauważysz nowe opcje w
`Networking Options -> Netfilter Configuration'. Wybierz opcje, których potrzebujesz,
przekompiluj i zainstaluj nowy kernel.</p>

<p>Jeśli już się to stało, możesz zainstalować paczkę `iptables' z katalogu 
`userspace/' w ten sposób:

<tscreen>
<verb>
# make all install
</verb>
</tscreen>

<p>I to wszystko! Twoje nowe <tt>iptables</tt> zostało właśnie zainstalowane!
Teraz czas na zabawę z nową funkcjonalnością.</p>

<sect>Nowe testy netfilter

<p>W tej sekcji postaram się omówić użycie nowych testów. Łaty wymieniane będą
w kolejności alfabetycznej. Nie poruszymy łat, które powodują uszkadzanie
innych łat, choć być może kiedyś tak się stanie.</p>

<p>Ogólnie rzecz biorąc, możesz uzyskać pomoc dla testów wpisując:

<tscreen>
<verb>
# iptables -m test_o_który_ci_chodzi --help
</verb>
</tscreen>

<p>Wyświetli to normalną pomoc iptables, oraz dodatkowe informacje
dotyczące `testu_o_który_ci_chodzi' na końcu.</p>

<sect1>Łata ah-esp

<p>Przygotowana przez Yon Uriarte &lt;yon@astaro.de&gt; dodaje dwa nowe testy:

<itemize>
<item>`ah' : pozwala dopasowywać pakiety AH na podstawie <bf>Indeksu Parametrów Bezpieczeństwa</bf>
      ( ang. <em>Security Parameter Index, SPI</em> )
<item>`esp': pozwala dopasowywać pakiety ESP na podstawie ich SPI
</itemize>

<p>Łata będzie użyteczna dla ludzi używających IPSEC, którzy chcą kontrolować
połączenia na podstawie ich SPI.</p>

<p>Na przykład, by odrzucić pakiety AH które mają SPI równe 500:

<tscreen><verb>
# iptables -A INPUT -p 51 -m ah --ahspi 500 -j DROP

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       ipv6-auth--  anywhere             anywhere           ah spi:500
</verb></tscreen>

<p>Opcje dostępne dla testu `ah' to:

<itemize>
<item><verb>--ahspi [!] spi[:spi]</verb>   -> match spi (zakres)
</itemize>

<p>Test `esp' działa dokładnie tak samo:

<tscreen><verb>
# iptables -A INPUT -p 50 -m esp --espspi 500 -j DROP

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       ipv6-crypt--  anywhere             anywhere           esp spi:500 
</verb></tscreen>

<p>Opcje dostępne dla testu `esp' to:

<itemize>
<item><verb>--espspi [!] spi[:spi]</verb>  -&gt; match spi (zakres)
</itemize>

<p>Nie zapomnij podać właściwego protokołu, czyli `-p 50' lub `-p 51'
( dla odpowiednio `esp' i `ah' ), ponieważ w innym przypadku nie powiedzie
się dopisanie reguły do łańcucha.</p>

<sect1>Łata iplimit

<p>Łata przygotowana przez Gerd Knorr &lt;kraxel@bytesex.org&gt; dodaje nowy test,
pozwalający na ograniczanie jednoczesnych połączeń TCP z konkretnej sieci
lub komputera.</p>

<p>
 Na przykład, ograniczmy ilość jednoczesnych połączeń HTTP wykonywanych przez
 pojedynczy adres IP do 4:

<tscreen><verb>
# iptables -A INPUT -p tcp --syn --dport http -m iplimit --iplimit-above 4 -j REJECT

# iptables --list
Chain INPUT (policy ACCEPT)
target   prot opt source    destination         
REJECT   tcp  --  anywhere  anywhere     tcp dpt:http flags:SYN,RST,ACK/SYN #conn/32 > 4 reject-with icmp-port-unreachable
</verb></tscreen>

<p>Możesz również ograniczyć liczbę jednoczesnych połączeń na przykład dla
całej klasy A:

<tscreen><verb>
# iptables -A INPUT -p tcp --syn --dport http -m iplimit --iplimit-mask 8 --iplimit-above 4 -j REJECT

# iptables --list
Chain INPUT (policy ACCEPT)
target   prot opt source    destination         
REJECT   tcp  --  anywhere  anywhere     tcp dpt:http flags:SYN,RST,ACK/SYN #conn/8 > 4 reject-with icmp-port-unreachable
</verb></tscreen>

<p>Opcje dostępne dla testu `iplimit' to:

<itemize>
<item><verb>[!] --iplimit-above n</verb> - pasuje jeśli ilość istniejących połączeń nie jest wyższa niż n
<item><verb>--iplimit-mask n</verb> - grupuje komputery przez użycie maski
</itemize>

<sect1>Łata ipv4options

<p>Łata autorstwa Fabrice MARIE &lt;fabrice@celestix.com&gt; dodaje nowy test,
pozwalający dopasowywać pakiety na podstawie ustawionych w nich opcjach IP.</p>

<p>Na przykład, odrzućmy wszystkie pakiety z ustawioną opcją <bf>zapisz trasę</bf>
(ang.<em>record-route</em>) lub <bf>stempel czasu</bf> (ang.<em>timestamp</em>):

<tscreen><verb>
# iptables -A INPUT -m ipv4options --rr -j DROP
# iptables -A INPUT -m ipv4options --ts -j DROP

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            IPV4OPTS RR
DROP       all  --  anywhere             anywhere            IPV4OPTS TS
</verb></tscreen>

<p>Opcje dostępne dla testu `ipv4options' to:

<itemize>
<item><verb>--ssrr</verb> - pasuje do pakietów z ustawioną flagą `strict source routing'
<item><verb>--lsrr</verb> - pasuje do pakietów z ustawioną flagą `loose  source routing'
<item><verb>--no-srr</verb> - pasuje do pakietów bez ustawionej flagi `source routing'
<item><verb>--rr</verb> - pasuje do pakietów z ustawioną flagą `record route flag'
<item><verb>[!] --ts</verb> - pasuje do pakietów z ustawioną flagą `timestamp'
<item><verb>[!] --ra</verb> - pasuje do pakietów z ustawioną flagą `router-alert'
<item><verb>[!] --any-opt</verb> - pasuje do pakietów z ustawioną przynajmniej jedną opcją
(lub bez opcji IP jeśli użyje się negacji (!)).
</itemize>

<sect1>Łata length

<p>Łata autorstwa James Morris &lt;jmorris@intercode.com.au&gt; dodaje nowy test,
pozwalający dopasowywać pakiety na podstawie ich długości.</p>

<p>Na przykład, odrzućmy wszystkie pingi o długości większej niż 85 bajtów:

<tscreen><verb>
# iptables -A INPUT -p icmp --icmp-type echo-request -m length --length 85:0xffff -j DROP

# ptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  anywhere             anywhere           icmp echo-request length 85:65535
</verb></tscreen>

<p>Opcje dostępne dla testu `length' to:

<itemize>
<item><verb>[!] --length długość[:długość]</verb> - testuje pakiety o określonej długości lub 
mieszczące się w podanym zakresie wielkości (włącznie)
</itemize>

<p>Wartości, których nie podano są dodawane automatycznie. Minimalna wartość to 0,
maksymalna 65535.</p>

<sect1>Łata mport

<p>Łata autorstwa Andreas Ferber &lt;af@devcon.net&gt; dodaje nowy test, pozwalający
na podanie zestawu pojedynczych portów i ich zakresów, dla protokołów TCP i UDP.</p>

<p>Na przykład, chcąc zablokować ftp, ssh, telnet i http w jednej linii możesz napisać:

<tscreen><verb>
# iptables -A INPUT -p tcp -m mport --ports 20:23,80 -j DROP

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  anywhere             anywhere           mport ports ftp-data:telnet,http
</verb></tscreen>

<p>Opcje dostępne dla testu `mport' to:

<itemize>
<item><verb>--source-ports port[,port:port,port...]</verb> - testuje porty źródłowe
<item><verb>--sports port[,port:port,port...]</verb> - testuje porty źródłowe
<item><verb>--destination-ports port[,port:port,port...]</verb> - testuje porty docelowe
<item><verb>--dports port[,port:port,port...]</verb> - testuje porty docelowe
<item><verb>--ports port[,port:port,port]</verb> - testuje zarówno porty źródłowe jak i docelowe
</itemize>

<sect1>Łata nth

<p>Łata autorstwa Fabrice MARIE &lt;fabrice@celestix.com&gt; dodaje nowy test, sprawdzający
czy dany pakiet nie jest n-tym pasującym do reguły.</p>

<p>Na przykład, jeśli chcesz odrzucać co drugi ping, napisz:

<tscreen><verb>
# iptables -A INPUT -p icmp --icmp-type echo-request -m nth --every 2 -j DROP

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  anywhere             anywhere           icmp echo-request every 2th 
</verb></tscreen>

<p>Rozszerzenie dodane przez Richarda Wagnera &lt;rwagner@cloudnet.com&gt; umożliwia
prosty i szybki sposób na wykonanie rozkładania obciążenia zarówno dla połączeń
wychodzących jak i wchodzących.

<p>Na przykład, jeśli chcesz rozłożyć obciążenie pomiędzy trzy adresy: 10.0.0.5, 10.0.0.6 i 10.0.0.7,
możesz napisać:

<tscreen><verb>
# iptables -t nat -A POSTROUTING -o eth0 -m nth --counter 7 --every 3 --packet 0 -j SNAT --to-source 10.0.0.5
# iptables -t nat -A POSTROUTING -o eth0 -m nth --counter 7 --every 3 --packet 1 -j SNAT --to-source 10.0.0.6
# iptables -t nat -A POSTROUTING -o eth0 -m nth --counter 7 --every 3 --packet 2 -j SNAT --to-source 10.0.0.7

# iptables -t nat --list
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  anywhere             anywhere           every 3th packet #0 to:10.0.0.5 
SNAT       all  --  anywhere             anywhere           every 3th packet #1 to:10.0.0.6 
SNAT       all  --  anywhere             anywhere           every 3th packet #2 to:10.0.0.7 
</verb></tscreen>

<p>Opcje dostępne dla celu `nth' to:

<itemize>
<item><verb>--every Nth</verb> - pasuje do n-tego pakieto
<item><verb>[--counter]  num</verb> - użyj licznika 0-15 (domyślnie:0)
<item><verb>[--start] num</verb> - zainicjuj licznik wartością `num'; musi być pomiędzy 0 a n-ty - 1
<item><verb>[--packet] num</verb> - pasuje do pakietu numer `num'; musi być pomiędzy 0 a n-ty - 1;
jeśli `--packet' używany jest jako licznik, musi być n reguł `--packet', pokrywających wszystkie
wartości pomiędzy 0 a (n-ty - 1) włącznie
</itemize>

<sect1>Łata pkttype

<p>Łata autorstwa Michala Ludviga &lt;michal@logix.cz&gt; dodaje nowy test, pozwalający
dopasowywać pakiety na podstawie ich typu: host/broadcast/multicast.

<p>Jeśli na przykład chcesz odrzucać wszystkie pakiety broadcast'owe:

<tscreen><verb>
# iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere           PKTTYPE = broadcast 
</verb></tscreen>

<p>Opcje dostępne dla celu `pkttype' to:

<itemize>
<item><verb>--pkt-type [!] packettype</verb> - pasuje do pakietu, który jest pakietem typu
<itemize>
<item><verb>host</verb> - do nas
<item><verb>broadcast</verb> - do wszystkich
<item><verb>multicast</verb> - do grupy
</itemize>
</itemize>

<sect1>Łata pool

<p>Łata autorstwa Patricka Schaafa &lt;bof@bof.de&gt;. Joakim Axelsson i Patrick są w trakcie
przepisywania go od nowa, więc prawdopodobnie zamienią tą sekcję niedługo tym co
tak naprawdę stworzyli.</p>

<sect1>Łata psd

<p>Łata autorstwa Dennisa Koslowskiego &lt;dkoslowski@astaro.de&gt; dodaje nowy test,
pozwalający wykryć skanowanie portów.</p>

<p>W swej najprostszej postaci, `psd' może być użyty tak:

<tscreen><verb>
# iptables -A INPUT -m psd -j DROP

# iptables --list
Chain INPUT (policy ACCEPT)
target  prot opt source    destination         
DROP    all  --  anywhere  anywhere    psd weight-threshold: 21 delay-threshold: 300 lo-ports-weight: 3 hi-ports-weight: 1
</verb></tscreen>

<p>Opcje dostępne dla testu `psd' to:

<itemize>
<item><verb>[--psd-weight-threshold próg]</verb> - waga progu detekcji skanowania portów
<item><verb>[--psd-delay-threshold zwłoka]</verb> - waga progu zwłoki skanowania portów
<item><verb>[--psd-lo-ports-weight lo]</verb> - waga uprzywilejowanych portów
<item><verb>[--psd-hi-ports-weight hi]</verb> - waga wysokich portów
</itemize>

<sect1>Łata random

<p>Łata autorstwa Fabrice MARIE &lt;fabrice@celestix.com&gt; dodaje nowy test, pozwalający
na dopasowywanie losowych pakietów na podstawie podanego prawdopodobieństwa.</p>

<p>Na przykład, jeśli chcesz odrzucać połowę pingów losowo, możesz napisać:

<tscreen><verb>
# iptables -A INPUT -p icmp --icmp-type echo-request -m random --average 50 -j DROP

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source       destination         
DROP       icmp --  anywhere     anywhere        icmp echo-request  random 50% 
</verb></tscreen>

<p>Opcje dostępne dla testu `random' to:

<itemize>
<item><verb>[--average] procent</verb> - prawdopodobieństwo w procentach dopasowania. Jeśli zostanie
pominięte, przyjmowane jest prawdopodobieństwo 50%. Wartość musi być w przedziale 1-99.
</itemize>

<sect1>Łata realm

<p>Łata autorstwa Sampsa Ranta &lt;sampsa@netsonic.fi&gt; dodaje nowy test, umożliwiający
wykorzystanie kluczy sfery ( ang. <em>realm</em> ) pochodzących z routingu jako
testów podobnych do tych, z klasyfikatora pakietów.</p>

<p>Na przykład, by logować wszystkie wychodzące pakiety do sfery 10, możesz napisać:

<tscreen><verb>
# iptables -A OUTPUT -m realm --realm 10 -j LOG

# iptables --list
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere           REALM match 0xa LOG level warning
</verb></tscreen>

<p>Opcje dostępne dla testu `realm' to:

<itemize>
<item><verb>--realm [!] wartość[/maska]</verb> - dopasuj do sfery
</itemize>

<sect1>Łata record-rpc

<p>Łata autorstwa Marcelo Barbosa Lima &lt;marcelo.lima@dcc.unicamp.br&gt; dodaje nowy test,
umożliwiający sprawdzanie, czy źródło pakietu żądało tego portu już wcześniej przy
użyciu portmapper'a, czy jest to nowe żądanie typu GET do portmapper'a; dzięki temu
możliwe jest filtrowanie wywołań RPC.</p>

<p>By użyć śledzenia połączeń RCP, napisz:

<tscreen><verb>
# iptables -A INPUT -m record_rpc -j ACCEPT

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination 
ACCEPT     all  --  anywhere             anywhere
</verb></tscreen>

<p>Test nie ma żadnych opcji.</p>

<p>Nie przejmuj się, że informacje o teście nie są drukowanie. Po prostu
funkcja print() tego testu jest pusta:

<tscreen><verb>
/* Prints out the union ipt_matchinfo. */
static void
print(const struct ipt_ip *ip,
      const struct ipt_entry_match *match,
      int numeric)
{
}
</verb></tscreen>

<sect1>Łata string

<p>Łata autorstwa Emmanuela Rogera &lt;winfield@freegates.be&gt; dodaje nowy test, 
umożliwiający dopasowywanie ciągów znaków w dowolnym miejscu pakietu.</p>

<p>Jeśli na przykład chcesz wyłapywać ciąg znaków `cmd.exe' i kolejkować
je do systemu IDS w przestrzeni użytkownika, napisz:

<tscreen><verb>
# iptables -A INPUT -m string --string 'cmd.exe' -j QUEUE

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
QUEUE      all  --  anywhere             anywhere           STRING match cmd.exe 
</verb></tscreen>

<p>Proszę jednak używać tego testu z uwagą. Wiele ludzi chce użyć tego celu
do zatrzymania robaków, używając celu DROP. Jest to poważny błąd i zostanie
ominięty przez każdy sposób unikania wykrycia przez IDS.</p>

<p>Wielu ludzi używało tej łaty do powstrzymania pewnych metod HTTP, takich
jak POST czy GET, przez odrzucanie każdego pakietu HTTP zawierającego
ciąg znaków POST. Proszę zrozumieć, że lepiej tą pracę wykona proxy
filtrujące. Co więcej, dokument HTML zawierający słowo POST również
zostanie odrzucony. Łatę stworzono aby można było kolejkować ciekawe
pakiety do przestrzeni użytkownika, nic więcej.</p>

<p>Opcje dostępne dla testu `string' to:

<itemize>
<item><verb>--string [!] ciąg znaków</verb> - dopasuj ciąg znaków w pakiecie
</itemize>

<sect1>Łata time

<p>Łata autorstwa Fabrice MARIE &lt;fabrice@celestix.com&gt; dodaje nowy test,
pozwalający sprawdzać pakiety na podstawie czasu ich przyjścia lub opuszczania
maszyny.</p>

<p>Na przykład, by zaakceptować pakiety które przybywają pomiędzy ósmą rano a
osiemnastą wieczorem od poniedziałku do piątku, możesz napisać:

<tscreen><verb>
# iptables -A INPUT -m time --timestart 8:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT

# iptables --list 
Chain INPUT (policy ACCEPT)
target     prot opt source           destination
ACCEPT     all  --  anywhere         anywhere        TIME from 8:0 to 18:0 on Mon,Tue,Wed,Thu,Fri 
</verb></tscreen>

<p>Opcje dostępne dla testu `time' to:
Supported options for the time match are :

<itemize>
<item><verb>--timestart value</verb> - minimalny czas w formacie HH:MM
<item><verb>--timestop value</verb> - maksymalny czas w formacie HH:MM
<item><verb>--days listofdays</verb> - lista dni (ważna wielkość liter)
<itemize>
<item>Mon
<item>Tue
<item>Wed
<item>Thu
<item>Fri
<item>Sat
<item>Sun
</itemize>
</itemize>

<sect1>Łata ttl

<p>
 Łata autorstwa Haralda Welte &lt;laforge@gnumonks.org&gt; dodaje nowy test, pozwalający
 dopasowywać pakiet na podstawie jego TTL.</p>

<p>
 Jeśli na przykład chcesz logować pakiety z TTL mniejszym niż 5, napisz:

<tscreen><verb>
# iptables -A INPUT -m ttl --ttl-lt 5 -j LOG

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere           TTL match TTL < 5 LOG level warning
</verb></tscreen>

<p>Opcje dostępne dla testu `ttl' to:

<itemize>
<item><verb>--ttl-eq wartość</verb> - TTL równy wartości
<item><verb>--ttl-lt wartość</verb> - TTL mniejszy niż wartość
<item><verb>--ttl-gt wartość</verb> - TTL większy niż wartość
</itemize>

<sect>Now cele netfilter

<p>W tej sekcji postaram się wyjaśnić sposób użycia nowych celów dla netfilter.
Łaty przedstawione zostaną w kolejności alfabetycznej. Nie poruszymy łat, które
powodują uszkadzanie innych łat, choć być może kiedyś tak się stanie.</p>

<p>Ogólnie rzecz biorąc, możesz uzyskać pomoc dla celów wpisując:

<tscreen>
<verb>
# iptables -m cel_o_który_ci_chodzi --help
</verb>
</tscreen>

<p>Wyświetli to normalną pomoc iptables, oraz dodatkowe informacje
dotyczące `celu_o_który_ci_chodzi' na końcu.</p>

<sect1>Łata ftos

<p>Łata autorstwa Matthew G. Marsh &lt;mgm@paktronix.com&gt; dodaje nowy cel, umożliwiający
ustawianie wartości TOS pakietu na określoną wartość.</p>

<p>Na przykład, jeśli chcesz ustawiać wartość TOS wszystkich wychodzących pakietów 
na wartość 15, napisz:

<tscreen><verb>
# iptables -t mangle -A OUTPUT -j FTOS --set-ftos 15

# iptables -t mangle --list
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
FTOS       all  --  anywhere             anywhere           TOS set 0x0f 
</verb></tscreen>

<p>Opcje dostępne dla celu `FTOS' to:

<itemize>
<item><verb>--set-ftos wartość</verb> - ustaw pole TOS na wartość. Wartość może być w postaci
decymalnej ( np.: <tt>32</tt> ) lub heksadecymalnej ( np.: <tt>0x20</tt> )
</itemize>

<sect1>Łata IPV4OPTSSTRIP

<p>Łata autorstwa Fabrice MARIE &lt;fabrice@celestix.com&gt; dodaje nowy cel, umożliwiający
obranie pakietu IPv4 z jego opcji.</p>

<p>Używa się jej po prostu tak:

<tscreen><verb>
# iptables -t mangle -A PREROUTING -j IPV4OPTSSTRIP

# iptables -t mangle --list
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
IPV4OPTSSTRIP  all  --  anywhere             anywhere
</verb></tscreen>

<p>Ten cel nie udostępnia żadnych opcji.

<sect1>Łata NETLINK

<p>Łata autorstwa Gianni Tedesco &lt;gianni@ecsc.co.uk&gt; dodaje nowy cel, który
umożliwia wysyłanie odrzucanych pakietów do przestrzeni użytkownika przez
gniazdo netlink.</p>

<p>Na przykład, by odrzucając wszystkie pingi wysyłać je jednocześnie do
wspomnianego gniazda, napisz:

<tscreen><verb>
# iptables -A INPUT -p icmp --icmp-type echo-request -j NETLINK --nldrop

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
NETLINK    icmp --  anywhere             anywhere           icmp echo-request nldrop 
</verb></tscreen>

<p>Opcje dostępne dla celu `NETLINK' to:

<itemize>
<item><verb>--nldrop</verb> - po przesłaniu odrzuć pakiet
<item><verb>--nlmark &lt;numer&gt;</verb> - zaznacz pakiet 
<item><verb>--nlsize &lt;bajtów&gt;</verb> - ogranicz rozmiar pakietu
</itemize>

<p>Po więcej informacji dotyczących gniazd netlink, odsyłam pod adres
<url url="http://www.skyfree.org/linux/kernel_network/netlink.html">.

<sect1>Łata NETMAP

<p>Łata autorstwa Svenning Soerensen &lt;svenning@post5.tele.dk&gt; dodaje nowy cel,
pozwalający na mapowanie adresów sieci 1:1, przy zachowaniu adresu hosta.</p>

<p>Na przykład, jeśli chciałbyś zmienić adres docelowy połączeń przychodzących
z 1.2.3.0/24 na 5.6.7.0/24, napisz:

<tscreen><verb>
# iptables -t nat -A PREROUTING -d 1.2.3.0/24 -j NETMAP --to 5.6.7.0/24

# iptables -t nat --list
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
NETMAP     all  --  anywhere             1.2.3.0/24         5.6.7.0/24
</verb></tscreen>

<p>Opcje dostępne dla celu `NETMAP' to:

<itemize>
<item><verb>--to adres[/maska]</verb> - adres sieciowy do mapowania
</itemize>

<sect1>Łata SAME

<p>Łata autorstwa Martina Josefssona &lt;gandalf@wlug.westbo.se&gt; dodaje nowy cel, podobny
do SNAT, dający danemu klientowi ten sam adres dla każdego połączenia.</p>

<p>Na przykład, jeśli chcesz modyfikować adres źródłowy połączeń na 
1.2.3.4-1.2.3.7 możesz napisać:

<tscreen><verb>
# iptables -t nat -A POSTROUTING -j SAME --to 1.2.3.4-1.2.3.7

# iptables -t nat --list
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SAME       all  --  anywhere             anywhere           same:1.2.3.4-1.2.3.7 
</verb></tscreen>

<p>Opcje dostępne dla celu `SAME' to:

<itemize>
<item><verb>--to &lt;ipaddr&gt;-&lt;ipaddr&gt;</verb> - adresy na które mapować źródło.
Mogą być podane wielokrotnie, dla wielu zakresów.
<item><verb>--nodst</verb> - nie używaj adresu docelowego przy wybieraniu źródłowego
</itemize>

<sect1>Łata tcp-MSS

<p>Łata autorstwa Marca Bouchera &lt;marc+nf@mbsi.ca&gt; dodaje nowy cel, który pozwala
badać i zmieniać wartość MSS pakietów TCP SYN, co pozwala na kontrolowanie maksymalnej
wartości dla danego połączenia.</p>

<p>Tak jak tłumaczy sam Marc, TO JEST HACK, używany w przypadku napotkania
zbrodniczo debilnych dostawców internetowych, lub serwerów, które blokują
pakiety ICMP Fragmentation Needed.</p>

<p>Typowe użycie wygląda tak:

<tscreen><verb>
# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# iptables --list
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
TCPMSS     tcp  --  anywhere             anywhere           tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU 
</verb></tscreen>

<p>Opcje dostępne dla celu `tcp-MSS' to (można podawać tylko pojedynczo):

<itemize>
<item><verb>--set-mss wartość</verb> ustaw wartość MSS na podaną liczbę
<item><verb>--clamp-mss-to-pmtu</verb> automatycznie dopasuj wartość MSS do (MTU_ścieżki - 40)
</itemize>

<sect1>Łata TTL

<p>Łata autorstwa Haralda Welte &lt;laforge@gnumonks.org&gt;, dodaje nowy cel umożliwiający
użytkownikowi ustawienie wartości TTL dla pakietu IP, lub zwiększanie/zmniejszanie jej
o określoną wartość.</p>

<p>Na przykład, jeśli chcesz ustawić TTL wszystkich wychodzących połączeń na wartość
126, napisz:

<tscreen><verb>
# iptables -t mangle -A OUTPUT -j TTL --ttl-set 126

# iptables -t mangle --list
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
TTL        all  --  anywhere             anywhere           TTL set to 126 
</verb></tscreen>

<p>Opcje dostępne dla celu `TTL' to:

<itemize>
<item><verb>--ttl-set wartość</verb> - ustaw wartość TTL na &lt;wartość&gt;
<item><verb>--ttl-dec wartość</verb> - zmniejsz wartość TTL o &lt;wartość&gt;
<item><verb>--ttl-inc wartość</verb> - zwiększ wartość TTL o &lt;wartość&gt;
</itemize>

<sect1>Łata ulog

<p>Łata autorstwa Haralda Welte &lt;laforge@gnumonks.org&gt;, dodaje nowy cel, udostępniający
trochę bardziej zaawansowany mechanizm logowania niż standardowy cel `LOG'. Katalog
`libipulog/' zawiera bibliotekę obsługującą odbieranie wiadomości `ULOG'.</p>

<p>Harald utrzymuje stronę <url url="http://www.gnumonks.org/projects/ulogd"> zawierającą
odpowiednią dokumentację dla celu, więc nie ma sensu cytować tego tutaj.</p>

<sect>Nowe łaty dla śledzenia połączeń

<p>W tej sekcji przedstawimy dostępne łaty śledzenia połączeń i NAT. By ich użyć,
załaduj odpowiednie moduły (z opcjami, jeśli są wymagane).</p>

<sect1>Łata eggdrop-conntrack

<p>Łata autorstwa Magnusa Sandini &lt;magnus@sandin.cx&gt; dodaje obsługę dla połączeń
botów eggdrop.</p>

<sect1>Łata ftp-fxp

<p>Łata autorstwa Magnusa Sandini &lt;magnus@sandin.cx&gt; dodaje obsługę FXP do
śledzenia sesji FTP. Nie działa jeszcze użycie FXP do maszyn z demonem ftp
za NAT'em. By włączyć moduł, napisz:

<tscreen><verb>
# modprobe ip_conntrack_ftp.o fxp=1
</verb></tscreen>

<p>Łata ostrzega informacją o bezpieczeństwie: UWAGA, użycie tej łaty i
włączenie jej <tt>OBNIŻY</tt> poziom bezpieczeństwa oferowany przez moduł
śledzenia połączeń FTP. Używaj go z dużą ostrożnością (i tylko wtedy, gdy
wiesz co robisz).</p>

<sect1>Łata irc-conntrack-nat

<p>Łata autorstwa Haralda Welte &lt;laforge@gnumonks.org&gt; dodaje obsługę
DCC przez NAT.</p>

<sect1>Łata record-rpc

<p>Łata autorstwa Marcelo Barbosa Lima &lt;marcelo.lima@dcc.unicamp.br&gt; umożliwia
netfilter śledzenie żądań portmapper'a wykonywanych przez TCP i UDP.</p>

<sect1>Łata snmp-nat

<p>Łata autorstwa Jamesa Morrisa &lt;jmorris@intercode.com.au&gt; dodaje do NAT możliwość
operowania na połączeniach SNMP. Jest to wersja protokołu SNMP-ALG opisana w RFC 2962:
<url url="http://www.faqs.org/rfcs/rfc2962.html"> i działa przez modyfikację
adresów IP w pakietach SNMP tak, by pasowały do mapowań NAT w warstwie IP.</p>

<sect1>Łata talk-conntrack-nat

<p>
 Łata autorstwa Jozsefa Kadlecsika &lt;kadlec@blackhole.kfki.hu&gt; dodaje możliwość śledzenia przez
 netfilter połaczeń protokołu `talk', jak również obsługi ich NATowania. Domyślnie, obsługiwane
 są zarówno `otalk' ( port UDP 517 ) jak i `talk' ( port UDP 518 ). Obsługę obu programów można
 wyłączać i włączać selektywnie, za pomocą parametrów modułów `<tt>ip_conntrack_talk</tt>' i
 `<tt>ip_nat_talk modules</tt>'. Dostępne opcje to:

<itemize>
<item>otalk = 0 | 1
<item>talk = 0 | 1
</itemize>

<p>gdzie `0' oznacza `nie obsługuj' a `1' oznacza `obsługuj' dany protokół.</p>

<sect1>Łata tcp-window-tracking

<p>Łata autorstwa Jozsefa Kadlecsika &lt;kadlec@blackhole.kfki.hu&gt; dodaje możliwość
śledzenia połączeń TCP na zasadach opisanych w artykule
<url url="http://www.iae.nl/users/guido/papers/tcp_filtering.ps.gz" name="Real Stateful TCP Packet Filtering in IP Filter">
autorstwa Guido van Rooij. Oznacza to obsługę skalowanych okien i obsługiwanie
już wcześniej ustanowionych połączeń.</p>

<p>Łata wymaga innej łaty - `ftp-fixes'. Powinna być ona już w standardowym
kernelu.</p>

<sect>Nowe testy dla IPv6

<p>W tej sekcji postaram się omówić użycie nowych testów. Łaty wymieniane będą
w kolejności alfabetycznej. Nie poruszymy łat, które powodują uszkadzanie
innych łat, choć być może kiedyś tak się stanie.</p>

<p>Ogólnie rzecz biorąc, możesz uzyskać pomoc dla testów wpisując:

<tscreen>
<verb>
# iptables -m test_o_który_ci_chodzi --help
</verb>
</tscreen>

<p>Wyświetli to normalną pomoc iptables, oraz dodatkowe informacje
dotyczące `testu_o_który_ci_chodzi' na końcu.</p>

<sect1>Łata agr

<p>Łata autorstwa Andras Kis-Szabo &lt;kisza@sch.bme.hu&gt; dodaje jeden nowy test:

<itemize>
<item>`agr' : pozwala dopasować pakiet IPv6 na podstawie jego parametrów adresowych
</itemize>

<p>
 Może ona być pomocna dla ludzi używających schematu adresowania EUI-64, którzy chcieliby sprawdzić
 pakiety pod kątem dostarczonego adresu w sieci LAN.</p>

<p>
 Na przykład, przekierujemy wszystkie pakiety posiadające prawidłowe adresy EUI-64:

<tscreen><verb>
# ip6tables -N ipv6ok
# ip6tables -A INPUT -m agr -j ipv6ok
# ip6tables -A INPUT -s ! 3FFE:2F00:A0::/64 -j ipv6ok
# ip6tables -A INPUT -j LOG
# ip6tables -A ipv6ok -j ACCEPT

# ip6tables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ipv6ok     all      anywhere             anywhere           AGR 
ipv6ok     all     !3ffe:2f00:a0::/64    anywhere           
LOG        all      anywhere             anywhere           LOG level warning 

Chain ipv6ok (2 references)
target     prot opt source               destination         
ACCEPT     all      anywhere             anywhere           
</verb></tscreen>

<p>Test nie ma żadnych opcji.</p>

<sect1>Łata ipv6header

<p>Łata autorstwa Andras Kis-Szabo &lt;kisza@sch.bme.hu&gt; dodaje nowy test,
pozwalający sprawdzać pakiety na podstawie ich rozszerzonych nagłówków.</p>

<p>Na przykład, odrzucajmy pakiety z dodanymi hop-by-hop, nagłówkami ipv6-route i
zawartością protokołu:

<tscreen><verb>
# ip6tables -A INPUT -m ipv6header --header hop-by-hop,ipv6-route,protocol -j DROP

# ip6tables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all      anywhere             anywhere           ipv6header flags:hop-by-hop,ipv6-route,protocol
</verb></tscreen>

<p>A teraz, odrzućmy pakiety które mają rozszerzony nagłówek ipv6-route:

<tscreen><verb>
# ip6tables -A INPUT -m ipv6header --header ipv6-route --soft -j DROP

# ip6ptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all      anywhere             anywhere           ipv6header flags:ipv6-route soft
</verb></tscreen>

<p>Dostępne opcje dla celu to:

<itemize>
<item><verb>--header [!] nagłówki</verb> - możesz podać interesujące cię nagłówki z jego
opcjami. Akceptowane formaty to:
<itemize>
<item>hop,dst,route,frag,auth,esp,none,proto
<item>hop-by-hop,ipv6-opts,ipv6-route,ipv6-frag,ah,esp,ipv6-nonxt,protocol
<item>0,60,43,44,51,50,59
</itemize>
<item><verb>--soft</verb> - możesz określić tryb `miękki' - sprawdzana jest tylko obecność
nagłówka, nie cały test!
</itemize>

<sect1>Łata ipv6-ports

<p>Łata Jana Rekorajskiego &lt;baggins@pld.org.pl&gt; dodaje cztery nowe testy:

<itemize>
<item>`limit' : pozwala ograniczyć ilość jednoczesnych połączeń TCP od określonego komputera lub sieci
<item>`mac' : pozwala dopasować pakiet na podstawie jego adresu MAC
<item>`multiport' : pozwala dopasować pakiet na podstawie zestawu portów i zakresów portów dla protokołów TCP i UDP
<item>`owner' : pozwala dopasować pakiet na podstawie identyfikatora procesu nadającego
</itemize>

<p>Są to wersje łat dla protokołu IPv4, sprawdź wyżej szczegóły.</p>

<sect1>Łata length

<p>Łata autorstwa Imrana Patela &lt;ipatel@crosswinds.net&gt; dodaje nowy test umożliwiający
dopasowywanie pakietu na podstawie jego długości. (bezwstydna adaptacja łaty dla IPv4
autorstwa Jamesa Morrisa &lt;jmorris@intercode.com.au&gt;)

<p>Na przykład, odrzućmy wszystkie pingi z długością pakietu większą niż 85 bajtów:

<tscreen><verb>
# ip6tables -A INPUT -p ipv6-icmp --icmpv6-type echo-request -m length --length 85:0xffff -j DROP

# ip6ptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       ipv6-icmp --  anywhere             anywhere           ipv6-icmp echo-request length 85:65535
</verb></tscreen>

<p>Opcje dostępne dla testu to:

<itemize>
<item><verb>[!] --length długość[:długość]</verb> - testuje pakiety o określonej długości lub 
mieszczące się w podanym zakresie wielkości (włącznie)
</itemize>

<p>Wartości, których nie podano są dodawane automatycznie. Minimalna wartość to 0,
maksymalna 65535.</p>

<sect>Now cele dla IPv6

<p><p>W tej sekcji postaram się omówić użycie nowych celów. Łaty wymieniane będą
w kolejności alfabetycznej. Nie poruszymy łat, które powodują uszkadzanie
innych łat, choć być może kiedyś tak się stanie.</p>

<p>Ogólnie rzecz biorąc, możesz uzyskać pomoc dla celu wpisując:

<tscreen>
<verb>
# iptables -m cel_o_który_ci_chodzi --help
</verb>
</tscreen>

<p>Wyświetli to normalną pomoc iptables, oraz dodatkowe informacje
dotyczące `celu_o_który_ci_chodzi' na końcu.</p>

<sect1>Łata LOG

<p>Łata autorstwa Jana Rekorajskiego &lt;baggins@pld.org.pl&gt; dodaje nowy cel umożliwiający
logowanie pakietów dokładnie tak, jak dla IPv4.</p>

<p>Przykłady są takie same jak dla iptables, zajrzyj na stronę podręcznikową po szczegóły!

<sect1>Łata REJECT

<p>Łata autorstwa Haralda Welte &lt;laforge@gnumonks.org&gt; dodaje nowy cel, umożliwiający
odrzucenie pakietu dokładnie tak, jak dla IPv4.</p>

<p>Przykłady są takie same jak dla iptables, zajrzyj na stronę podręcznikową po szczegóły!

<sect>Nowe łaty dla śledzenia połączeń IPv6

<p>Śledzenie połączeń nie jest jeszcze obsługiwane.</p>

<sect>Współpraca

<sect1>Dodawanie nowego rozszerzenia

<p>Podstawowy skład netfilter zawsze mile widzi nowe rozszerzenia i poprawki. W tej sekcji
nie opowiem o robieniu paczek z nowych rozszerzeń, by ułatwić ich integrację z patch-o-matic
(jeszcze nie). Ale być może, taka informacja znajdzie się tutaj w którejś z nowych wersji
dokumentu.</p>

<p>Po pierwsze, powinieneś zapoznać się z 
<url url="http://www.netfilter.org/documentation/HOWTO/netfilter-hacking-HOWTO.html" name="Netfilter Hacking HOWTO">.

<p>Rusty napisał już przewodnik dla piszących łaty do netfilter, znajduje się on w

<tscreen><verb>
/ścieżka/do/netfiltercvs/netfilter/userspace/patch-o-matic/NEWPATCHES
</verb></tscreen>

<p>Możesz też przeczytać najnowszą wersję pod adresem:
<url url="http://www.samba.org/cgi-bin/cvsweb/~checkout~/netfilter/userspace/patch-o-matic/NEWPATCHES">.

<p>Na koniec, dobrym pomysłem jest zapisanie się na listę `netfilter-devel'. Więcej
informacji o tym jak to zrobić, znajdziesz na stronie domowej netfilter.</p>

<sect1>Dodatki do tego HOWTO

<p>Byłoby miło, gdybyś dodał coś do tego HOWTO. By to zrobić, najlepiej wysłać
łatę z różnicami pomiędzy głównym dokumentem SGML a twoim, na listę `netfilter-devel'.</p>

<sect>Uwagi od tłumacza

<p>
 Chciałbym podziękować następującym osobom za uwagi co do tłumaczenia, poprawki i
 zasugerowanie poprawek:

<itemize>
 <tag>Tomasz Sedyka, cindy (at) zaba.tbg.net.pl</tag>
 literówki, literówki i o dziwo, uparty błąd w słowie <bf>pojedyncze</bf>
</itemize>

</p>

</article>

