LINUX.ORG.RU

Разработчики Netfilter предоставили замену iptables

 ,


0

0

18 марта был представлен первый публичный выпуск проекта nftables, новой реализации пакетного фильтра для Linux, идущего на смену iptables. Главным отличием nftables является не только изменившийся синтаксис задания правил, но и совершенно новый подход в их трансляции: определенные пользователем правила теперь преобразуются в специальный псевдокод, который используется для принятия решения по дальнейшим действиям с пакетом внутри ядра.

Nftables состоит из трех частей: кода фильтрации, работающего внутри ядра, связующей интерфейсной netlink библиотеки libnl и фронтэнда, работающего на уровне пользователя, при этом проверка корректности правил выполняется вне ядра, а ядро только выполняет фильтрацию.

Новый синтаксис правил, в котором можно задавать условия, создавать переменные, выполнять математические операции, выглядит так:

   include "ipv4-filter"

   chain filter output {
         ct state established,related accept
         tcp dport 22 accept
         counter drop
   }

Код nftables еще находится на стадии альфа тестирования и не подходит для использовании в промышленной эксплуатации, тем не менее в процессе регулярного тестирования последний крах ядра из-за сбоя nftables был зафиксирован несколько месяцев назад.

Взято с opennet.ru

>>> Подробности

★★★★★

Проверено: JB ()
Ответ на: комментарий от shell-script

Если так подходить, то iptables всё равно уже комбайн, зачем у нее счетчики можно выводить (опция -v), а можно выводить точно (опция -x). Да ещё опция --line-numbers.

mky ★★★★★
()
Ответ на: комментарий от mky

> Не, ну так то хорошо. Вот раньше, дадут тебе сервер, там sendmail, конфиг уже до тебя отредактирован, m4 файлов нету... А сейчас можно будет получить сервер, где вместо списка правил "iptables -L" есть только псевдокод, какими скриптами он туда пишется незвестно, но эта каша позволит отличить настоящего джедая от обычного админа :)

На такое ответ прост: либо платите по двадцатикратной ставке, либо идите в опу. Потому как улучшать программу без исходников я возьмусь только на таких условиях.

gaa ★★
()
Ответ на: комментарий от shell-script

>А нахрена нужны навороты с какими-то мега-конфигами, постороенными на каких-то там супер-принципах, мне непонятно... Бред...

Ну, вроде главное что они обещают прирост производительности за счет сокращения числа правил и 
отсутствия не нужных счетчиков.
В том числе можно будет писать несколько целей, у одного правила, например, "LOG, DROP".
Да и объём кода в ядре сократится. 
О том, что пользователю будет проще писать правила, Patrick McHardy вроде не говорил.

И ещё, если я правильно понял, обещается добавления правила в ядро по одному, чего сейчас нет.
А конфиг должен выглядеть повеселее, чем в новости:

chain input {
	hook NF_INET_LOCAL_IN 0
	counter
	meta iif vmap {				\
		"eth0"  => jump input_local,	\
		"eth1"  => jump input_local,	\
		*	=> continue,		\
	}
	counter
}

То есть все должно начинаться с указания на какой хук в ядре цепляться. 
Правда для пользователя это будет спрятано через include-файлы.

mky ★★★★★
()
Ответ на: комментарий от villain

>главное что б прогу для него можно было скормить непосредственно через командлайн

Да, интересно, они смогут сделать в команде "nft" аналог "iptables -I INPUT 5", то есть вставлять правило между уже существующими?

mky ★★★★★
()

Лучше бы таблесы сделали гибче и добавли фич из оматика а то начинают всякой х-ней заниматься...

GOD ★★★
()
Ответ на: комментарий от mky

>Умела бы она ещё выводить заданную цепочку, чтобы без grep. И в целом непонятно, почему сделали отдельную команду, а не опцию у iptables.

Согласен, iptables-save -t nat PREROUTING выглядит достаточно логично, чтобы попытаться это реализовать.

lodin ★★★★
()
Ответ на: комментарий от mky

>Не, ну так то хорошо. Вот раньше, дадут тебе сервер, там sendmail, конфиг уже до тебя отредактирован, m4 файлов нету... А сейчас можно будет получить сервер, где вместо списка правил "iptables -L" есть только псевдокод, какими скриптами он туда пишется незвестно, но эта каша позволит отличить настоящего джедая от обычного админа :)

Сударь, по моему вы тупите. userespace будет переводить конфиг в псевдокод и _назад_.
И ни кто не просит учить псевдокод.

