Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Не разрешимая задача в iptables/squid/htb.  (Прочитано 1592 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн triangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
Не разрешимая задача в iptables/squid/htb.
« : 26 Августа 2010, 10:34:59 »
   Доброго времени суток, дорогие форумчане! Решал недавно задачку, по ограничению просмотра/прослушивания видео/аудио с помощью squid/iptables/htb (и в этом мне очень помог мой любимый ubuntu форум, а также opennet.ru).

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

   Это бы решало сразу кучу задач, и по ограничению аудио/видео потоков и по закачке больших файлов (http/ftp). Перерыл все интернеты, ничего не нашел! Но интуиция подсказывает, что это наверняка уже как то реализовано, идея то довольно банальная. Ведь есть в том же iptables и conntrack трасировщик, и критерии limit/limit-burst и много чего еще с этой темой связанного. В конце-концов есть ведь patch-o-matic, там же наверняка, что-то есть. Попытки чтения инфы по patch-o-matic, даются с трудом и пока результатов не принесли.
   Болею этой темой уже вторую неделю. Совсем отчаялся:-(... Ничего не получается! Люди добрые, наверняка кто-нибудь что-нибудь подобное уже реализовывал. Поделитесь опытом, ПОЖАЛУЙСТА!!!

С надеждой на внимание и помощь, triangel.

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #1 : 26 Августа 2010, 11:07:18 »
Немного порыл интернеты и набрёл на утилиту conntrack, которая работает с таблицами nf_conntrack. С помощью неё можно отслеживать эвенты и удалять записи в nf_conntrack таблице. Можно написать демона, который будет слушать вывод conntrack -E -o timestamp -e NEW и рубить коннекты, которым больше минуты с помощью conntrack -D

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28454
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #2 : 26 Августа 2010, 11:32:19 »
Закачку больших файлов это не решит совершенно точно.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн triangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #3 : 26 Августа 2010, 12:27:37 »
Спасибо тем, кто откликнулся :). Особенно Mam(0)n-у, вы не раз меня выручали, за что вам низкий поклон. А по существу, про трассировщик conntrack я и сам сразу подумал, но вот в его таблице /proc/net/ip_conntraсk нужных для себя параметров (time) не нашел. А вот про отдельную утилиту conntrack я не слышал, сейчас загуглю и буду изучать (если несложно киньте пару толковых ссылок, может я на них не напорюсь). Затем планирую сделать скриптик и запускать его как демона. Опыт у меня в этом деле небольшой, но если получиться и не стыдно будет выложить, то выложу в этом посте. Не знаю, правда, сколько времени у меня это все займет :).

p.s.: откровенно сказать я ведь расчитывал, что кто-нибудь уже это делал и может поделиться (если не жалко), своими наработками...

p.p.s.: AnrDaemon-у отвечу. Долгие закачки файлов по http/ftp, по моему этот способ должен решать,если не пользоваться какими-нибудь менеджерами, с докачкой и зеркалами, да и в этом случае тоже если рубить соеденение с данным ip, положим на часик. А на счет торрентов, то придется, наверное оставить стандартный способ, который уже работает.

С надежной на дальнейшее внимание и советы, triangel.

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #4 : 26 Августа 2010, 14:01:09 »
А вот про отдельную утилиту conntrack я не слышал, сейчас загуглю и буду изучать (если несложно киньте пару толковых ссылок, может я на них не напорюсь).
Да я сам только что про неё узнал. Из всего, что мне известно это man conntrack и http://conntrack-tools.netfilter.org/

Оффлайн terrible_user

  • Активист
  • *
  • Сообщений: 438
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #5 : 26 Августа 2010, 15:23:28 »
возможности delay_pools в squid автором уже рассматривались ?
Бери больше, кидай дальше

Оффлайн triangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #6 : 26 Августа 2010, 16:15:17 »
to terrible_user: если вы знаете как реализовать эту идею, при помощи delay_pools, то поделитесь пожалуйста. Я например не смог этого сделать. Все что у меня получилось это резать аудио/видео потоки и другой контент. Опыт показал, что это не всегда помогает. Встречаются аудио потоки, которые приходят на сквид не как аудио...

Идея которую я озвучил в первом посте - контенто-независимая! В этом ее привлекательность, если конечно получиться реализовать...

Оффлайн terrible_user

  • Активист
  • *
  • Сообщений: 438
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #7 : 26 Августа 2010, 17:21:23 »
to terrible_user: если вы знаете как реализовать эту идею, при помощи delay_pools, то поделитесь пожалуйста. Я например не смог этого сделать. Все что у меня получилось это резать аудио/видео потоки и другой контент. Опыт показал, что это не всегда помогает. Встречаются аудио потоки, которые приходят на сквид не как аудио...

Идея которую я озвучил в первом посте - контенто-независимая! В этом ее привлекательность, если конечно получиться реализовать...

Идею: обрывать любое соединение через минуту - нет.
Но при помощи squid'a можно ограничивать скорость, например,  кто-то решил скачать файл, посмотреть видео  - качает, качает - скачал 5Мб и ему скорость обрежет до 10кб\с.
аудио/видео/файлы - лишь бы это проходило через squid.

