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

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

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

mky ★★★★★ ()

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

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

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

gaa ★★ ()

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

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

Ну, вроде главное что они обещают прирост производительности за счет сокращения числа правил и 
отсутствия не нужных счетчиков.
В том числе можно будет писать несколько целей, у одного правила, например, "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 ★★★★★ ()

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

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

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

mky ★★★★★ ()

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

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

GOD ★★★ ()

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

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

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

lodin ★★★★ ()

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

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

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

Pavval ★★★★★ ()

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

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

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

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

nacmyx ()

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

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

PA ()

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

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

mumpster ★★★★★ ()

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

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

mumpster ★★★★★ ()

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

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

mumpster ★★★★★ ()

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

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

mumpster ★★★★★ ()

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

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

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

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

mumpster ★★★★★ ()

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

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

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

PA ()

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

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

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

sedogrep ()

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

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

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

sedogrep ()

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


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


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



+1

sedogrep ()

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

use pf,Luke!

time2die ()

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

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

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

mky ★★★★★ ()

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

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

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

mky ★★★★★ ()

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

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

> 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 ★★★★★ ()

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

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

Konstantyn ()

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

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

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

Pavval ★★★★★ ()

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

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

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

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

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

My_quest ★★★★ ()

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

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

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

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

nacmyx ()

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

Боже мой!
У 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 ()

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

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

PA ()

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

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

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

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

jackill ★★★★★ ()

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

>Видел и это не предмет для гордости. ;-)
А его же конфиг m4?
>P.S. Exim rule.

Не везде :-)

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

PA ()

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

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

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

jackill ★★★★★ ()

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

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

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

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

sedogrep ()

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

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

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

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

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

iZEN ★★★★★ ()

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

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

nacmyx ()

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

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

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

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