Ivan Rostovikov Опубликовано 17 апреля, 2010 · Жалоба Есть необходимость "матчить" пакеты на принадлежность к локальной сети. Т.е. если 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 17 апреля, 2010 (изменено) · Жалоба Предполагаю, что iptables -t mangle -A FORWARD -m set --set LOCALS src,dst -j MATCH Если не сработает, то нужно в два правила. Ну будут у вас правила масштабироваться как O(2), а не O(1). Все равно время поиска в хэше без коллизий -- это константа, так что разница будет незаметна. Изменено 17 апреля, 2010 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 17 апреля, 2010 · Жалоба Насколько я помню, src,dst - это src && dst, а не src || dst. ТС, а зачем Вам это нужно? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan Rostovikov Опубликовано 17 апреля, 2010 · Жалоба Насколько я понимаю в случае и nethash вообще нет смысла использовать 2 аргумента --set. Ведь 2 и более используются если есть binding. >а зачем Вам это нужно? "Локалку" не нужно шейпить и ненужно генерить netflow. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 17 апреля, 2010 · Жалоба >а зачем Вам это нужно?"Локалку" не нужно шейпить и ненужно генерить 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, а отсеявшийся нелокальный трафик обрабатывать в родительской цепочке. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 17 апреля, 2010 (изменено) · Жалоба Насколько я помню, src,dst - это src && dst, а не src || dst. Кстати говоря, сделать настраиваемым && и || -- это неплохая идея для патча к ipset. Изменено 17 апреля, 2010 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
6PATyCb Опубликовано 21 апреля, 2010 (изменено) · Жалоба Насколько я помню, 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 на интерфейсах Изменено 21 апреля, 2010 пользователем 6PATyCb Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 21 апреля, 2010 · Жалоба Я не ошибаюсь. Обратите внимание, в каком контексте это было сказано. Речь шла о том, что такая запись означает конъюнкцию атрибутов, а вовсе не о том, что это означает проверку IP и IP. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
6PATyCb Опубликовано 21 апреля, 2010 · Жалоба Я не ошибаюсь. Обратите внимание, в каком контексте это было сказано. Речь шла о том, что такая запись означает конъюнкцию атрибутов, а вовсе не о том, что это означает проверку IP и IP. В контексте ответа на предыдущий пост. Там как раз именно об этом и говорилось - чтобы сравнивать ip сетей. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 21 апреля, 2010 · Жалоба Ну да, Вам, конечно, виднее, что я хотел сказать :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
6PATyCb Опубликовано 21 апреля, 2010 · Жалоба Ну да, Вам, конечно, виднее, что я хотел сказать :) Не буду оффтоп раздувать. Будем считать что мне неправильно показалось. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...