Netfilter Framework ядра Linux

Матеріал з Wiki TNEU
Перейти до: навігація, пошук

1.1 Що таке Netfilter?
Netfilter, безумовно більший ніж будь-який з підсистем брандмауера в минулому Linux ядра. Netfilter надає абстрактне, узагальнення в рамках якого одного конкретного втілення є фільтрація пакетів підсистеми.
Netfilter рамки складаються з трьох частин:
Кожен протокол визначає набір "гачків" (IPv4 визначає 5), які використовуються в певні моменти проходження пакета цього стека протоколів. На кожній з цих точок, стек протоколів викличе Netfilter рамки з пакета і гачок номер. Частини ядра можуть зареєструватися, щоб використовувати різні гачки для кожного протоколу. Таким чином, коли пакет передається в рамках Netfilter, він перевіряє, чи хтось зареєстрований для цього протоколу і гачком, а якщо так, вони отримують можливість вивчити (і можливо змінити) пакет, відмовитися від нього, щоб він міг пройти запит Netfilter в черзі пакетів для простору користувача. Пакети, які були зібрані в черзі для відправки в просторі користувача, ці пакети обробляються асинхронно. Користувач процесу може розглянути пакет, може змінити його. Вся пакетна фільтрація / NAT / ... матеріал на основі цієї бази. Існує також пакети із зміненим кодом розкидані по всьому мережевому стеку. Netfilter рамки в даний час реалізовані для IPv4, IPv6 і DECnet.


1.2 Для чого Netfilter?
У цьому розділі можна було б назвати "Що не так з IPCHAINS? Так чому ж ми повинні це змінити? Немає інфраструктури для передачі пакетів в користувальницький простір, так щоб весь код, який робить кілька пакетів дріб'язковими повинно бути зроблено в коді ядра. Ядро програмування повинно бути зроблено в С, а це небезпечно. Зробити прозорий проксі вкрай складно, ми повинні дивитися look up _every_ packet, щоб побачити, чи є гніздо, пов'язане з цим адресом. Створення пакету дотримуючись правил фільтрації незалежного інтерфейсу адресу неможливо. Ми повинні знати адресу локального інтерфейсу розрізняти локально згенерований або локально-завершений, через пакети від пакетів. Впереді ланцюг має тільки інформацію про вихідний інтерфейс. Таким чином, ми повинні спробувати з'ясувати, звідки пакет прийшов. Ipchains код не є модульної розширюваної(наприклад, для фільтрація МАС-адрес)

Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Інструменти