Pavval ★★★★★
() автор топика
Ответ на: комментарий от ptah_alexs

>Они в каждую новую ветку впихивают новый пакетный фильтр. Этот вероятно войдет в 2.8

вранье. в 2.4.x и 2.6.x - iptables.

ergil ★★★
()
Ответ на: комментарий от ergil

Научись сначала тред до конца читать, старикан.

ptah_alexs ★★★★★
()

2mky: P.S. Интерестно, а будут в iptables добавлять возможность нескольких целей в одном правиле, типа "-j LOG -j DROP" ?

Неужели так трудно сделать еще одну строчку и добавить правило? Ну и комент типа - логгирую шо приходит оттуда то. Исчезла необходимость логгировать - закоментил строчку. Все просто, не надо лопатить свыше 9000 строк конфига и руками выкашивать лишние слова. УГ+школота детектед.

P.S. Прочитал ниже про совет использовать иптаблес-сэйв, долго плакал. Прикиньте рутер на пять-семь тырфейсов, кучкой подсеток, сдобренный палезнейшими виланами, снатами для цысковпн и прочей паебени. Теперь условно запейшите это иптаблес-сэйвом и попробуйте разобраться через неделю. Удачи.

nacmyx
()
Ответ на: комментарий от nacmyx

>Прикиньте рутер на пять-семь тырфейсов, кучкой подсеток, сдобренный палезнейшими виланами, снатами для цысковпн и прочей паебени. Теперь условно запейшите это иптаблес-сэйвом и попробуйте разобраться через неделю. Удачи.
+1

PA
()
Ответ на: комментарий от ptah_alexs

> в 2.6 появился iptables, в 2.4 был ipchains
бред, в 2.4 появился iptables, исходники ядра посмотрите ;)
я-то хорошо помню, т.к. ао роду работы этим занимался как раз - переходом с ipchains
кстати, моно иметь и то и то.

mumpster ★★★★★
()
Ответ на: комментарий от PA

> Теперь условно запейшите это иптаблес-сэйвом и попробуйте разобраться
если у Вас нет файла с исходным конфигом и таблички разбивки VLAN - Вы - неудачник по-любому. epic fail.
и ещё - квалифицированному спецу разбора там - на день максимум.

mumpster ★★★★★
()
Ответ на: комментарий от nacmyx

> Прикиньте рутер на пять-семь тырфейсов, кучкой подсеток, сдобренный
> палезнейшими виланами
ну мне приходилось несколько раз заниматься разбором такого после пионеров. вплоть до того что даже не было таблички коммутации на кроссе.
от 4 до 12 ч/часов. там же всё обычно типовое - у людей фантазии мало.
хуже кода рутер - не один.

mumpster ★★★★★
()
Ответ на: комментарий от ergil

> ipchains был в 2.2.x
нгу почему - был - его и щаз в ядро можно собрать - даже одновременно с ipfw и iptables.:-)
при переходе это здорово выручило. в чвс Ч просто сдела ipchains stop; rmmod ipchains; iptables start :)

mumpster ★★★★★
()
Ответ на: комментарий от nacmyx

>2mky: P.S. Интерестно, а будут в iptables добавлять возможность нескольких целей в одном правиле, типа "-j LOG -j DROP" ?

saddr 192.168.1.254 {
LOG;
DROP;
};

Это правило сгенерирует две строки iptables:
LOG        all  --  192.168.1.254        0.0.0.0/0           LOG flags 0 level 4
DROP       all  --  192.168.1.254        0.0.0.0/0

ferm - это препроцессор для iptables, написан на PERL, как раз для облегчения конфигурирования хитровывернутых рутеров с кучей подсетей, натов, вланов и прочей хни.
http://ferm.foo-projects.org/

А по поводу проекта: посмотрим, только лучше бы его опционально включили в 2.8, все таки сетевая подсистема - не свистоперделка :-)

PA
()
Ответ на: комментарий от mky

> обещается добавления правила в ядро по одному, чего сейчас нет.
кто сказал Вам эту глупость?
Вы хотите сказать, что нельзя сделать iptables -I/-A команда из командной строки? и -R/-D отменили?

mumpster ★★★★★
()
Ответ на: комментарий от tailgunner

Не уводи разговор в сторону, здесь речь шла о святом -- мышью щёлкать.

Lumi ★★★★★
()
Ответ на: комментарий от mumpster

>от 4 до 12 ч/часов. там же всё обычно типовое - у людей фантазии мало.
А если фантазии много, а знаний мало - такое получается, уууу :-)
>хуже кода рутер - не один.

