LINUX.ORG.RU
решено ФорумAdmin

Список интерфейсов в iptables

 , ,


0

1

Приветствую.

Гуру iptables, нужна ваша помощь.

В микротиках, которые, как известно, под капотом суть есть линукс, есть такая приблуда как «список интерфейсов». Т.е. можно создать один список, куда можно запихнуть несколько интерфейсов. А потом использовать этот список в правилах брандмауэра. Это позволяет использовать одно правило, вместо нескольких однотипных для каждого интерфейса. Есть ли возможность использовать в iptables, что-нибудь похожее? Если да - то как?

Смотрел ipset - там нет возможности создавать список интерфейсов. Множественный флаг -i задавать тоже нельзя. Тупое перечисление интерфейсов через запятую ничего не даёт. Я так понимаю что iptables просто начинает интерпретировать всё что относиться к интерфейсу как одно имя.

Firewalld, с его зонами, смотрел. Я хочу отбрасывать пакеты в таблице raw в цепочке PREROUTIG, ещё до того как они попадут на обработку. А для этого в firewalld надо использовать direct правила, ну и на этом firewalld теряет все свои преимущества.

Есть ли возможность использовать в iptables, что-нибудь похожее? Если да - то как?

Элементарно, Ватсон. Создавать правила файрвола из скрипта.

И делать что угодно и как угодно, взяв за образец микротик или другой длинк. Bash, perl, python по вкусу

for interface in $if_list ; do
  ...
done

Я хочу отбрасывать пакеты в таблице raw в цепочке PREROUTIG, ещё до того как они попадут на обработку

Насколько я понимаю, не до того, как попадут на обработку, а до того, как принято решение о маршрутизации. Отбрасывание это всё же задача для filter, а не raw, если только речь не идёт о защите багов. ИМХО

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

С хотелкой понятно - из коробки не взлетит. Буду танцевать с цепочками. По поводу обработки - да, имелось ввиду именно принятие решения о маршрутизации. А чем плохо отбрасывание в таблице raw, а не в filter? С моей точки зрения - не просчитываем маршрут, значит не расходуем время процессора, сразу смотрим на адреса источника и/или назначения -> DROP, или ACCEPT в зависимости от необходимости. Когда мы переписали на том же микротике все правила из таблицы фильтра и перенесли их в таблицу raw, у нас загрузка процессора упала с 20% до 3-4%. Какой смысл просчитывать маршрут пакета, а потом его всё равно убивать? Единственное что мы теряем - возможность использовать исходящий интерфейс, т.к. в цепочке PREROUTING он ещё не известен. Для простых правил с портами, адресами, по моему, самое то.

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

т.к. в цепочке PREROUTING он ещё не известен. Для простых правил с портами, адресами, по моему, самое то.

В чём суть тогда темы?

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

Суть темы изложена в первом сообщении - мне нужно как-то использовать список интефейсов. Что бы не создавать много однотипных правил, а использовать одно - с этим самым списком. Очевидно, что в качестве списка входящих интерфейсов.

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

Ну есть ещё такая тема - создаёшь новую таблицу, а в PREROUTING проверяешь интерфейс и перенаправляешь в эту таблицу

# отдельная таблица для "списка интерфейсов"
iptables -t raw -N megaxakep
# тут добавление правил

# переход в таблицу по списку интерфейсов
iptables -t raw -A PREROUTING -i eth0 -j megaxakep
iptables -t raw -A PREROUTING -i eth2 -j megaxakep
router ★★★★★
()
Ответ на: комментарий от shtain

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

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

К сожалению, названия интерфейсов слишком однотипные - различаются только на один символ в конце. В таком случае в список попадут все интерфейсы, а мне надо только часть.

У вас их там что тысяча? Сильно сомневаюсь. 4-18 (предполагаемо по количеству интерфейсов) правил большой погоды не сделают.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)

я голосую за маркировку пакетов.
один раз определить правила — если из интерфейса N+1 то маркер M, будет почти тоже самое что создать список этих интерфейсов под одним именем.

system-root ★★★★★
()
Последнее исправление: system-root (всего исправлений: 1)
Ответ на: комментарий от system-root

Мимо. ТС как раз conntrack не хочет использовать.

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

Интерфейсов не тысяча. Необходимое кол-во правил, что-бы прописать для каждого интерфейса переход в нужную цепочку, погоды не сделает. Всё так. Просто вопрос был не в этом. Вопрос был об использовании списка интерфейсов, как это возможно сделать в микротиках. Это просто удобная фича, и я просто хотел бы использовать такую же фичу в iptables, о чём и спросил. Ответ на свой вопрос я получил. Остальное вода.

Toten_Kopf
() автор топика

Используйте ferm, или сразу nftables.

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