The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Пример ограничения полосы пропускания трафика в 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: 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, Аноним, 16:30, 18/11/2002 [ответить] [смотреть все]
  • +/
    В etc sysctl conf пишем net inet ip fw one_pass 0 или sysctl -w net inet ip fw... весь текст скрыт [показать]
     
     
  • 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:      
    Заголовок:
    Текст:

     Добавить заметку
     Версия для печати
     
     Поиск заметки:
     

    Последние заметки
    - 12.05 Организация шифрованного бэкапа с помощью rdiff-backup, encfs и Dropbox
    - 11.05 Настройка беспроводного соединения в Debian GNU/Linux
    - 07.05 Использование Google Drive в Linux
    - 18.04 Использование нескольких сетевых стеков в Linux
    - 15.04 Восстановление стандартного KDE меню после его удаления (например, wine)
    - 11.04 Настройка gmirror при использовании GPT во FreeBSD 9
    - 09.04 Маршрутизатор на базе FreeBSD с приоритизация трафика средствами PF и ALTQ
    - 02.04 Частичное восстановление данных MySQL из бэкапа, созданного с использованием LVM
    - 21.03 Настройка DNSSEC в BIND 9.9
    - 17.03 Набор номера на Cisco IP Phone 7960/7940 из скрипта
    RSS | Следующие 15 записей >>


    ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Оформить подписку на год


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList