Сеть формирует локальный прокси для тестирования сайта
Я хочу создать виртуальный сетевой интерфейс для 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. Но формирование трафика не работает... Я все еще вижу слишком много байт, загружаемых слишком быстро. Как я могу заставить трафик работать?
Примечание: если есть способ заставить прокси делать дросселирование, хорошо, что также работает для меня.
1 ответ
Вы можете формировать трафик на своем обычном интерфейсе, не добавляя виртуальный.
Назначьте 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