Ниво кернела обезбеђује само генерички интерфејс независан од протокола који обезбеђује основне функције за издвајање података из пакета, извођење операција са подацима и контролу тока. Правила филтрирања и руковаоци специфични за протокол се компајлирају у бајткод у корисничком простору, након чега се овај бајт код учитава у кернел помоћу Нетлинк интерфејса и извршава у кернелу у специјалној виртуелној машини која подсећа на БПФ (Беркелеи Пацкет Филтерс). Овај приступ вам омогућава да значајно смањите величину кода за филтрирање који ради на нивоу кернела и преместите све функције рашчлањивања правила и логике за рад са протоколима у кориснички простор.
Главне иновације:
- Подршка за опсеге у везама (конкатенација, одређени скупови адреса и портова који поједностављују поређење). На пример, за скуп „беле листе“ чији су елементи прилог, навођење ознаке „интервал“ ће указати на то да скуп може укључивати опсеге у прилогу (за прилог „ипв4_аддр . ипв4_аддр . инет_сервице“ раније је било могуће навести тачно подударања облика "192.168.10.35. 192.68.11.123", а сада можете одредити групе адреса "80-192.168.10.35-192.168.10.40"):
табле ип фоо {
постави белу листу {
укуцајте ипв4_аддр. ипв4_аддр. инет_сервице
флагс интервал
елементи = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
}ланчана шипка {
тип филтер кука за унапред усмеравање филтер приоритета; пад политике;
ип саддр. ип даддр. тцп дпорт @вхителист прихвати
}
} - У скуповима и листама мапа, могуће је користити директиву “типеоф”, која одређује формат елемента приликом упаривања.
На пример:табле ип фоо {
постави белу листу {
типеоф ип саддр
елементи = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
}ланчана шипка {
тип филтер кука за унапред усмеравање филтер приоритета; пад политике;
ип даддр @вхителист прихватити
}
}табле ип фоо {
мап аддр2марк {
типеоф ип саддр : мета ознака
елементи = { 192.168.10.35 : 0к00000001, 192.168.10.135 : 0к00000002 }
}
} - Додата је могућност коришћења спојева у НАТ везама, што вам омогућава да наведете адресу и порт када дефинишете НАТ трансформације на основу листа мапа или именованих скупова:
нфт адд правило ип нат пре днат ип аддр. порт на ип саддр мапу {1.1.1.1:2.2.2.2. тридесет }
нфт адд мап ип нат дестинације { типе ипв4_аддр . инет_сервице: ипв4_аддр. инет_сервице \\; }
нфт адд руле ип нат пре днат ип аддр. порт на ип саддр. тцп дпорт мапа @дестинатионс - Подршка за хардверско убрзање са неким операцијама филтрирања које обавља мрежна картица. Убрзање је омогућено преко етхтоол услужног програма („етхтоол -К етх0 хв-тц-оффлоад он“), након чега се активира у нфтаблес за главни ланац помоћу ознаке „оффлоад“. Када се користи Линук кернел 5.6, подржано је хардверско убрзање за подударање поља заглавља и инспекцију долазног интерфејса у комбинацији са пријемом, одбацивањем, дуплирањем (дуп) и прослеђивањем (фвд) пакета. У примеру испод, операције испуштања пакета који долазе са адресе 192.168.30.20 се изводе на нивоу мрежне картице, без прослеђивања пакета кернелу:
# цат филе.нфт
табела нетдев к {
ланац и {
тип филтер кука улазни уређај етх0 приоритет 10; флагс оффлоад;
ип саддр 192.168.30.20 дроп
}
}
# нфт -ф филе.нфт - Побољшане информације о локацији грешке у правилима.
# нфт брисање правила ип из ручица 7
Грешка: Није могуће обрадити правило: Нема такве датотеке или директоријума
брисање правила ип из ручица 7
^# нфт брисање правила ип кк ручка 7
Грешка: Није могуће обрадити правило: Нема такве датотеке или директоријума
брисање правила ип кк ручке 7
^# нфт брисање табеле твст
Грешка: нема такве датотеке или директоријума; да ли сте мислили табела а€˜тест' у породичном ИП-у?
избрисати табелу твст
^^^^Први пример показује да табела „и” није у систему, други да недостаје руковалац „7”, а трећи да се при куцању имена табеле приказује промпт за грешку.
- Додата подршка за проверу славе интерфејса навођењем „мета сдиф“ или „мета сдифнаме“:
... мета сдифнаме врф1 ...
- Додата подршка за десну или леву смену. На пример, да померите постојећу ознаку пакета улево за 1 бит и поставите мањи бит на 1:
… мета ознака постављена мета ознака лсхифт 1 или 0к1 …
- Имплементирана опција "-В" за приказ проширених информација о верзији.
# нфт -В
нфтаблес в0.9.4 (Јиве ат Фиве)
цли:реадлине
јсон: да
минигмп:не
либктаблес: да - Опције командне линије сада морају бити специфициране пре команди. На пример, потребно је да наведете „нфт -а скуп правила листе“, а покретање „нфт лист рулесет -а“ ће довести до грешке.
Извор: опеннет.ру