Перейти к содержимому
Калькуляторы

Нужен совет про ipset linux

Есть необходимость "матчить" пакеты на принадлежность к локальной сети.

Т.е. если srcip и dstip принадлежат к списку локальных подсетей - то пакет локальный.

Список локальных подсетей - набор типа nethash

ipset -N LOCALS nethash --hashsize 1024 --probes 4 --resize 50
Содержит обычно ~300 элементов

Вопрос:

Можно ли проверить принадлежность пакета к локалке одной строкой iptables ?

Т.е. что бы за 1 правило iptables проверить и srcip и dstip.

ведь такое правило:

iptables -t mangle -A FORWARD -m set --set LOCALS src -j MATCH
проверяет только srcip

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Предполагаю, что iptables -t mangle -A FORWARD -m set --set LOCALS src,dst -j MATCH

Если не сработает, то нужно в два правила. Ну будут у вас правила масштабироваться как O(2), а не O(1). Все равно время поиска в хэше без коллизий -- это константа, так что разница будет незаметна.

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Насколько я помню, src,dst - это src && dst, а не src || dst.

ТС, а зачем Вам это нужно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Насколько я понимаю в случае и nethash вообще нет смысла использовать 2 аргумента --set.

Ведь 2 и более используются если есть binding.

 

>а зачем Вам это нужно?

"Локалку" не нужно шейпить и ненужно генерить netflow.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

>а зачем Вам это нужно?

"Локалку" не нужно шейпить и ненужно генерить netflow.

Нет, зачем в одну строку? Проще ведь два правила, одно для src, другое для dst. Что-то типа

-N locals

-A locals -m set ! --set LOCALS src -j RETURN

-A locals -m set ! --set LOCALS dst -j RETURN

-A locals do_something_here

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Насколько я помню, src,dst - это src && dst, а не src || dst.

Кстати говоря, сделать настраиваемым && и || -- это неплохая идея для патча к ipset.

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Насколько я помню, src,dst - это src && dst, а не src || dst.

ТС, а зачем Вам это нужно?

Вы ошибаетесь. src,dst - это относится к связкам между ip и портом. Запись означает делать выборку по src ip и dst port

 

Кстати чтобы сравнивать на принадлежность локалки или нет, удобнее просто для инета использовать отдельный сетевой интерфейс и тогда выходят всего 2 правила. Пакеты будут инетными если:

iptables -A FORWARD -i inetEth -j ACCEPT 
iptables -A FORWARD -o inetEth -j ACCEPT

Вроде видел подобные правила и для alias на интерфейсах

Изменено пользователем 6PATyCb

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я не ошибаюсь. Обратите внимание, в каком контексте это было сказано. Речь шла о том, что такая запись означает конъюнкцию атрибутов, а вовсе не о том, что это означает проверку IP и IP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я не ошибаюсь. Обратите внимание, в каком контексте это было сказано. Речь шла о том, что такая запись означает конъюнкцию атрибутов, а вовсе не о том, что это означает проверку IP и IP.

В контексте ответа на предыдущий пост. Там как раз именно об этом и говорилось - чтобы сравнивать ip сетей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну да, Вам, конечно, виднее, что я хотел сказать :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну да, Вам, конечно, виднее, что я хотел сказать :)

Не буду оффтоп раздувать. Будем считать что мне неправильно показалось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.