linux,多块无线网卡,指定应用程序走相应的网卡

现在有一个需求,需要在一台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通局域网。

实在找不到其他法子了,求各位大佬指点迷津,拜谢。

阅读 6.5k
1 个回答

我怎么好像理解错误了( ¨̮ )

想测试什么性能?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