Назад | Перейти на главную страницу

shape dropbox на Linux-роутере с tc и iptables

Другая машина в моей локальной сети загружает данные в Dropbox и загружает пропускную способность моего интернет-соединения. Когда это происходит, мои пинги до 8.8.8.8 занимают 3000-6000 мс. Когда Dropbox не загружает, мои пинги в 8.8.8.8 составляют 45 мс.

Я пытаюсь просто замедлить и снизить приоритет перенаправленного трафика в / из Dropbox на моем маршрутизаторе Linux.

Я пробовал 2 немного разных руководства и ни с одним из них не добился успеха. Я думаю, что один фактор, который сбивает с толку, заключается в том, что трафик Dropbox ускоряется и замедляется каждую минуту или две. У меня нет доступа к машине, выполняющей загрузку Dropbox, поэтому я не понимаю, почему трафик высокий в течение нескольких минут, а затем низкий в течение нескольких секунд, колеблющийся. Может быть, загружается много файлов и между каждым файлом есть пауза.

Я сделал 3 попытки на основе 3 немного разных руководств в Интернете.

Насколько я понимаю, 1:30 - это класс трафика с самым низким приоритетом, которым я хочу, чтобы Dropbox был.

Обновить: Я немного адаптировал это, чтобы сформировать загрузку, которую я запускал со своего компьютера. Ограничение скорости сработало, как ожидалось. Однако теперь я должен протестировать загрузку.

Попытка 1

#!/bin/bash
tc qdisc add dev br0 root handle 1:0 htb default 1
tc class add dev br0 parent 1:0 classid 1:30 htb rate 64kbps ceil 128kbps prio 0
tc filter add dev br0 parent 1:0 prio 0 protocol ip handle 30 fw flowid 1:30
iptables -I FORWARD -t mangle -s 162.125.0.0/16,199.47.216.0/22,108.160.160.0/20,205.189.0.0/24,64.124.102.192/29,209.99.70.0/24,45.58.64.0/20,208.185.144.160/27 -j MARK --set-mark 30
iptables -I FORWARD -t mangle -d 162.125.0.0/16,199.47.216.0/22,108.160.160.0/20,205.189.0.0/24,64.124.102.192/29,209.99.70.0/24,45.58.64.0/20,208.185.144.160/27 -j MARK --set-mark 30

iptables-save -c показывает, что соответствующий трафик отмечается

[145:212599] -A FORWARD -d 162.125.0.0/16 -j MARK --set-xmark 0x1e/0xffffffff
[72:2880] -A FORWARD -s 162.125.0.0/16 -j MARK --set-xmark 0x1e/0xffffffff

Попытка 2

#!/bin/bash
#tc qdisc add dev br0 root handle 1: htb
#tc class add dev br0 parent 1: classid 1:30 htb rate 32kbps ceil 64kbps
#tc filter add dev br0 parent 1: prio 0 protocol ip handle 30 fw flowid 1:30
#iptables -I FORWARD -t mangle -s 162.125.0.0/16,199.47.216.0/22,108.160.160.0/20,205.189.0.0/24,64.124.102.192/29,209.99.70.0/24,45.58.64.0/20,208.185.144.160/27 -j MARK --set-mark 30
#iptables -I FORWARD -t mangle -d 162.125.0.0/16,199.47.216.0/22,108.160.160.0/20,205.189.0.0/24,64.124.102.192/29,209.99.70.0/24,45.58.64.0/20,208.185.144.160/27 -j MARK --set-mark 30

Попытка 3

tc qdisc add dev br0 root handle 1: htb default 1
#Second add a class (bucket) with bandwidth restrictions
tc class add dev br0 parent 1: classid 1:30 htb rate 512kbit
#Then add a filter to force packets through the class
tc filter add dev br0 protocol ip parent 1:0 prio 1 handle 1 fw classid 1:30
iptables -I FORWARD -t mangle -s 162.125.0.0/16,199.47.216.0/22,108.160.160.0/20,205.189.0.0/24,64.124.102.192/29,209.99.70.0/24,45.58.64.0/20,208.185.144.160/27 -j MARK --set-mark 0x1
iptables -I FORWARD -t mangle -d 162.125.0.0/16,199.47.216.0/22,108.160.160.0/20,205.189.0.0/24,64.124.102.192/29,209.99.70.0/24,45.58.64.0/20,208.185.144.160/27 -j MARK --set-mark 0x1

Если у вас он работает для загрузки трафика, то ваша конфигурация в порядке. Формирование трафика работает только для исходящего трафика. Это связано с тем, что формирование управляет буферами отправки интерфейса и не влияет на принимающую сторону (входящий трафик).

Есть два возможных решения: одно - использовать IFB (упомянутый в связанной публикации), или для настройки формирования исходящего трафика на другом интерфейсе (не обращенном к вашим клиентам). Чтобы прояснить второй момент:

Clients <=> (download limit) [Server] (upload limit) <=> [Edge router]

Вы хотите формировать трафик на «сервере», применяя ограничения на загрузку и выгрузку на разных интерфейсах, как показано. Загруженные данные - это исходящий трафик на второй интерфейс (не обращенный к вам) ваших клиентов.

Вот похожие посты: post1, и post2.