基于VLAN的Wi-Fi数据转发

1. 网络拓扑

在PC(ubuntu)上通过RNDIS虚拟出来一个vlan节点(vlan0),并通过这个节点操作ARM Linux设备上的Wi-Fi(wlan0),具体网络拓扑如下所示。

2. 具体实现步骤

2.1 确保RNDIS已连接

在ARM Linux设备上,RNDIS已经启用,并且PC能够通过RNDIS接口(通常是 usb0)ping ARM Linux设备。这意味着基本的网络连接已经建立。如何使能RNDIS,请参考如下文章:

  • 【CSDN】i.MX8MP使能USB RNDIS

2.2 在PC上创建虚拟接口

使用vlan工具或ip命令在PC上创建一个虚拟接口,以便将PC上的流量通过RNDIS接口发送到ARM Linux设备的wlan0接口。

  • 创建一个新的VLAN接口:
    • 假设RNDIS接口在PC上被识别为usb0,我们可以创建一个新的虚拟接口vlan0,并将其与usb0绑定:
      • sudo ip link add link usb0 name vlan0 type vlan id 10
        • 这里,id 10是VLAN ID,可以根据需要选择。
  • 配置VLAN接口:
    • 为新创建的vlan0接口配置IP地址并启用它:
      • sudo ip addr add 192.168.1.6/24 dev vlan0
      • sudo ip link set dev vlan0 up

2.3 在ARM Linux设备上配置VLAN

ARM Linux设备需要将收到的VLAN流量路由到wlan0接口。

  • 在ARM Linux上创建VLAN接口:
    • ip link add link usb0 name usb0.10 type vlan id 10
    • ip link set dev usb0.10 up
  • 桥接VLAN接口和wlan0:
    • 使用bridge-utils创建一个桥接接口,将usb0.10和wlan0接口连接起来:
      • brctl addbr br0
      • brctl addif br0 usb0.10
      • brctl addif br0 wlan0
        • 这里要确保Wi-Fi已经开启hostapd或者wpa_supplicant;
      • ip link set dev br0 up
      • ip addr add 192.168.1.2/24 dev br0

2.4 在PC上操作ARM Linux的wlan0

现在,你可以在PC上通过vlan0接口向ARM Linux设备上的wlan0发送数据,仿佛你直接在ARM Linux设备上操作wlan0一样。

3. 总结

3.1 总结IP地址配置

  • ARM Linux设备
    • br0: 192.168.1.1/24
    • usb0: 不需要单独配置
    • usb0.10: 不需要单独配置
    • wlan0: 加入br0,不需要单独配置
  • PC(Ubuntu)
    • usb0: 不需要单独配置
    • usb0.10: 192.168.1.2/24

ARM Linux br0和usb0.10要在同一网关内。

3.2 其他注意事项

  • 确保br0、usb0、wlan0等接口在ARM Linux设备上均已激活(UP状态)。
    • 配置Wi-Fi网络:
      • 如果wlan0正在作为AP(Access Point)使用,确保它已经配置并运行。如果wlan0是客户端模式,确保它已连接到所需的Wi-Fi网络。
  • VLAN ID(10)可以根据实际需求进行调整,但在ARM Linux和PC上必须保持一致。
  • 在实际操作中,具体的IP地址应根据你的网络环境进行调整,以避免与其他网络冲突。
  • 检查桥接转发规则:
    • 默认情况下,桥接接口br0会自动转发数据包到已连接的接口(如usb0.10、wlan0)。如果你启用了额外的防火墙规则或其他网络配置,确保它们没有阻止转发操作。
      • 查看当前的桥接配置是否允许转发:cat /sys/class/net/br0/bridge/forward_delay
  • 测试网络连通性:
    • 你可以通过ping命令或其他网络工具来测试从PC(通过vlan0接口)到wlan0上的设备的网络连通性。如果所有配置正确,数据包应该能够PC通过vlan0到br0,并通过wlan0发送出去。
  • 启用IP转发:
    • 如果需要跨网络的路由功能(例如从VLAN到外部网络),可以在ARM Linux设备上启用IP转发:sysctl -w net.ipv4.ip_forward=1
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值