Еще хуже, когда правила повторяются в разных вариациях, недокументированы и разбросаны в случайном порядке.

PA
()

Даже зарегистрировался ради этого.

Кто-нибудь понял, в чём смысл? Кто-нибудь увидел удобство в этом новом синтаксисе? Неужели ЭТО понятнее текущего синтаксиса iptables?

sedogrep
()
Ответ на: комментарий от mumpster

> Вы хотите сказать, что нельзя сделать iptables -I/-A команда из командной строки? и -R/-D отменили?

Возможно, речь не о том.
Сейчас при добавлении/удалении правила из адра полностью распаковывается вся таблица (filter,nat,mangle,raw - смотря в какую из них добавляется правило) цепочек.
Поэтому по времени и ресурсам получается одинаково что iptables -I, что iptables-restore всей таблицы цепочек.

sedogrep
()
Ответ на: комментарий от shell-script


> Т.е. теперь всё стало проще? Если раньше достаточно было знать синтаксис iptables и спокойно работать, теперь надо выцчить синтаксис фаера и ещё синтаксис его конфига. И это называется упорщение?


> Если мне нужно было добавить правило, я писал его в консоли и радовался жизни. Если нужно его сохранить - iptables-save. Если надо сделать большой и страшный конфиг с кучей подсетей, натов и т.д. я открывал файл, сгенерированный iptables-save и по той же схеме, что до этого в консоли писал нужные мне правила. А нахрена нужны навороты с какими-то мега-конфигами, постороенными на каких-то там супер-принципах, мне непонятно... Бред...



+1

sedogrep
()
Ответ на: комментарий от PA

ferm мне не интересен. И там ещё неизвестно, что будет выгоднее, создать два правила с одинаковыми условиями, или создать отдельную цепочку LOGDROP из двух правил "LOG, DROP" и делать переход на неё -j LOGDROP. Зависит от кол-ва условий в правиле, наподобие -p tcp -m multiport -m state ...

Просто когда я изучал исходники iptables (в районе версий 1.2.3-1.2.8), то ли в комментариях, то ли в документации была фраза, что сделать несколько целей у одного правила можно, но пока это не реализовано. Во и стало интересно, может перед "похоронами" iptables в нем реализуют эту возможность.

mky ★★★★★
()
Ответ на: комментарий от sedogrep

Да, вы меня правильно поняли. С командной строки все красиво (-A,-I,-D,-R), а между ядром и user-space передаётся много данных.

И сейчас достаточно медленно идёт работа при большом количестве правил в таблице. Когда их порядка 10 тыс. и скрипт должен изменить несколько правил, возможно, что быстрее будет iptables-save, редактирование файла и iptables-restore, чем "iptables -F mychain ; iptables -A mychain ; iptables -A mychain ..."

mky ★★★★★
()
Ответ на: комментарий от Pavval

Относительно "вы тупите". Я читал указанную вами ссылку.
Там встречается такое (вопрос и ответ на этот вопрос Патрика Мак-Харди):

> How about storing the actual text the user inputed in something like
> an -m comment, as an aid to the user for finding his rules again
> after they have been optimized internally?

Thats not really necessary so far, and I don't want to in any case. If
someone
really wants this (and I very much question the need), it can be done in
userspace.

> Are there plans to implement the existing iptables/ipchains/ipfw user
> interfaces on top of nftables?

I've thought about a "skin" in userspace to parse the iptables syntax
and convert it to the new syntax. But the kernel won't have a compatibility
interface and I'm not sure yet whether userspace will also be able to output
iptables syntax. ipchains etc. definitely not.

Тут я не увидел по перевод _назад_.

mky ★★★★★
()

ММ весьма интересно если это дело не зачахнет,веротно стоит использовать)Мне нравиться(если я всё корректно понял... то их труд очень полезен ) +1l

Konstantyn
()
Ответ на: комментарий от mky

Сори, видимо не так понял. Приношу свои извинения.

Сделают то же самое через userspace (а никуда не денутся - оно действительно нужно) - какая разница?

Pavval ★★★★★
() автор топика
Ответ на: комментарий от Pavval

>>И тут XML-ное дерьмо... лучше уж iptables...

>Месье не отличает XML от чего-то другого? Пойди проспись, советую.

неверно выразился - хотел сказать XML-подобное.. имел в виду подобную разметку в конфигах.

В отличие от части ЛОР новость из источника читал, и про то, что за язык применили тут, тоже..