Подходит вариант или нет - сами решайте.
« Последнее редактирование: 26 Августа 2010, 17:24:22 от terrible_user »
Бери больше, кидай дальше

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28454
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #8 : 27 Августа 2010, 00:02:22 »
Не подходит... сквид, и вообще работа через прокси - это прошлый век. Совершенно не переносимо и не прозрачно без ручного вмешательства в обработку пакетов.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #9 : 27 Августа 2010, 00:28:09 »
Я вот не придумал более простого способа учёта посещенных URL, кроме прозрачного HTTP прокси

Оффлайн triangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #10 : 27 Августа 2010, 11:58:18 »
   Провозился кучу времени, читая доступную документацию по conntrack (из conntrack-tools) и пытаясь хоть что-то сделать на практике. В результате ничего не получилось. Во первых (наверное самое главное) не получается ни какими способами (ни с какими ключами), получить время жизни соеденения! Например, упоминавшейся conntrack -E -o timestamp -e NEW - ничего  о времени жизни соеденения не показывает и вообще не понятно для чего служит этот timestamp. Но если бы конечно в выводимой информации были данные о времени жизни соеденения, то поймать его лучше было бы conntrack -G. Однако увы и ах, время жизни соеденения узнать не получается. А без этого ключевого параметра вся идея теряет смысл.

p.s.: можно было бы модифицировать идею, на трафик. Но как его собирать. Парсить в реалтайме логи сквида - помоему это не вариант!

Вообщем пока ничего - процесс застопорился.

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #11 : 27 Августа 2010, 12:45:07 »
Ты идею не понял. Демон должен собирать от conntrack инфу о коннектах и заносить их в массив. Раз в секунду по массиву должен проходить сборщик, который будет равть коннекты, у которых timestamp старее текущего предположим на 60 cекунд.

Оффлайн triangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #12 : 27 Августа 2010, 15:55:04 »
to Mam(0)n: Да возможно и так, действительно не понял вашей идеи, но то что вы сейчас (в последнем посте) предложили пока еще для меня слишком сложно. (с вырезанием из строк всяких кусочков и регулярными выражениями - это просто труба!)

А по существу еще хочу сказать вот что: Есть такой критерий connbytes, так вот он позволяет реализовать идею с обрезанием потока (соеденения) по критерию, количества скаченного (а не по времени) буквально в одно правило (просто и элегантно). Пример:

#  Соединения, по которым передано более 1 Мб, дропаем
iptables -t filter -A INPUT -m connbytes --connbytes 1024000: --connbytes-dir both --connbytes-mode bytes -j DROP
iptables -t filter -A FORWARD -m connbytes --connbytes 1024000: --connbytes-dir both --connbytes-mode bytes -j DROP
iptables -t filter -A OUTPUT -m connbytes --connbytes 1024000: --connbytes-dir both --connbytes-mode bytes -j DROP

Более, того в этой же статье я нашел частичное описание критерия recent, который, судя по описанию может запоминать в том числе и время поступления пакета. Как он работает я еще не разобрался (несмотря на примеры), штука довольно тонкая и хитрая. НО МНОГООБЕЩАЮЩАЯ!

P.S.: Очень важное замечание, все это я прочел в статье на википедии http://ru.wikipedia.org/wiki/Iptables. Давно очень знал об этой статье, но всегда избегал, так-как читал о ней много нелестных отзывов. А сейчас читаю и не могу оторваться :D. Наверное это лучшее, что я читал по iptables (уж покрайней мере лучше руководства 1.1.19). Может быть это правда лишь только эмоции, но все-же :)...
« Последнее редактирование: 27 Августа 2010, 15:57:37 от triangel »

Оффлайн triangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #13 : 31 Августа 2010, 11:52:59 »
Сам спрашивал, сам и отвечаю :), может кому еще и пригодиться... Ответ на изначальный вопрос:

iptables -A FORWARD -p tcp -m state --state ESTABLISHED -m recent --update --seconds 60 -j DROP

К сожалению у меня сейчас нет возможности это проверить(не поверите, но это целая история :)). Если кто сможет, проверьте, если нет то сам сделаю, когда доберусь до моего тестового шлюзика.

А пока все. Пользуйтесь проблема РЕШЕНА.

(может еще будут правки по синтаксису, но в общем - РЕШЕНА)

Оффлайн terrible_user

  • Активист
  • *
  • Сообщений: 438
    • Просмотр профиля
Re: Не разрешимая задача в iptables/squid/htb.
« Ответ #14 : 31 Августа 2010, 15:40:11 »
iptables -A FORWARD -p tcp -m state --state ESTABLISHED -m recent --update --seconds 60 -j DROPПри таком правиле, как мне кажется, он должен пропускать только 1 пакет установленного соединения раз в 60 сек,  при условии полного отсутствия дальнейшей сетевой активности - иначе время ожидания может продлиться до бесконечности.
Бери больше, кидай дальше

 

Страница сгенерирована за 0.047 секунд. Запросов: 23.