最近剛好工作上有需要, 需要針對一些網路情況不佳的裝置去做一些實驗; 但問題來了, 要在實務上去真的找到這種裝置其實蠻難的, 這時候Linux 提供了一些很好模擬的方式來對特定的網路界面模擬上述情境…
限制網路界面的速率
再做了一些快速的瀏覽以後, 看起來在Linux中主要是透過 tc
這個指令來做 traffic control, 不過社群中有人提供了一個更簡便的方式 wondershaper, 如果OS是ubuntu 的話可以用 sudo apt-get install wondershaper
就可以安裝了.
一些常見的指令範例有:
設定eth1
的download=256kbps, upload=128kbps
sudo wondershaper eth1 256 128
清除 eth1
的流量設定
sudo wondershaper clear eth1
設定網路界面的packet lost 機率
這個情境下, 我們可以模擬網路掉包在不同嚴重程度的情況下的情境; 主要是透過 iptables
來達成, 可以參考以下範例:
設定來源ip為 123.123.123.123
且封包到這台電腦的 local port為 3000
時, 其packet drop的機率為 5%
sudo iptables -I INPUT -s 123.123.123.123 -p tcp --dport 3000 -m statistic --mode random --probability 0.05 -j ACCEPT