My_quest ★★★★★
()

2mumpster: "если у Вас нет" - таки есть, да. Ибо в обычный хандмаде конфиг в виде скрипта можно навставлять каментов, а еще можно вставить примитивный вгет ку.да.то.ввеб и на этом ввебе по логу апача смотреть когда дергали скрипт, а еще можно примитивное эхо в файл если лень таким заморачиватся и так далее. Даст ferm такую же минимальнонапильникосопротивляемость?

"вплоть до того что даже не было таблички коммутации на кроссе." Попробуй какнить на досуге представить себе что никакой перекоммутации никогда не бывает.

"Вы - неудачник по-любому" ЧСВ свыше 9000 детектед.

nacmyx
()
Ответ на: комментарий от val-amart

:) man bash? тут тебе и комментарии и циклы и функции.

дальше рассказывать?

Да видел, да писал. Да без проблем все читается.

mrdeath ★★★★★
()

Боже мой!
У iptables стотыщяпицот надстроек\фронтэндов и тд для создания правил, это КАК БЫ говорит о том что синтаксис - говно.

Посмотри на синтаксис PF из BSD и поймите что такое читаемые правила!
Ну вот кусок для примера:

##### Macros: define common values, so they can be referenced and changed easily.

ext_if="bge0"
int_if="bge1"
lo_if="lo0"
ext_addr="1.1.1.1"

##### Tables: similar to macros, but more flexible for many addresses.

# ssh clients
table <ssh_addr> const persist file "/etc/pf.ssh.table"

www_ports="{ 80 8080 443 }"
mta_ports="{ 25 465 587 }"
mda_ports="{ 110 143 993 995 }"

##### Normalization: reassemble fragments and resolve or reduce traffic ambiguities.

scrub in all

### BLOCK

block log all

##### ICMP policy

pass quick inet proto icmp from any to any

##### Inbound

# SSH
pass in on $ext_if inet proto tcp from <ssh_addr> to $ext_addr port 22

##### Outbound

pass out on $ext_if inet from self to any

Oloremo
()
Ответ на: комментарий от Oloremo

>У iptables стотыщяпицот надстроек\фронтэндов и тд для создания правил, это КАК БЫ говорит о том что синтаксис - говно.
Ты sendmail.cf видел? :-)

PA
()
Ответ на: комментарий от mrdeath

>блин, вы че, домохозяйки, нахера фаерволу читабельность? Вы че, по утрам, как просыпаетесь ,начининаете дописывать правила в свой любимый фаервол?

Ну когда ты через год придешь что-то новое добавить в свой файрволл, он может тебя неприятно удивить.

Читабельность нужна, чтобы быстро разобраться что ты писал. Или что писал до тебя твой коллега.

jackill ★★★★★
()
Ответ на: комментарий от ptah_alexs

>в 2.6 появился iptables, в 2.4 был ipchains

Гы-гы. Нет, в 2.4 iptables уже были.

jackill ★★★★★
()
Ответ на: комментарий от sedogrep

>Кто-нибудь понял, в чём смысл? Кто-нибудь увидел удобство в этом новом синтаксисе? Неужели ЭТО понятнее текущего синтаксиса iptables?

Я так понимаю, синтаксис позволяет делать многие вещи, которые раньше приходилось корячить на баше. :)

jackill ★★★★★
()
Ответ на: комментарий от jackill

> Я так понимаю, синтаксис позволяет делать многие вещи, которые раньше приходилось корячить на баше. :)

Ну если только.

Так, в новости не раскрыт вопрос сроков внедрения. Кто по ссылкам ходил, когда этого ждать в реальной жизни?

sedogrep
()
Ответ на: комментарий от PA

> telnet www.linux.org.ru 25
> Trying 217.76.32.61...

> Connected to www.linux.org.ru.

> Escape character is '^]'.

> 220 fiona.linuxhacker.ru ESMTP Sendmail 8.14.3/8.14.2; Sun, 22 Mar ?> 2009 15:03:19 +0300


Типа пример для подражания? :-)

Oloremo
()
Ответ на: комментарий от sedogrep

> Кто-нибудь понял, в чём смысл? Кто-нибудь увидел удобство в этом новом синтаксисе? Неужели ЭТО понятнее текущего синтаксиса iptables?

однозначно — НЕТ

iZEN ★★★★★
()
Ответ на: комментарий от nacmyx

> Пардон если выскажу то что обычно вслух не говорят - надстройки для ниасилившых.

А компьютеры - для ниасиливших устный счет.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.