Автор Гілка: Обмежити швидкість eth  (Прочитано 2816 раз)

Відсутній Ign1111

  • Письменник
  • *****
  • дописів: 829
  • Карма: +0/-0
  • Linux 4ever!
Чи є якась можливість обмежити швидкість eth. Дивився mii-tool, але окрім як встановлення 100Mbts та вмикання дуплекса нічого не знайшов. В хотілося би зменшити швидкусть до 64 k.
Linux. The future is open.

Відсутній miwa

  • Літератор
  • ******
  • дописів: 1111
  • Карма: +0/-0
Re: Обмежити швидкість eth
« Відповідей #1 : 2006-04-06 09:52:27 »
Глибоко сумніваюсь, що ви зможете обмежити швидкість самого інетфейсу, але швидкість передачі даних через нього можна обмежити файрволом. На жаль, не скажу, як це робиться у лінуксі, бо сам більше справи маю з FreeBSD. У тамтешньому (чи тутешньому, це вже з якого боку дивитись ;о) ) ipfw це робиться за допомогою команд pipe чи queue.
Читайте документацію - вона кермує.

Відсутній hse

  • Графоман
  • ****
  • дописів: 473
  • Карма: +0/-0
  • Gentoo Linux
Re: Обмежити швидкість eth
« Відповідей #2 : 2006-04-06 10:55:51 »
ipfw - провокативний русизм порівняно з iptables  ;)

