1

Доброго времени суток.

Имеется шлюз на Debian.

eth0 - интерфейс провайдера
eth1 - внутренняя сеть (куда раздаётся интернет)
ppp0 - сами знаете чего :-)

доступ открыт на eth0 и ppp0

Локальные ресурсы провайдера на eth0:
10.10.0.0
192.168.0.0
10.190.1.0

Моя сеть eth1:
10.20.0.0


Правила моего шейпера:

#!/bin/bash

/sbin/tc qdisc add dev eth1 root handle 1: htb default 30
/sbin/tc class add dev eth1 parent 1: classid 1:1 htb rate 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:10 htb rate 1024kbit ceil 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:20 htb rate 1024kbit ceil 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:30 htb rate 1024kbit ceil 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:40 htb rate 1024kbit ceil 2560kbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:50 htb rate 1024kbit ceil 2560kbit burst 15k

/sbin/tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
/sbin/tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10
/sbin/tc qdisc add dev eth1 parent 1:30 handle 30: sfq perturb 10
/sbin/tc qdisc add dev eth1 parent 1:40 handle 40: sfq perturb 10
/sbin/tc qdisc add dev eth1 parent 1:50 handle 50: sfq perturb 10

/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.2.1/24 match ip dst 10.20.0.0/24 flowid 1:10
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.20.0.2 flowid 1:20
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.20.0.3 flowid 1:30
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.20.0.4 flowid 1:40
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.20.0.5 flowid 1:50

/sbin/tc qdisc add dev eth1 handle ffff: ingress
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip dst 192.168.2.1/24 police rate 100mbit burst 10k drop flowid :1
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 10.20.0.2 police rate 100mbit burst 10k drop flowid :2
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 10.20.0.3 police rate 100mbit burst 10k drop flowid :3
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 10.20.0.4 police rate 1536kbit burst 10k drop flowid :4
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 10.20.0.5 police rate 1536kbit burst 10k drop flowid :5

/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.2.1/24 match ip dst 10.20.0.0/24 flowid 1:10 - (192.168.2.1 - FTP сервер) - как видите указал прямой ип адрес FTP сервера в локальной сети провайдера, при написании - 192.168.0.0 - правило неработает, и скорость в итоге ограничивается другими правилами ac

Что мне делать в этом случае? я что-то слышал про маркирование пакетов в IPTABLES а потом писать номер этого маркера в настройках шейпера. Может так сделать? только я не знаю как ab

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

Жду помощи и советов!

2

Вот посмотрите темки:
http://local.com.ua/forum/topic/14101-p … ge__st__20
http://www.volmed.org.ru/wiki/index.php … ка_шейпера

3

Большое спасибо, прочел, но к сожалению мне это мало чем помогло.
Хотелось бы, что нибудь попрошу.

Может быть кто нибудь еще чем нибудь поможет?

4

tnega пишет:

еще актуально.

Уже обсуждали на этом форуме. Нужно добавить маршрут вашей локальной машины (10.х.х.х) до шлюза провайдера.

При укусе ядовитой змеи, держите её голову на расстоянии от себя, чтобы она не укусила вас в ответ...

5

Writer пишет:
tnega пишет:

еще актуально.

Уже обсуждали на этом форуме. Нужно добавить маршрут вашей локальной машины (10.х.х.х) до шлюза провайдера.


Поподробнее пожалуйста, если можно.
Допустим моя машина 10.20.0.2
Шлюз провайдера 10.10.64.62

6

поднимаю тему, все еще требуется помощь.

7

Ну ставь mark при запросе локальных ресурсов а потом шейпингом разлувай по mark в какую трубу.
P. S. Не читал твой скрипт.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

8

tnega пишет:

Правила моего шейпера:

#!/bin/bash

/sbin/tc qdisc add dev eth1 root handle 1: htb default 30
/sbin/tc class add dev eth1 parent 1: classid 1:1 htb rate 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:10 htb rate 1024kbit ceil 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:20 htb rate 1024kbit ceil 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:30 htb rate 1024kbit ceil 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:40 htb rate 1024kbit ceil 2560kbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:50 htb rate 1024kbit ceil 2560kbit burst 15k

/sbin/tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
/sbin/tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10
/sbin/tc qdisc add dev eth1 parent 1:30 handle 30: sfq perturb 10
/sbin/tc qdisc add dev eth1 parent 1:40 handle 40: sfq perturb 10
/sbin/tc qdisc add dev eth1 parent 1:50 handle 50: sfq perturb 10

/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.2.1/24 match ip dst 10.20.0.0/24 flowid 1:10
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.20.0.2 flowid 1:20
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.20.0.3 flowid 1:30
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.20.0.4 flowid 1:40
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.20.0.5 flowid 1:50

/sbin/tc qdisc add dev eth1 handle ffff: ingress
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip dst 192.168.2.1/24 police rate 100mbit burst 10k drop flowid :1
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 10.20.0.2 police rate 100mbit burst 10k drop flowid :2
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 10.20.0.3 police rate 100mbit burst 10k drop flowid :3
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 10.20.0.4 police rate 1536kbit burst 10k drop flowid :4
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 10.20.0.5 police rate 1536kbit burst 10k drop flowid :5

Необходимо понимать разницу между rate и ceil. Rate — гарантированная полоса пропуская, Ceil — максимальная полоса которую может получить данный класс,
rate не может быть больше ceil
Параметры rate и ceil для корневого класса должны совпадать. Таким образом мы определяем общую полосу пропускания.
У тебя

