Сеть формирует локальный прокси для тестирования сайта

Я хочу создать виртуальный сетевой интерфейс для 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

Другие вопросы по тегам