弱网测试辅助工具tc/netem pynetem

背景:

上篇文章已经把主机弱网测试环境搭建好了,每次去敲命令行总是不好的。
所以选择了pynetem辅助工具,有提供命令并且替换了api进行服务的集成


弱网设置页面集成

安装

#只能用于linux
pip install pynetem

操作使用

有两种模式:命令行模式、Web模式,两种模式下每次传入新规则都会将旧规则替换掉

  • 命令行模式
    输入pynetem -h可以查看帮助信息
    使用实例:
# 该命令将 eth0 网卡的传输设置为 100ms ,同时,大约有 30% 的包会延迟 ± 10ms 发送
pynetem -i eth0 --delay=100ms,10ms,30%

# 该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包,成功率为 30%
pynetem -i eth0 --loss=1%,30%

# 该命令将 eth0 网卡的传输设置为随机产生 1% 的重复数据包
pynetem -i eth0 --duplicate=1%

# 该命令将 eth0 网卡的传输设置为随机产生 0.2% 的损坏的数据包 。 (内核版本需在2.6.16以上)
pynetem -i eth0 --corrupt =0.2%

# 该命令将 eth0 网卡的传输设置为:有 25% 的数据包(50%相关)会被立即发送,其他的延迟 10ms
pynetem -i eth0 --delay=10ms --reorder=25%,50%

# 该命令将 eth0 网卡的传输设置为 延迟100ms,同时限定网卡的出速率
pynetem -i eth0 --delay=100ms --rate=256kbit

# 该命令将 eth0 网卡的传输设置为 在符合CIDR条件下延迟100ms&限定网卡的出速率
pynetem -i eth0 --delay=100ms --rate=256kbit --dst=10.10.10.10/32
  • Web模式
    运行此模式可以对外提供接口,默认开启8899端口,也可以指定其它端口。
pynetem --web --port=9000

共有5个API可以调用:

[GET] /pynetem/help                                     -- Get demo post data and simple description
[GET] /pynetem/listInterfaces                           -- Get interfaces name of host
[GET] /pynetem/getRules?eth=<interface name>            -- Get qdisc rules by interface
[GET/DELETE] /pynetem/clear?eth=<interface name>        -- Clear all rules
[POST] /pynetem/setRules?eth=<interface name>           -- Set tc qdisc rule

请求体中,如果设置参数为None或"",则会忽略此参数,请求体示例如下:

{
    "delay": "100ms 10ms 25%",
    "distribution": "normal",
    "reorder": "25% 50%",
    "loss": "0.3% 25%",
    "duplicate": "1%",
    "corrupt": "0.1%",
    "rate": "256kbit",
    "buffer": 1600,
    "limit": 3000,
    "dst": "10.10.10.0/24"
}

需要注意的是,当按下ctrl + c关停web服务时,会自动将所有网卡接口下的所有qdisc规则全部清空。

请求实例:
请求参数可以参考
https://github.com/GuoTengda1993/pynetem/blob/master/pynetem/web.py

#先查看自己的网卡用的是哪一个
#例:我用的网卡是 :enp3s0
#下面是设置网络忘记为延迟时间为300ms
http://192.168.24.80:9000/pynetem/setRules?eth=enp3s0
#请求体
{
    "delay": "300ms"
}
#获取当前的网络环境
http://192.168.24.80:9000/pynetem/getRules?eth=enp3s0
#返回参数
"{"code":200,"msg":["qdisc netem 8024: root refcnt 2 limit 1000 delay 300ms"],"res":null,"status":"success"}"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容