Next Previous Contents

1. Bevezetés

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.

1.1 Mi az a netfilter?

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).

1.2 Mi a baj azzal, amit a 2.0 és 2.2-es verziókban találhatunk?

  1. Nincs kialakított metódusa a csomagok felhasználói térbe való továbbításának
  2. Transzparens proxyzás olyan, mint egy cserépedény:
  3. Interface-tõl független csomagszûrõ szabályok készítése nem lehetséges:
  4. Masquerading össze van fûzve a csomagszûréssel:

    A masquerading és a szûrés közti kölcsönhatások bonyolulttá teszik a tûzfal kialakítását:

  5. TOS módosítás, átirányítás, ICMP unreachable és mart (ami a port átirányításra, routolásra és a QoS-re van hatással) szintén a csomagszûrési programkódban kerültek megvalósításra.
  6. ipchains kód se nem moduláris, se nem bõvíthetõ (pl. MAC cím szûrés, opciók szûrése, stb.).
  7. A szükséges alapok hiánya a különbözõ megoldások bõséges választékához vezetett:
  8. A CONFIG_NET_FASTROUTE és a csomagszûrés összeférhetetlensége:
  9. Routing védelem (pl. forráscím-ellenõrzés) nem lehetséges a csomagok ellenõrzésének hiánya miatt
  10. Nincs lehetõség a csomagszûrõ szabályok számlálóinak automatikus olvasására.
  11. CONFIG_IP_ALWAYS_DEFRAG egy fordítási opció, nehezebbé téve az életet azok számára, akik egységes felépítést szeretnének.

1.3 Ki vagy?

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.

1.4 Miért omlott össze?

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.


Next Previous Contents