$ man iptables


   connrate
       This module matches the current transfer rate in a connection.

       --connrate [!] [from]:[to]
              Match against the current connection transfer rate being within
              ’from’ and ’to’ bytes per second. When the "!" argument is used
              before the range, the sense of the match is inverted.


   dstlimit
       This module allows you to limit the packet per second (pps) rate on  a
       per  destination  IP  or per destination port base.  As opposed to the
       ‘limit’ match, every destination ip / destination port  has  it’s  own
       limit.

       --dstlimit avg
              Maximum  average match rate (packets per second unless followed
              by /sec /minute /hour /day postfixes).

       --dstlimit-mode mode
              The limiting hashmode.   Is  the  specified  limit  per  dstip,
              dstip-dstport  tuple, srcip-dstip tuple, or per srcipdstip-dst‐
              port tuple.

       --dstlimit-name name
              Name for /proc/net/ipt_dstlimit/* file entry

       [--dstlimit-burst burst]
              Number of packets to match in a burst.  Default: 5

       [--dstlimit-htable-size size]
              Number of buckets in the hashtable

       [--dstlimit-htable-max max]
              Maximum number of entries in the hashtable

       [--dstlimit-htable-gcinterval interval]
              Interval between garbage collection runs of the  hashtable  (in
              miliseconds).  Default is 1000 (1 second).

       [--dstlimit-htable-expire time
              After  which  time  are idle entries expired from hashtable (in
              miliseconds)?  Default is 10000 (10 seconds).




   fuzzy
       This module matches a rate limit based on  a  fuzzy  logic  controller
       [FLC]

       --lower-limit  number"
              Specifies the lower limit (in packets per second).

       --upper-limit number
              Specifies the upper limit (in packets per second).



   hashlimit
       This  patch  adds a new match called ’hashlimit’.  The idea is to have
       something like ’limit’, but either per  destination-ip  or  per  (des‐
       tip,destport) tuple.

       It gives you the ability to express

               ’1000 packets per second for every host in 192.168.0.0/16’

               ’100 packets per second for every service of 192.168.1.1’

       with a single iptables rule.

       --hashlimit rate
              A rate just like the limit match

       --hashlimit-burst num
              Burst value, just like limit match

       --hashlimit-mode destip | destip-destport
              Limit per IP or per port

       --hashlimit-name foo
              The name for the /proc/net/ipt_hashlimit/foo entry

       --hashlimit-htable-size num
              The number of buckets of the hash table

       --hashlimit-htable-max num
              Maximum entries in the hash

       --hashlimit-htable-expire num
              After how many miliseconds do hash entries expire

       --hashlimit-htable-gcinterval num
              How many miliseconds between garbage collection intervals


   quota
       Implements network quotas by decrementing a  byte  counter  with  each
       packet.

       --quota bytes
              The quota in bytes.

       KNOWN BUGS: this does not work on SMP systems.


   time
       This matches if the packet arrival time/date is within a given  range.
       All options are facultative.

        --timestart value
              Match  only  if it is after ‘value’ (Inclusive, format: HH:MM ;
              default 00:00).

       --timestop  value
              Match only if it is before ‘value’ (Inclusive, format: HH:MM  ;
              default 23:59).

       --days listofdays
              Match  only  if  today  is  one  of  the  given  days. (format:
              Mon,Tue,Wed,Thu,Fri,Sat,Sun ; default everyday)

       --datestart date
              Match  only  if  it  is  after   ‘date’   (Inclusive,   format:
              YYYY[:MM[:DD[:hh[:mm[:ss]]]]] ; h,m,s start from 0 ; default to
              1970)

       --datestop date
              Match  only  if  it  is  before  ‘date’   (Inclusive,   format:
              YYYY[:MM[:DD[:hh[:mm[:ss]]]]] ; h,m,s start from 0 ; default to
              2037)



   NFQUEUE
       This target is an extension of the QUEUE target. As opposed to  QUEUE,
       it  allows  you to put a packet into any specific queue, identified by
       its 16-bit queue number.

       --queue-num value
              This specifies the QUEUE number to use. Valud queue numbers are
              0 to 65535. The default value is 0.

       It  can  only  be  used with Kernel versions 2.6.14 or later, since it
       requires
              the nfnetlink_queue kernel support.

....................


« Змінено: 2006-04-06 12:03:46 від miwa »
бушократія - цинічний помаранчевий геноцид, витравлювання Української Нації, плюс мікрософтизація всієї країни.

Відсутній miwa

  • Літератор
  • ******
  • дописів: 1111
  • Карма: +0/-0
Re: Обмежити швидкість eth
« Відповідей #3 : 2006-04-06 12:07:16 »
ipfw - провокативний русизм порівняно з iptables  ;)

Підтвердити свої слова зможете, чи знову газифікуєте калюжі?
До речі, про всяк випадок уточню - мова йде про ipfw v2, введений типовим у 5-й гілці і пропонований тепер таким у четвертій.
Читайте документацію - вона кермує.

Відсутній hse

  • Графоман
  • ****
  • дописів: 473
  • Карма: +0/-0
  • Gentoo Linux
Re: Обмежити швидкість eth
« Відповідей #4 : 2006-04-06 13:23:16 »
Гм... цікаво на що здатний ipfw v2. Можна було б придумати якийсь гіпотетичний мережевий екран та глянути на його реалізації в iptables & ipfw, але дозволяється використовувати сторонні патчі для ядер та фаєрволів типу: http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/ http://l7-filter.sourceforge.net/ та інші... Хоча можливості сучасних екранів настільки потужні, що реалізація конкретного екрану більше залежатиме від знань того хто його пише, а не від iptables чи ipfw... Ну і напевно не можна пересилати пакети користувацьким прогам і там їх ледве не побітно аналізувати...
бушократія - цинічний помаранчевий геноцид, витравлювання Української Нації, плюс мікрософтизація всієї країни.

Відсутній miwa

  • Літератор
  • ******
  • дописів: 1111
  • Карма: +0/-0
Re: Обмежити швидкість eth
« Відповідей #5 : 2006-04-06 15:55:17 »
Гм... цікаво на що здатний ipfw v2.
Доволі необережно спершу казати, що ipfw далеко позаду у порівнянні з iptables, а потім цікавитись, на що він здатен, вам не видається? ;о)
Хоча можливості сучасних екранів настільки потужні, що реалізація конкретного екрану більше залежатиме від знань того хто його пише, а не від iptables чи ipfw...
+1
Ну і напевно не можна пересилати пакети користувацьким прогам і там їх ледве не побітно аналізувати...
Перенаправити пакети куди-небудь можна, а далі - то вже справи користувацької програми. То й же squid, mysql etc [майже]однакові для всіх юніксів, НМВ.
Читайте документацію - вона кермує.

Відсутній hse

  • Графоман
  • ****
  • дописів: 473
  • Карма: +0/-0
  • Gentoo Linux
Re: Обмежити швидкість eth
« Відповідей #6 : 2006-04-07 11:27:12 »
Я про користь подумав, а не про небезпеку ;), можна було б приклади реалізації iptables & ipfw розмістити на DLOU тож їх можна буде всім поправляти...

Також я мав на увазі що вся фільтрація повинна здійснюватись на рівні ядра, тобто не бажано divert-том завертати трафік до користувацьких програм, а потім повертати його для подальшої фільтрації в ipfw.
бушократія - цинічний помаранчевий геноцид, витравлювання Української Нації, плюс мікрософтизація всієї країни.

Відсутній miwa

  • Літератор
  • ******
  • дописів: 1111
  • Карма: +0/-0
Re: Обмежити швидкість eth
« Відповідей #7 : 2006-04-07 15:26:02 »
Я про користь подумав, а не про небезпеку ;), можна було б приклади реалізації iptables & ipfw розмістити на DLOU тож їх можна буде всім поправляти...
Заперечувати корисність ipfw - доволі небезпечно, як на мене ;о)

Реалізації - маєте на увазі конфіги файрволів? Хм. Цікава ідея. Але для цього там для початку вартувало би розмістити толкову доку як по ipfw так і по iptables. Та й pf також не варто забувати (він є типовим мережевим екраном у 6-й гілці FreeBSD).
Також я мав на увазі що вся фільтрація повинна здійснюватись на рівні ядра, тобто не бажано divert-том завертати трафік до користувацьких програм, а потім повертати його для подальшої фільтрації в ipfw.
divert у FreeBSD реалізований на рівні ядра. І після нього пакет назад у файрвол не повертається: його доля цілком на совісті користувацької програми.
Читайте документацію - вона кермує.

Відсутній hse

  • Графоман
  • ****
  • дописів: 473
  • Карма: +0/-0
  • Gentoo Linux
Re: Обмежити швидкість eth
« Відповідей #8 : 2006-04-07 16:13:35 »
1. Я погано висловив свою думку:-[, мав на увазі не користь ipfw, його користь, як і інших мережевих екранів, під сумнів не ставиться. Я кажу що корисно мати якийсь гіпотетичний приклад екрану реалізований в кількох системах Linux(iptables), *BSD(pf,ipfw) для навчання та їх порівняння...

2. Ну теоритичну статтю на DLOU про ipfw пишіть, я вступ до iptables написав, а далі незліченну кількість модулів описувати певно не вартує, краще практичний приклад розглянути котрий би демонстрував побільше можливостей...

3. потрібно придумати приклад (бажано не тривіальний) далі домовитись, що екрани займатиметься справами екранів, маршрутизацією - програми для маршрутизаторів, проксі надають проксі сервіси... Тоді стаття мала б принаймі дві спільні глави:


1. постановка задачі,

2. по можливості необхідні мережеві налаштування інших однакових сервісів в Юніксах необхідних для реалізації прикладу.

3. ну і для кожної системи свою спицифічну главу, наприклад, для лінукса, потрібно буде описати iptables, sysctl, iproute2, socks* можливо ще щось знадобиться...
бушократія - цинічний помаранчевий геноцид, витравлювання Української Нації, плюс мікрософтизація всієї країни.

Відсутній Ign1111

  • Письменник
  • *****
  • дописів: 829
  • Карма: +0/-0
  • Linux 4ever!
Re: Обмежити швидкість eth
« Відповідей #9 : 2006-04-08 00:16:59 »
Шановні, допоможіть краше розв'язати проблему.  :'(
Linux. The future is open.

Відсутній major

  • Новачок
  • *
  • дописів: 15
  • Карма: +0/-0
  • I Love FreeBSD!
Re: Обмежити швидкість eth
« Відповідей #10 : 2006-04-08 11:45:24 »
Проблема вирішується методами штатних файерволів.
Якщо у Вас FreeBSD використовуйте ipfw, якщо linux - iptables.
Якщо Ви хочете не читати мани, а отримати робочу конфігурацію, то хоч точно поставте задачу!

Відсутній hse

  • Графоман
  • ****
  • дописів: 473
  • Карма: +0/-0
  • Gentoo Linux
Re: Обмежити швидкість eth
« Відповідей #11 : 2006-04-08 16:33:43 »
Ну мені здається в постах вище все необхідне було вже сказане...

Якщо є локалка з шлюзом в інет і комп в локалці який повинен в інет ходити з 64К то я би  обмежував лише швидкість до інету і/або форвардінг, дла пакетів того компа в інет, на роутері, а з усіма компами в локалці, включно з роутером, хай працює на максимумі...

Для встановлення рамок швидкості передачі я спочатку спробував би скористався модулем fuzzy котрий можна знайти в патчі ядра patch-o-matic-ng

64 000 / 1500 ~ 42

Тоді для компа з ІР 10.0.0.10/24 можна спрбувати додати щось типу:
iptables -t filter -A OUTPUT -p ALL -o eth0 -s 10.0.0.10 -d 10.0.0.0/24 -j ACCEPT
iptables -t filter -A OUTPUT -p ALL -o eth0 -s 10.0.0.10 -d 0/0 -m fuzzy --upper-limit 42 -j ACCEPT

iptables -t mangle -A PREROUTING -p ALL -i eth0 -s 10.0.0.0/24 -d 10.0.0.10 -j ACCEPT
iptables -t mangle -A PREROUTING -p ALL -i eth0 -s 0/0 -d 10.0.0.10 -m fuzzy --upper-limit 42 -j ACCEPT
Тільки/додатково на маршрутизаторі 10.0.0.254/24 можна зробити щось типу:
iptables -t mangle -A PREROUTING -p ALL -i eth1 -s 10.0.0.10 -d 10.0.0.254 -j ACCEPT
iptables -t mangle -A PREROUTING -p ALL -i eth1 -s 10.0.0.10 -d 0/0 -m fuzzy --upper-limit 42 -j ACCEPT

iptables -t mangle -A FORWARD -p ALL -i eth0 -s 0/0 -d 10.0.0.10 -m fuzzy --upper-limit 42 -j ACCEPT
iptables -t mangle -A FORWARD -p ALL -i eth0 -s 0/0 -d 10.0.0.0/24 -j ACCEPT
Документація
Ну і перед тим як відкинути паект записуй його в журнал, щоб можна було знайти помилки.
бушократія - цинічний помаранчевий геноцид, витравлювання Української Нації, плюс мікрософтизація всієї країни.

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: Обмежити швидкість eth
« Відповідей #12 : 2006-04-11 12:09:24 »
Якщо у вас FreeBSD то можна використати ipfw (доволі легко  робиться),
а якщо Linux то можна спробувати htb, cbq або щось інше  вибрати із  цієї статті http:// http://www.opennet.ru/base/net/linux_traffic_qos.txt.html

Відсутній megabit

  • Новачок
  • *
  • дописів: 3
  • Карма: +0/-0
  • I Love YaBB 2!
Re: Обмежити швидкість eth
« Відповідей #13 : 2006-09-28 01:01:00 »
www.google.com шукаємо HTB :)