• 两块网卡分别连接两个AP,通过哪块网卡路由出去?回来呢?


    场景:

    wlan0   192.168.0.77   20:7c:8f:6b:e6:7c

    wlan2   192.168.0.66   34:08:04:2e:23:7e

    socket绑定192.168.0.77

    开机默认路由:略

    client成功连接server后再对路由修改:

    ip route flush table main

    route add default dev tun0

    route add –net 192.168.0.0/24 dev wlan0

    route add –net 192.168.0.0/24 dev wlan2

    route add 219.245.89.144 gw 192.168.0.1 dev wlan0

    route add 219.245.89.144 gw 192.168.0.1 dev wlan2

    则此时route –n显示的路由表:

    内核 IP 路由表
    目标            网关            子网掩码        标志  跃点   引用  使用 接口
    0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 tun0
    192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan2
    192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0

    219.245.89.144  192.168.0.1     255.255.255.255 UGH   0      0        0 wlan2
    219.245.89.144  192.168.0.1     255.255.255.255 UGH   0      0        0 wlan0

    经HA wireshark抓包分析包的以太网MAC知client端经过wlan2路由出去。

    如果将程序中的路由修改最后两句调换,即

    ip route flush table main

    route add default dev tun0

    route add –net 192.168.0.0/24 dev wlan0

    route add –net 192.168.0.0/24 dev wlan2

    route add 219.245.89.144 gw 192.168.0.1 dev wlan2

    route add 219.245.89.144 gw 192.168.0.1 dev wlan0

    则此时route –n显示的路由表:

    内核 IP 路由表
    目标            网关            子网掩码        标志  跃点   引用  使用 接口
    0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 tun0

    192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
    192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan2
    219.245.89.144  192.168.0.1     255.255.255.255 UGH   0      0        0 wlan0
    219.245.89.144  192.168.0.1     255.255.255.255 UGH   0      0        0 wlan2

    经HA wireshark抓包分析包的以太网MAC知client端经过wlan0路由出去。

    总结,最后路由出去的网卡接口和socket绑定的接口无关,与路由表有关,从路由表的第一条记录往下,最先遇到的符合目标地址的记录就是包遵循的路由记录。

    再考虑一个问题,包从对端回到本机时,是从哪个回来的,猜测从哪个网卡出去就从哪个网卡回来。

    从wireshark抓到的以太包只有源MAC,没有目的MAC?!所以不能从wireshark得知HA发到MN时,是发给MN的哪块网卡的。

    但是,我们可以从HA的arp表看出端倪。

    从表中我们可以得出,虽然socket绑定的是wlan0 (20:7c:8f:6b:e6:7c)上的IP192.168.0.77,但当它通过wlan2路由出去时,添加的是wlan2的MAC(34:08:04:2e:23:7e),HA发往MN时,通过arp表知,是发给wlan2接口的,即MN通过哪块接口发到HA,HA就将数据发给HA的哪块接口。

    root@ubuntu:~# arp -n
    地址                     类型    硬件地址            标志  Mask            接口
    219.245.89.161           ether   00:e0:4c:3b:64:e0   C                     eth0
    192.168.0.77             ether   34:08:04:2e:23:7e   C                     eth1
    192.168.0.111            ether   00:1b:38:a6:e3:61   C                     eth1
    219.245.89.214           ether   20:6a:8a:43:ba:e3   C                     eth0
    219.245.89.254           ether   00:23:89:1a:03:ed   C                     eth0

  • 相关阅读:
    ArrayList类(转)
    通过XmlDocument读写Xml文档(转)
    js的一些常用方法
    和我一起恶补pl/sql(第三讲)
    js的跑步算法
    细说 Form (表单)(转)
    C#反射设置和读取类的属性
    显示最近30天的记录vs显示这个月的记录(pl\sql)
    nyist 637 我和你
    nyist 子串和
  • 原文地址:https://www.cnblogs.com/helloweworld/p/2736027.html
Copyright © 2020-2023  润新知