LinuxForum.Fans
Тема

Не ограничивать скорость к локальным ресурсам провайдера

Автор: tnega 14 сообщений 4231 просмотров
#73322

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

Имеется шлюз на дебиан.

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

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

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

Моя сеть eth1:
10.20.0.0


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

text
#!/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 - правило неработает, и скорость в итоге ограничивается другими правилами :(

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

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

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

#74152
sbin написал:

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

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

#75312
tnega написал:
еще актуально.

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

#76377
Writer написал:
[quote=tnega]еще актуально.

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


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

#94827

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

#94988

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

#94993
tnega написал:

Правила моего шейпера:
text
#!/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?

#95749
Kettler написал:
[quote=tnega]
Правила моего шейпера:
text
#!/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?[/quote]

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

скорость не ограничивается с этого ФТП сервера (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.

#95778

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

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

#95780

В твоём примере 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
думаю понял ошибку

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

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

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

#95878
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
думаю понял ошибку

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

#95886
tnega написал:
[quote=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
думаю понял ошибку

большое спасибо! Вы оказались правы! подозревал, что ошибка в этом.[/quote]
И тебе спс примеры люблю сохранять так на будущее.

Войдите или зарегистрируйтесь, чтобы ответить.