用於網站測試的網路整形本地代理

用於網站測試的網路整形本地代理

我想為 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 開發工具中。但流量整形不起作用...我仍然看到太多位元組下載得太快。如何使流量整形發揮作用?

注意:如果有一種方法可以讓代理進行限制,那麼這也適合我。

答案1

您可以調整常規介面上的流量,而無需新增虛擬介面。

為 qdisc 分配唯一 ID

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

透過標記離開伺服器的流量,我們確保所有可能的 Linux 網路路由(技術上 %90)都已完成,現在我們準備標記與規則相符的流量。來源是筆記型電腦或另一台伺服器,其中測試進入連接埠 443,將在封包標頭中標記為 10。一旦發現這一點,核心將獲取資料包並對其應用 TC 規則。

您可以透過以下方式查看所有 mangle 規則iptables -t mangle -nvL

相關內容