现在有一个需求,需要在一台linux PC机上插很多块无线网卡,然后连到某几个AP上进行一些性能测试,例如iperf、浏览网页之类的。这样可以模拟多个真实的客户端进行实验。
这就要强制某个应用程序产生的流量走特定的无线网卡。我查了好几天,看到几种思路。
第一种是用特定的用户运行程序,然后在 iptables 里面打 mark ,再用 ip rule 加一个专用的路由表,具体如下:
iptables -t mangle -I OUTPUT -m owner --uid-owner 1000 -j MARK --set-mark 0x88
ip rule add fwmark 0x88 table 250
ip route add default via 192.168.1.1 dev wlan0 table 250
试过之后发现没有效果,以不同的用户运行iperf,产生的流量没有绑定到不同的网卡上,并且无法ping通外网。
第二种是利用network namespace,在命名空间内运行指定的程序,然后通过NAT把虚拟网卡的流量重定向到无线网卡上,详情可以看这里 讓你的某個應用程式能從指定的網卡上網 和 使用 NAT 将 Linux network namespace 连接外网
这种方法如果我将虚拟网卡流量定向到以太网卡上,在命名空间内就可以ping通外网,一切正常。但如果重定向到无线网卡上,就连局域网都无法ping通,还是无法达到目的。
第三种,通过docker容器实现应用程序和网卡的绑定,具体请看 绑定Dokcer容器到主机指定网卡的方法 很遗憾,这种方法在容器内也无法ping通局域网。
实在找不到其他法子了,求各位大佬指点迷津,拜谢。
我怎么好像理解错误了( ¨̮ )
想测试什么性能?