Форма 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
1 ответ
Если вы работаете с загрузкой трафика, значит, ваш конфиг хорош. Формирование трафика работает только для выходного трафика. Это связано с тем, что формирование управляет буферами отправки интерфейса и не влияет на принимающую сторону (входной трафик).
Есть два возможных решения: одно - использовать IFB (упомянутый в связанном посте) или настроить выходной шейпинг на другом интерфейсе (без обращения к вашим клиентам). Чтобы уточнить второй пункт:
Clients <=> (download limit) [Server] (upload limit) <=> [Edge router]
Вы хотите формировать трафик на "Сервере", применяя ограничения загрузки и выгрузки на разных интерфейсах, как показано. Загруженные данные - это исходящий трафик на второй интерфейс (не обращенный к вам) ваших клиентов.