/sbin/tc qdisc add dev eth1 root handle 1: htb default 30
/sbin/tc class add dev eth1 parent 1: classid 1:1 htb rate 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:10 htb rate 1024kbit ceil 100mbit burst 15k
-
/sbin/tc class add dev eth1 parent 1:1 classid 1:30 htb rate 1024kbit ceil 100mbit burst 15k
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.2.1/24 match ip dst 10.20.0.0/24 flowid 1:10

Может стоит поднять rate на 1:30 и на 1:10?

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

9

Kettler пишет:
tnega пишет:

Правила моего шейпера:

#!/bin/bash

/sbin/tc qdisc add dev eth1 root handle 1: htb default 30
/sbin/tc class add dev eth1 parent 1: classid 1:1 htb rate 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:10 htb rate 1024kbit ceil 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:20 htb rate 1024kbit ceil 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:30 htb rate 1024kbit ceil 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:40 htb rate 1024kbit ceil 2560kbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:50 htb rate 1024kbit ceil 2560kbit burst 15k

/sbin/tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
/sbin/tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10
/sbin/tc qdisc add dev eth1 parent 1:30 handle 30: sfq perturb 10
/sbin/tc qdisc add dev eth1 parent 1:40 handle 40: sfq perturb 10
/sbin/tc qdisc add dev eth1 parent 1:50 handle 50: sfq perturb 10

/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.2.1/24 match ip dst 10.20.0.0/24 flowid 1:10
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.20.0.2 flowid 1:20
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.20.0.3 flowid 1:30
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.20.0.4 flowid 1:40
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 10.20.0.5 flowid 1:50

/sbin/tc qdisc add dev eth1 handle ffff: ingress
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip dst 192.168.2.1/24 police rate 100mbit burst 10k drop flowid :1
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 10.20.0.2 police rate 100mbit burst 10k drop flowid :2
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 10.20.0.3 police rate 100mbit burst 10k drop flowid :3
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 10.20.0.4 police rate 1536kbit burst 10k drop flowid :4
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 10.20.0.5 police rate 1536kbit burst 10k drop flowid :5

Необходимо понимать разницу между rate и ceil. Rate — гарантированная полоса пропуская, Ceil — максимальная полоса которую может получить данный класс,
rate не может быть больше ceil
Параметры rate и ceil для корневого класса должны совпадать. Таким образом мы определяем общую полосу пропускания.
У тебя

/sbin/tc qdisc add dev eth1 root handle 1: htb default 30
/sbin/tc class add dev eth1 parent 1: classid 1:1 htb rate 100mbit burst 15k
/sbin/tc class add dev eth1 parent 1:1 classid 1:10 htb rate 1024kbit ceil 100mbit burst 15k
-
/sbin/tc class add dev eth1 parent 1:1 classid 1:30 htb rate 1024kbit ceil 100mbit burst 15k
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip src 192.168.2.1/24 match ip dst 10.20.0.0/24 flowid 1:10

Может стоит поднять rate на 1:30 и на 1:10?

дело не в этом, со скоростью у меня все впорядке.
Проблема в следующем:

скорость не ограничивается с этого ФТП сервера (192.168.2.1) лишь когда я прописываю в правилах - 192.168.2.1 или хотябы 192.168.2.0, а если я прописываю 192.168.0.0 (для того чтобы делать ограничение в скорости всему этому диапазону адресов, так как например на 192.168.1.1 еще висит оффициальынй сайт провайдера) - то правило неработает,  скорость в итоге не "разграничивается" так сказать, в итоге я буду получать 2560 килобит с этих ресурсов.

Правило будет действовать лишь тогда, когда я напишу 192.168.2.0, и то, только на ФТП сервер (192.168.2.1)
Я могу конечно написать два правила 192.168.1.0 добавить, но проблема в другом.
На диапазоне 10.10.0.0 - машины подключенные к сети провайдера, не буду же я делать кучу правил типа 10.10.1.0, 10.10.2.0 и т.д.

Двумя словами - правило неработает лишь когда я пишу - 192.168.0.0, 10.10.0.0.

10

Ммм... может стоит переправить правила и просто маркировать трафик iptables и потом по маркировкам шейпить?
Есть подозрение на правила, которые попадают дважды в область определения.

ЗЫ: это только идея для размышления.

11

В твоём примере 192.168.0.0/24 таким макаром ток с 192.168.0.1 по 192.168.0.254 а фтп 192.168.2.1
а маску какую указываешь? надо бы так 192.168.0.0/16 а так  с 192.168.0.1 по 192.168.255.254
думаю понял ошибку

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

12

zerg пишет:

Ммм... может стоит переправить правила и просто маркировать трафик iptables и потом по маркировкам шейпить?
Есть подозрение на правила, которые попадают дважды в область определения.

ЗЫ: это только идея для размышления.

да, именно так мне и хотелось бы сделать!
но я в этом новичок, хотелось бы хотя бы немного помощи!

13

Kettler пишет:

В твоём примере 192.168.0.0/24 таким макаром ток с 192.168.0.1 по 192.168.0.254 а фтп 192.168.2.1
а маску какую указываешь? надо бы так 192.168.0.0/16 а так  с 192.168.0.1 по 192.168.255.254
думаю понял ошибку

большое спасибо! Вы оказались правы! подозревал, что ошибка в этом.

14

tnega пишет:
Kettler пишет:

В твоём примере 192.168.0.0/24 таким макаром ток с 192.168.0.1 по 192.168.0.254 а фтп 192.168.2.1
а маску какую указываешь? надо бы так 192.168.0.0/16 а так  с 192.168.0.1 по 192.168.255.254
думаю понял ошибку

большое спасибо! Вы оказались правы! подозревал, что ошибка в этом.

И тебе спс примеры люблю сохранять так на будущее.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.