Szervusztok!
Ez a leírás olyan, mint egy utazás; egyes részei jól ki vannak dolgozva, míg más részeken esetleg egyedül érezhetitek magatokat. A legjobb tanács, amit adhatok Nektek, hogy szerezzetek egy nagy bögre kávét vagy meleg kakaót, üljetek le egy kényelmes székbe, és figyeljétek a tartalomjegyzéket mielõtt belevágtok a hálózat- programozás néha veszélyes világába.
A netfilter felületén elhelyezkedõ szerkezet jobb megismeréséhez ajánlom a Packet Filtering HOWTO és a NAT HOWTO átolvasását. A kernel programozásához szükséges információkhoz ajánlom a következõ leírásokat: Rusty's Unreliable Guide to Kernel Hacking és Rusty's Unreliable Guide to Kernel Locking.
(C) 2000 Paul `Rusty' Russell. Licenced under the GNU GPL.
A netfilter egy váz a csomagok megváltoztatására, ami a hagyományos Berkeley socket felületen kívül helyezkedik el. Négy része van. Elsõ: minden protokoll definiál hook-okat (IPv4-nél 5 darab van), amik jól definiált pontokat határoznak meg a csomagok protokoll-stack-beli útjuk során. Mindegyik ilyen ponton a protokoll képes meghívni a netfilter vázat a csomaggal és a hook sorszámával.
Második: a kernel részei regisztrálni tudják magukat a különbözõ
hook-okhoz minden protokoll esetében. Amikor a csomag megérkezik a
netfilter vázhoz, az ellenõrzi, hogy valaki regisztrálta-e magát a
megadott protokollhoz és hookhoz. Amennyiben van ilyen rész, akkor
mindegyik lehetõséget kap a csomag megvizsgálására (esetleg
megváltoztatására), ezután figyelmen kívül hagyhatja a csomagot
(NF_DROP
), átengedheti (NF_ACCEPT
), kiveheti a
netfilterbõl a csomagot (NF_STOLEN
), vagy kérheti a netfiltert,
hogy állítsa sorba a csomagot az userspace programok számára
(NF_QUEUE
).
Harmadik: a sorba állított csomagok (az ip_queue driverrel) a felhasználói programokhoz szabályozottan kerülnek elküldésre. A csomagok kezelése aszinkron.
Az utolsó rész a jó forráskód kommentezésbõl és a csodálatos dokumentációból áll. Ez szükséges bármilyen kísérleti projecthez. A netfilter mottója (szemtelenül lopva Cort Dougan-tól):
``So... how is this better than KDE?''
Ehhez az egyszerû vázhoz számos kiegészítés készült, amik az elõzõ kernelekhez hasonló funkcionalitást adnak a rendszerhez, ide értve a bõvíthetõ NAT rendszert, valamint a bõvíthetõ csomagszûrõ rendszert (iptables).
A masquerading és a szûrés közti kölcsönhatások bonyolulttá teszik a tûzfal kialakítását:
Az egyetlen, aki olyan bolond, hogy ezt csinálja! Mint az ipchains társszerzõje és az aktuális Linux Kernel IP Firewall karbantartója látom azokat a problémákat, amelyek az alkalmazás során elõjönnek, valamint azokat a feladatokat, amiket egyes emberek megpróbálnak megoldani.
Woah! Bizonyára az elmúlt héten láttad!
Azért, mert nem vagyok egy nagy programozó - legalábbis mint szeretném, és természetesen nem tudtam minden esetet kitesztelni idõhiány, felszereltség és/vagy inspiráció miatt. Van egy tesztállományunk, aminek a kibõvítését bátran felajánlom.