The OpenNET Project / Index page

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

Пример ограничения полосы пропускания трафика в FreeBSD
Собираем ядро с опциями:
   options         DUMMYNET
   options         IPFIREWALL
Ограничиваем трафик для сеток 1.1.1.0/24 и 3.3.3.0/24 на 14000 кбит/с:
   ipfw add pipe 50 tcp from any to 1.1.1.0/24 via fxp0
   ipfw add pipe 50 tcp from any to 3.3.3.0/24 via fxp0
   ipfw pipe 50 config bw 14Kbit/s
Для внесения задержки на N ms, используйте delay N после config.
Для установки веса данного пайпа по отношению к другим пайпам используйте weight вес.
Для WF2Q ограничения трафика используйте ipfw queue
(queue N config [pipe pipe_nr] [weight weight] [queue {slots | size})
PS (комментарий от gara@mail.ru):
 Если возникает необходимость организовать "канал" для каждого пользователя из данной сети то пишем:
ipfw pipe 10 config mask dst-ip 0x000000ff bw 1024bit/s  queue
ipfw add pipe 10 tcp from any to 1.1.1.0/24 via fxp0
Теперь каждый хост из сети 1.1.1.0/24 имеет свой канал 1024bit/s
 
30.04.2002
Ключи: freebsd, firewall, queue, size, delay, pipe, traffic, ipfw, dummynet / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетный фильтр в FreeBSD: ipfw, IP-Filter

Обсуждение [ RSS ]
  • 1.1, gara (?), 11:00, 14/05/2002 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    все вышеперечисленное работает как правило:
    полоса пропускания для всех IP, т.е. для всех пользователей из сетки 1.1.1.0/24
    суммарно скорость
    прокачки 14000 кбит/с.
    Если возникает необходимость организовать "канал" для каждого пользователя из нанной сети то пишем

    ipfw pipe 10 config mask dst-ip 0x000000ff bw 1024bit/s  queue
    ipfw add pipe 10 tcp from any to 1.1.1.0/24 via fxp0

    Теперь каждый хост из сети 1.1.1.0/24 имеет свой канал 1024bit/s


    А вот как срастить эти два правил (для всех 5Mbit/s но не более
    512Kbit/s для каждого)  пока не знаю.

     
  • 1.2, Аноним (2), 16:30, 18/11/2002 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В /etc/sysctl.conf пишем net.inet.ip.fw.one_pass=0 (или sysctl -w net.inet.ip.fw.one_pass=0). Ну и соответсвенно создаем две pipe - на сеть потом на хосты.
    Могу ошибиться но вроде так.
     
     
  • 2.5, Radist UA (?), 02:56, 16/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Именно так.
    net.inet.ip.fw.one_pass=0
    Сначала общий пайп на 5Mbit/s
    Потом пайп на 512Kbit/s для каждого

    ИМХО предложенное решение создает каналы указанной пропускной способности Но только для ВХОДЯЩЕГО траффика. Для шейпинга и исходящего повторить то-же только поменять from и to местами

     

  • 1.6, Антон (??), 16:18, 04/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а если имеется шлюз в инет, но машины при этом все с реальными ип?подскажите плиз как сделать так, чтобы весь трафик клиентам распределялся пайпами по 512Кбит?..все что тут написано у меня почемуто не проходит?..и эти правила должны быть добавлены в самый конец?
     
  • 1.7, anclbob (??), 00:29, 24/07/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А можно написать пример того как создавать общий pipe , а потом в него запихивать другие pipe ??
     
     
  • 2.8, VoLKL (?), 12:57, 06/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Вот накатал тут скрипт, как думаете будет реально работать

    #!/bin/sh
    ipfw='/sbin/ipfw -q'

    ${ipfw} disable one_pass
    ${ipfw} flush
    ${ipfw} pipe flush
    ${ipfw} add divert natd all from any to any via lnc0

    # Pipe for all users
    #${ipfw} pipe 10 config
    #${ipfw} pipe 20 config

    ${ipfw} queue 10 config pipe 10 weight 50 mask src-ip 0xffffffff
    ${ipfw} queue 20 config pipe 20 weight 50 mask dst-ip 0xffffffff

    ${ipfw} add queue 10 all from 192.168.0.0/24 to any out via lnc0
    ${ipfw} add queue 20 all from any to 192.168.0.0/24 in via lnc0

    # Pipe for each user

    ${ipfw} pipe 30 config bw 128Kbit/s mask src-ip 0xffffffff
    ${ipfw} pipe 40 config bw 128Kbit/s mask dst-ip 0xffffffff

    ${ipfw} add pipe 30 all from 192.168.0.0/24 to any out via lnc0
    ${ipfw} add pipe 40 all from any to 192.168.0.0/24 in via lnc0

    # Permissions

    ${ipfw} add allow all from 192.168.0.0/24 to any out via lnc0
    ${ipfw} add allow all from any to 192.168.0.0/24 in via lnc0

     
  • 2.9, VoLKL (?), 12:58, 06/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Вот накатал тут скрипт, как думаете будет реально работать

    #!/bin/sh
    ipfw='/sbin/ipfw -q'

    ${ipfw} disable one_pass
    ${ipfw} flush
    ${ipfw} pipe flush
    ${ipfw} add divert natd all from any to any via lnc0

    # Pipe for all users
    #${ipfw} pipe 10 config
    #${ipfw} pipe 20 config

    ${ipfw} queue 10 config pipe 10 weight 50 mask src-ip 0xffffffff
    ${ipfw} queue 20 config pipe 20 weight 50 mask dst-ip 0xffffffff

    ${ipfw} add queue 10 all from 192.168.0.0/24 to any out via lnc0
    ${ipfw} add queue 20 all from any to 192.168.0.0/24 in via lnc0

    # Pipe for each user

    ${ipfw} pipe 30 config bw 128Kbit/s mask src-ip 0xffffffff
    ${ipfw} pipe 40 config bw 128Kbit/s mask dst-ip 0xffffffff

    ${ipfw} add pipe 30 all from 192.168.0.0/24 to any out via lnc0
    ${ipfw} add pipe 40 all from any to 192.168.0.0/24 in via lnc0

    # Permissions

    ${ipfw} add allow all from 192.168.0.0/24 to any out via lnc0
    ${ipfw} add allow all from any to 192.168.0.0/24 in via lnc0

     

  • 1.10, Александр (??), 12:43, 16/01/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как разделить общий канал при условии:
    в общем канале есть пользователи
    1я очередь - пользователи с высоким приоритетом,
    2я очередь - пользователи с низким приоритетом
    3я очередь - все что осталось, делят между собой пользователи с выделеной полосой 128, 256к и получали свою полосу в случае если общая полоса не занята пользователями с высокими приоритетами. 1 и 2

     
  • 1.11, luser (??), 10:37, 09/06/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сделал так как написано выше:
    # Pipe for each user

    ${ipfw} pipe 30 config bw 128Kbit/s mask src-ip 0xffffffff
    ${ipfw} pipe 40 config bw 128Kbit/s mask dst-ip 0xffffffff

    ${ipfw} add pipe 30 all from 192.168.0.0/24 to any out via lnc0
    ${ipfw} add pipe 40 all from any to 192.168.0.0/24 in via lnc0

    Скорость входящая ограничивается идеально. Но исходящая не режется. В чем подвох?

     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




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

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