账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    linux,多块无线网卡,指定应用程序走相应的网卡
    37
    0

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

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

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 城市野鹿 普通会员 1楼

      在Linux中,你可以通过以下步骤来指定应用程序走特定的无线网卡:

      1. 首先,你需要知道你的无线网卡的名称,通常情况下,这些信息可以通过无线网卡的管理工具(如ifconfigwlan)来获取。

      2. 然后,你可以使用ifconfig命令来查看每个无线网卡的详细信息,包括网络接口名称、IP地址、广播地址等。这些信息通常以网卡的管理工具中的列来显示。

      3. 在了解了每个无线网卡的信息后,你可以根据需要指定应用程序走哪个网卡。例如,如果你知道应用程序需要连接到一个特定的IP地址,你可以使用ifconfig命令指定该无线网卡为目标网卡。

      4. 例如,如果你知道应用程序需要连接到192.168.1.100,你可以使用以下命令指定该无线网卡为目标网卡:

      bash sudo ifconfig target无线 network=192.168.1.100 netmask=255.255.255.0 broadcast=192.168.1.255

      在这个例子中,target是你想要指定的无线网卡的名称,netmaskbroadcast是你想要指定的无线网卡的网络掩码和广播地址。

      注意:在指定网卡时,你需要确保你有权限。在某些情况下,你可能需要使用root权限来指定网卡。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部