Author Topic: Как распознать в iptables пакеты, идущие конкретному приложению  (Read 3916 times)

0 Members and 1 Guest are viewing this topic.

Offline BuTbKa

  • Newbie
  • *
  • Posts: 40
  • Karma: +2/-0
Есть линукс, в них сквид и айпитаблес.
Есть задача маркировать пакеты, которые генерирует сквид: исходящие запросы и входящие ответы.
Первая часть задачи решается легко: делаем -t mangle -A OUTPUT -m owner --uid-owner squid -j MARK.
Вторая часть задачи решается тяжело, и я хотел бы найти лучшее решение.

Сейчас мне пришло в голову snat'ить пакеты сквида на определённый диапазон портов, а потом делать
-A INPUT -p tcp --dport мой:диапазон
Для надёжности ещё добавить -m state --state ESTABLISHED, чтобы исключить случайно залетевшие пакеты.

Но здесь возникает новый вопрос: как предотвратить использование этого диапазона другими программами?
Тут же в голове рождается новое хитрое решение: проверять в OUTPUT --sport соединений, идущих не от сквида, и если он в нашем диапазоне, то snat'ить в другой диапазон.

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

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
"Для протокола"
Как я уже говорил, на #tlug
Можно попробовать взять модуль connmark http://home.regit.org/?page_id=7
К сожалению, в работе не испробовал, нужен был для "хитрого" DNAT, но возникли проблемы со сборкой на "хитром" железе (ASUS wl500gp).

Offline Samogon

  • Newbie
  • *
  • Posts: 11
  • Karma: +0/-0
    • http://
А смысл всего объясни, для чего ты это делаешь? Возможно есть другие пути.

Offline BuTbKa

  • Newbie
  • *
  • Posts: 40
  • Karma: +2/-0
Тема закрыта, connmark помог