网桥及IP转发在嵌入式linux eth0与wlan0连接使用方法

一.网桥连接eht0与wlan0

在嵌入式Linux中,使用网桥(Bridge) 连接 eth0(有线)和 wlan0(无线AP模式)是一个非常实用的方案,它能让连接到两者的设备处于同一个二层网络,像连接在同一台交换机上一样直接通信。

1.网桥核心原理

网桥工作在数据链路层(L2),其核心是一个自学习的MAC地址表和转发决策机制:

自学习:记录每个MAC地址从哪个端口(如eth0或wlan0)收到。

转发/过滤:

若目标MAC在表中,则只转发到对应端口。

若未知或为广播地址(FF:FF:FF:FF:FF:FF),则泛洪到所有其他端口。

透明性:主机感知不到网桥存在,IP配置无需改变。

2.嵌入式Linux配置:eth0与wlan0桥接

以下是在嵌入式系统(如使用RV1106等平台)上创建网桥的完整步骤和脚本。目标是让连接到WiFi AP的PC,能直接访问连接到eth0的传感器(假设传感器IP为192.168.1.100)。

(1).配置网桥和接口(关键步骤)

这是最核心的配置部分,请按顺序操作:

#!/bin/sh

创建网桥设备br0,并启用它

ip link add name br0 type bridge

ip link set br0 up

将物理接口eth0和wlan0添加到网桥

**注意:接口加入网桥后,不再需要单独的IP地址**

ip link set eth0 master br0

ip link set wlan0 master br0

为网桥br0本身配置IP地址,作为本机的管理地址和网关

ip addr add 192.168.1.1/24 dev br0

#(可选但推荐)确保接口本身是启动状态

ip link set eth0 up

ip link set wlan0 up

(2).配置无线AP(Hostapd)

需要让wlan0工作在AP模式,并绑定到网桥。

修改Hostapd配置文件(例如 /etc/hostapd.conf):

interface=wlan0

bridge=br0 # 关键行:指定AP关联的网桥

driver=nl80211

ssid=MyEmbeddedAP

hw_mode=g

channel=6

wpa=2

wpa_passphrase=YourPassword

wpa_key_mgmt=WPA-PSK

rsn_pairwise=CCMP

(3) . 配置DHCP服务器(可选)

如果你希望PC和传感器能自动获取IP,可以在网桥br0上运行一个DHCP服务器(如dnsmasq)。

dnsmasq配置示例:

启动dnsmasq,为br0网段提供服务(/etc/dnsmasq.conf)

interface=br0

dhcp-range=192.168.1.100,192.168.1.150,12h

dhcp-option=option:router,192.168.1.1

dhcp-option=option:dns-server,8.8.8.8

3.设置开机自启动

为了使配置在重启后生效,你需要将上述命令(或等价的配置)放入启动脚本中。

Init.d系统:创建启动脚本放在 /etc/init.d/ 并设置链接。

最直接的方式:将命令添加到 /etc/rc.local(如果存在)。

一个简单的/etc/rc.local示例:

#!/bin/sh

创建并启动网桥

ip link add name br0 type bridge

ip link set br0 up

ip link set eth0 master br0

ip link set wlan0 master br0

ip addr add 192.168.1.1/24 dev br0

启动hostapd

/usr/sbin/hostapd -B /etc/hostapd.conf

启动dnsmasq

dnsmasq -C /etc/dnsmasq.conf

exit 0

rc.local 执行权限:chmod +x /etc/rc.local

二.路由方式连接eth0与wlan0

在嵌入式Linux中,使用路由 连接 eth0(有线)和 wlan0(无线AP模式),然后通过wifi方案eth0连接的固定ip设备。

1.修改Hostapd配置文件(例如 /etc/hostapd.conf):

nterface=wlan0

driver=nl80211

ssid=test7

hw_mode=g

channel=6

wmm_enabled=0

macaddr_acl=0

auth_algs=1

ignore_broadcast_ssid=0

wpa=2

wpa_passphrase=12345678

wpa_key_mgmt=WPA-PSK

wpa_pairwise=TKIP

rsn_pairwise=CCMP

2.dnsmasq配置示例(/etc/dnsmasq.conf):

interface=wlan0

dhcp-range=192.168.4.2,192.168.4.10,255.255.255.0,24h

3.启用IP转发(IP Forwarding):

echo 1 > /proc/sys/net/ipv4/ip_forward

4.ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up

连接到eth0的设备固定ip也为1网段

说明:

这种连接方式wlan0和eth0是不同网段,但是设置ip转发后通过wifi可以直接访问连接到eth9的1网段设备。

三.方案对比:网桥 vs. IP转发

网桥方案:更简洁高效。数据在二层直接交换,设备如同直连,无需处理三层路由和NAT,延迟更低,配置更直观。

IP转发方案:更复杂。需要开启ip_forward,管理路由表,可能需配置防火墙NAT规则,且设备处于不同广播域。

结论:在需要透明连接、同子网、低延迟的嵌入式场景(如物联网网关、设备直连)中,网桥方案是首选。

相关推荐
菜地里的小菜鸟3 小时前
将linux程序打成.run包
linux·将linux程序打成run包·运维自动安装包
晚风吹长发6 小时前
Docker基础——Docker Network(网络详解)
linux·运维·网络·ubuntu·docker·容器
高磊20057 小时前
LVS(Linux virual server)
linux·服务器·lvs
shwill1238 小时前
PID 算法(三)--- 增量 PID ↔ 单神经元 PID 等价映射
linux·算法
ai_xiaogui8 小时前
PanelAI没有域名也能装?IP安装+自签HTTPS+安全加固全攻略(私有化部署必备)
tcp/ip·安全·https·私有化部署·自签证书·panelai·自带https自动续证
摩西蒙8 小时前
计算机网络
开发语言·计算机网络·php
执笔画流年呀9 小时前
Linux搭建Java项目部署环境
java·linux·运维
oradh9 小时前
Oracle 11g rac IP地址修改(public ip、vip、scan ip、priviate ip)
数据库·tcp/ip·oracle·rac ip地址修改
Sisphusssss9 小时前
香橙派5plus GPIO
linux·python·ubuntu
W.W.H.9 小时前
嵌入式 Linux外接USB/WIFI模块兼容5G频段实战
linux·运维·5g·wifi