一.网桥连接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规则,且设备处于不同广播域。
结论:在需要透明连接、同子网、低延迟的嵌入式场景(如物联网网关、设备直连)中,网桥方案是首选。