Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по FreeBSD (http://forum.oszone.net/forumdisplay.php?f=10)
-   -   [решено] Ограничить канал на интернет (http://forum.oszone.net/showthread.php?t=88710)

Vygov 16-08-2007 12:34 628448

Ограничить канал на интернет
 
Приветствую!
Есть сервак с FreeBSD 4.10 R.-P4, на котором стоит шлюз. Есть рабочие станции, которые выходят в интернет через этот шлюз.
Подскажите, пожалуйста, как каждому юзеру назначить определенную скорость, с которой он может выходить в инет.

Vygov 16-08-2007 13:00 628462

Понял, курю IPFW. Сразу вопрос. Решил потестить ширину канала на машине с адресом 192.168.111.9. Настраиваю пока все с ходу, не записывая в ipfw.rules, чтобы в случае какой-нибудь непонятки слетело все после перезагрузки.
Реальная ширина канала 256Kbit/s.
Последовательность команд:
ipfw add pipe 1 tcp from 192.168.111.9 to any out
ipfw add pipe 1 tcp from 192.168.111.9 to any in
ipfw pipe 1 config bw 32Kbit/s
ipfw pipe 2 config bw 32Kbit/s
Тестирую скорость, но инет так и продолжает шпарить с 256Kbit/s.
В чем я допустил ошибку?

P.S. А нештатные средства есть какие-нибудь или встроенный firewall вполне надежен?

Dm1try 16-08-2007 18:01 628652

Ядро собранно с опцией DUMMYNET ?

Igor_I 16-08-2007 18:09 628656

ipfw show
ipfw pipe show
1 с 2 не перепутал?
Ядро пересобрал?
Если каждому, то надо вроде бы использовать маску. В смысле, что не прописывать сотни правил на каждую машину, а сразу определить общее поведение.

Vygov 17-08-2007 09:36 628894

Цитата:

Цитата Dm1try
Ядро собранно с опцией DUMMYNET ?

Да.
Цитата:

Цитата Igor_I
ipfw show
ipfw pipe show
1 с 2 не перепутал?
Ядро пересобрал? >>>

Все правила присутствуют, 1 с 2 не перепутал, просто здесь написал неправильно, по ipfw pipe show выдает:

00001: 32.000 Kbit/s 0 ms 50 sl. 0 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
00002: 32.000 Kbit/s 0 ms 50 sl. 0 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000

Все в порядке. Ядро не пересобирал, потому что в конфиге ядра прописано:

options DUMMYNET
options IPFIREWALL

Цитата:

Цитата Igor_I
Если каждому, то надо вроде бы использовать маску. В смысле, что не прописывать сотни правил на каждую машину, а сразу определить общее поведение. >>>

Я пока хочу попробовать на одной машине, маску потом сделать не проблема.

Igor_I 17-08-2007 21:03 629192

Лично я все время путаюсь вход-выход :) если убрать in-out
и сделать

ipfw pipe 1 config bw 32Kbit/s
ipfw pipe 2 config bw 32Kbit/s
ipfw add pipe 1 tcp from 192.168.111.9 to any
ipfw add pipe 2 tcp from any to 192.168.111.9

Igor_I 18-08-2007 08:40 629315

Цитата:

Цитата Vygov
00001: 32.000 Kbit/s 0 ms 50 sl. 0 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
00002: 32.000 Kbit/s 0 ms 50 sl. 0 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000

Судя по нулям, ни одного пакета не соответствует этим правилам. Смотри ipfw show.

Vygov 21-08-2007 14:18 630740

Цитата:

Цитата Igor_I
Лично я все время путаюсь вход-выход если убрать in-out
и сделать
ipfw pipe 1 config bw 32Kbit/s
ipfw pipe 2 config bw 32Kbit/s
ipfw add pipe 1 tcp from 192.168.111.9 to any
ipfw add pipe 2 tcp from any to 192.168.111.9 >>>

Попробовал, скорость не изменилась.
Цитата:

Цитата Igor_I
Судя по нулям, ни одного пакета не соответствует этим правилам. Смотри ipfw show. >>>

Код:

ipfw show
00100 2482944 1069009847 divert 8668 ip from any to any via xl0
00200 1187203  219726641 allow ip from 210.40.30.6 to any out xmit xl0
00300  112140  45179018 allow ip from any to 210.40.30.6 in recv xl0
00400 1183541  804101788 allow ip from any to 192.168.111.0/24 via xl0
00500  29619    8328569 allow ip from 192.168.111.0/24 to 192.168.111.1 in recv fxp0
00600  34469  26393825 allow ip from 192.168.111.1 to 192.168.111.0/24 out xmit fxp0
00700 1091176  204047454 allow ip from 192.168.111.0/24 to any in recv fxp0
00800 1183541  804101788 allow ip from any to 192.168.111.0/24 out xmit fxp0
00900  114484  104630922 allow ip from any to any via lo0
01000      0          0 deny ip from any to 127.0.0.0/8
01100      0          0 deny ip from 127.0.0.0/8 to any
01200      0          0 pipe 1 tcp from 192.168.111.9 to any
01300      0          0 pipe 2 tcp from any to 192.168.111.9
65535    5351    1754264 deny ip from any to any


Igor_I 21-08-2007 19:44 630905

По нулям? Практически все пакеты уходят через верхние правила.
Если поставить нужные правила после divert?

Vygov 22-08-2007 10:03 631187

Верно, сработало! Респект!

Вот только бы еще понять, почему правила не сработали внизу.

Igor_I 22-08-2007 19:49 631577

Потому что правила проверяются сверху вниз, как только находится соответствие пакета правилу, проверка прекращается.

Vygov 23-08-2007 08:48 631763

Понял. Еще раз спасибо.

Igor_I 24-08-2007 19:40 632586

mar!!
За что!?


Время: 16:11.

Время: 16:11.
© OSzone.net 2001-