当前位置: 首页 > article >正文

Linux下网卡实现NAT转发

目标

在嵌入式Linux设备下,使用单一的网卡(前提支持STA+AP共存),使用NAT(网络地址转换)实现软路由,以自身为热点,将接收到的流量数据全部转发出去。

一,STA+AP共存

在嵌入式设备中使用时往往是需要WiFi模块既能上网也能做一个热点,可能用于web配置,或者控制一些子模块,就像物联网的一些WiFi芯片ESP32、ESP8266
而且在安卓手机中很多的设备也是同时支持者两种模式的(后期很多厂家给阉割了)
所以WiFi模块同时支持这两种工作模式还是很有必要的,需要修改驱动配置文件,重新编译ko文件即可,以RTL8733bu模组为例,以下是官方文档给的解决方案👇
在这里插入图片描述
拿到对应的驱动后在autoconf.h文件中,添加宏定义:CONFIG_CONCURRENT_MODE
重新编译驱动后,ifconfig -a就可以 看到两个网络节点,两个都可以sta或ap模式
在这里插入图片描述

二,内核支持

使能内核支持网络地址转换(NAT)和包过滤等功能,配置内核支持以下选项

CONFIG_NETFILTER
CONFIG_IP_NF_IPTABLES
CONFIG_IP_NF_NAT
CONFIG_IP_NF_FILTER

Networking support -> Networking options -> Network packet filtering framework (Netfilter)
Networking support -> Networking options -> IP tables support
Networking support -> Networking options -> NAT support

三,ip_tables命令

  1. 配置 wlan1 为AP模式(hostapd udhcpd),wlan0为sta模式 (wpa_supplicant udhcpc
    👉Linux下的STA和AP控制
  2. 配置网络共享(NAT 和 IP 转发)
    为了让连接到 wlan1 的设备能够通过 wlan0 上网,必须配置网络地址转换(NAT)和 IP 转发。
    启用 IP 转发:
sysctl -w net.ipv4.ip_forward=1
  1. 配置 NAT:
    使用 iptables 设置 NAT,将 wlan1 的流量通过 wlan0 转发:
iptables --table nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
  1. 连接wlan1产生的热点信息,测试网络连接情况

http://www.kler.cn/a/429715.html

相关文章:

  • flink-connector-mysql-cdc:03 mysql-cdc常见问题汇总
  • 智能指针中的share_ptr(共享智能指针)
  • 使用ffmpeg将视频与字幕合并为一个文件并将视频拼接
  • 永磁同步电机负载估计--线性扩张状态观测器
  • 分离轴定理检测两个凸多边形是否相交
  • AI驱动的低代码平台:解密背后的算法与架构创新
  • STC单片机I2C驱动例程
  • psmisc移植到ARM Linux环境
  • 【EthIf编译脚本】communication/EthIf/EthIf.mod.mk
  • 夜莺运维指南之自定义告警模板
  • C/C++流星雨
  • 使用php生成、识别二维码
  • ElasticSearch如何做性能优化?
  • Online Monocular Lane Mapping
  • vba学习系列(9)--按需求计数单元格数量
  • vue之$emit 获取返回值
  • 数字孪生与大型模型强强联合,共塑工业制造崭新前景
  • .NET用C#导入Excel数据到数据库
  • 面试技术点之安卓篇
  • 游戏AI实现-有限状态机