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

Формирование сети локального прокси для тестирования веб-сайта

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

Пока мне удалось настроить это следующим образом:

ip link add dummy-SLOW type dummy
ifconfig dummy-SLOW 10.54.0.10 up
tc qdisc add dev dummy-SLOW root tbf rate 120kbit latency 200ms burst 1540

а потом

socat tcp-listen:443,bind=10.54.0.10,reuseaddr,fork tcp:XXX.XXX.XXX.XXX:443

Я также добавил псевдоним в /etc/hosts чтобы я мог видеть сайт по IP-адресу 10.54.0.10 .

Хорошо, я могу видеть сайт через эту настройку, без проблем, адрес 10.54.0.10 даже отображается в Chrome devtools. Но формирование трафика не работает ... Я все еще вижу, что слишком много байтов загружается слишком быстро. Как заставить работать шейпинг трафика?

ПРИМЕЧАНИЕ: ЕСЛИ есть способ, чтобы прокси-сервер выполнял регулирование, это также работает для меня.

Вы можете формировать трафик на своем обычном интерфейсе, не добавляя виртуальный.

Назначьте qdisc уникальный идентификатор

tc qdisc add dev eth0 root handle 1: htb

Присвойте класс определенному выше qdisc. Это считается потомком qdisc. Я использую режим htb, потому что это, по сути, более многофункциональная версия tbf.

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 120kbit latency 200ms burst 1540

Назначьте классу фильтр и активно ищите трафик с меткой «10».

tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 10 fw flowid 1:10

Теперь, когда у TC есть правила, нам нужно отправить трафик в управление трафиком, чтобы он дросселировался.

iptables -A OUTPUT -t mangle -p tcp --dport 443 -j MARK --set-mark 10

Сделав еще один шаг, чтобы не ограничивать всех, кто выполняет трафик 443, давайте напишем правило, которое влияет только на ваш трафик.

iptables -A OUTPUT -t mangle -p tcp -s <client IP > --dport 443 -j MARK --set-mark 10

Помечая наш трафик на выходе с сервера, мы гарантируем, что все (технически% 90) всей вероятной сетевой маршрутизации Linux завершено, и теперь мы готовы отмечать трафик, который соответствует правилу. Источник, являющийся портативным компьютером или другим сервером, на который поступает тест на порт 443, будет отмечен 10 в заголовке пакета. Как только это будет замечено, ядро ​​возьмет пакет и применит к нему правила TC.

Вы можете просмотреть все правила Mangle, выполнив iptables -t mangle -nvL