The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
ipfw && limit, !*! weldpua2008, 19-Янв-09, 04:16  [смотреть все]
Привет всем
/>uname -r
6.2-RELEASE-p12
Организовываю ограничение по скорости на пользователей созданием 4-5 pipe'ов:

cmd="/sbin/ipfw -q add "
bw="/sbin/ipfw pipe "
u512=table\(10\)
$cmd 200  pipe 200 all from not 10.0.0.0/8 to $u512 in
$cmd 200  pipe 200 all from $u512 to not 10.0.0.0/8 out
$bw 200 config mask dst-ip 0x000000ff bw 512Kbit/s
и т.д.

Как теперь можно ограничить количество соединений для диапазона портов?
то есть Я хочу ограничить для каждого ИП находящегося в таблице table\(10\) допустим так:
максимальное количество входящих ИП для портов >1024 = 100, для остальных 200

Если Я увеличу количество pipe'ов в два раза и сделаю так будет ли работать?:

pipe 200 ip from table(5) to not me dst-port 1024-65535 out limit dst-addr 100
pipe 200 ip from table(5) to not me dst-port 1-1024 out limit dst-addr 200

pipe 200 ip from not me 1024-65535 to table(5) in src-addr 100
pipe 200 ip from not me 1-1024  to table(5) in src-addr 200

  • ipfw && limit, !*! RSG, 11:19 , 22-Янв-09 (1)
    >[оверквотинг удален]
    >ли работать?:
    >pipe 200 ip from table(5) to not me dst-port 1024-65535 out limit
    >dst-addr 100
    >pipe 200 ip from table(5) to not me dst-port 1-1024 out limit
    >dst-addr 200
    >
    >pipe 200 ip from not me 1024-65535 to table(5) in src-addr 100
    >
    >pipe 200 ip from not me 1-1024  to table(5) in src-addr
    >200

    Во первых, limit это STATEFUL firewall и как результат создает динамические правила. Как следствие, обычно, обратные правила не нужны. А они у Вас есть.

    Во вторых,  как я понимаю скорость так же ограничивается на каждый IP, тогда логичнее было бы писать маску /32 в конфиге от pipe.

    В третьих, т.к. limit динамически создает правила для каждой сессии на определенный порт и pipe у Вас так же определен как динамический, для каждого ипа, то в результате получится что скорость определенная в pipe будет выделена каждой сессии из limit.


    • ipfw && limit, !*! weldpua2008, 15:24 , 23-Янв-09 (2)
      >[оверквотинг удален]
      >есть.
      >
      >Во вторых,  как я понимаю скорость так же ограничивается на каждый
      >IP, тогда логичнее было бы писать маску /32 в конфиге от
      >pipe.
      >
      >В третьих, т.к. limit динамически создает правила для каждой сессии на определенный
      >порт и pipe у Вас так же определен как динамический, для
      >каждого ипа, то в результате получится что скорость определенная в pipe
      >будет выделена каждой сессии из limit.

      Я 3-и раза прочитал и не понял - можно сделать то, что нужна на этом компе или нет?...
      Если да, то Мне нужно с pipe'а ми по одному правилу?...

      ЗЫ:
      Если смотреть table(5) то там будут ип с маской /32

      • ipfw && limit, !*! RSG, 17:25 , 23-Янв-09 (3)
        >Я 3-и раза прочитал и не понял - можно сделать то, что
        >нужна на этом компе или нет?...
        >Если да, то Мне нужно с pipe'а ми по одному правилу?...
        >ЗЫ:
        >Если смотреть table(5) то там будут ип с маской /32

        Я хотел просто обратить внимание на то, что  динамические pipe и limit должны находиться в разных правилах.

        Если идет ограничение на каждый ip то конфиг для пайпа должен выглядить так:
        ipfw pipe 200 config mask dst-ip /32 bw 512Kb

        Ваши правила мне не совсем понятны, например
        pipe 200 ip from table(5) to not me dst-port 1024-65535 out limit dst-addr 100
        Здесь Вы указываете адреса назначения к которым будет применено правило как "not me", и тут же говорите "out". А что, возможные пакеты по направлению к me в то время как они out?

        Нужна схема для более точного написаня правил, но выглядеть по-моему это должно как-то так:

        # Для каждого соединения на порты 1024-65535 с IP из таблицы 5 будут созданы динамические
        # правила для прямого и обратного трафика. Таких соединений возможно не более 100 на каждый IP из таблицы 5.
        # Далее передать трафик на проверку правилу 400
        ipfw add 200 skipto 400 ip from table\(5\) to any dst-port 1024-65535 limit src-addr 100

        # Для каждого соединения на порты 1-1023 с IP из таблицы 5 будут созданы динамические
        # правила для прямого и обратного трафика. Таких соединений возможно не более 200 на каждый IP из таблицы 5.
        # Далее передать трафик на проверку правилу 400
        ipfw add 300 skipto 400 ip from table\(5\) to any dst-port 1-1023 limit src-addr 200

        # На каждый IP из таблицы 5 создать свою (aka динамическую) трубу размером 512. Направление трафика от IP из таблицы 5
        ipfw add 400 pipe 200 ip from table\(5\) to any
        ipfw pipe 200 config mask src-ip /32 bw 512Kb

        # На каждый IP из таблицы 5 создать свою (aka динамическую) трубу размером 512. Направление трафика к IP из таблицы 5
        ipfw add 400 pipe 300 ip from any to table\(5\)
        ipfw pipe 300 config mask dst-ip /32 bw 512Kb

        Если я где-то что-то неправильно понял то поправте.

        • ipfw && limit, !*! agat, 17:50 , 16-Янв-10 (4)
          >[оверквотинг удален]
          >размером 512. Направление трафика от IP из таблицы 5
          >ipfw add 400 pipe 200 ip from table\(5\) to any
          >ipfw pipe 200 config mask src-ip /32 bw 512Kb
          >
          ># На каждый IP из таблицы 5 создать свою (aka динамическую) трубу
          >размером 512. Направление трафика к IP из таблицы 5
          >ipfw add 400 pipe 300 ip from any to table\(5\)
          >ipfw pipe 300 config mask dst-ip /32 bw 512Kb
          >
          >Если я где-то что-то неправильно понял то поправте.

          Не понятная ситуация получается, для чего обрабатывается правило прыгом на 400 правило?
          Нельзя разве сразу написать
          ipfw add 400 pipe 300 ip from any to table\(5\) dst-port 1024-65535




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру