网络环境模拟和测试

Ubuntu下,网络环境模拟以及测试,可以使用自带命令netem和tc,需要注意的是:此方法只能控制发包动作,不能控制收包动作,同时,它直接对物理接口生效,如果控制了物理的eth0,那么逻辑网卡(比如eth0:1)也会受到影响,反之,如果您在逻辑网卡上做控制,该控制可能是无效的。
(注:虚拟机中的多个网卡可以在虚拟机中视为多个物理网卡)

常用命令如下:

  1. 模拟延迟传输

    1
    tc qdisc add dev eth0 root netem delay 100ms 10ms 50%

    说明:

    • eth0: 表示需要操作的网卡。
    • 100ms:基础延迟为100ms。
    • 10ms:浮动延迟范围±10ms。
    • 50%: 50%的包进行浮动延迟。
  2. 模拟网络丢包

    1
    tc qdisc add dev eth0 root netem delay loss 3% 50% 

    说明:

    • 3%:随机丢包3%。
    • 50%:丢包成功率50%。
  3. 查看当前网卡配置

    1
    tc qdisc show dev eth0
  4. 删除当前网卡配置

    1
    tc qdisc del dev eth0 root

    说明:

    • 不需要要模拟时,一定要删除掉配置,以防影响正常使用。

参考:https://cizixs.com/2017/10/23/tc-netem-for-terrible-network/