网桥及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规则,且设备处于不同广播域。

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

相关推荐
wdfk_prog5 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
盟接之桥6 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
YUJIANYUE6 小时前
PHP纹路验证码
开发语言·php
忆~遂愿6 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘6 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
Fcy6487 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满7 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠8 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio8 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice8 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习