基于嵌入式Linux的无线路由器设计——Bridged Adapter网桥模式

本文主要是介绍基于嵌入式Linux的无线路由器设计——Bridged Adapter网桥模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 现在嵌入式设备联网,主要有两种模式:以太网RJ-45 接口直接插网线上网;3G/4G 模块拨号上网。随着无线终端设备的不断普及,手机平板等无线设备对网络的需求也日益增加。本篇文章主要介绍基于嵌入式Linux的无线路由器设计,以桥接的方式访问网络。该方式适合不需要拨号的设备使用,也就是直接插网线就可以联网。基于3G/4G 这种拨号方式的设计将在下篇文章中介绍。

    常见的网络连接方式,博客http://www.cnblogs.com/york-hust/archive/2012/03/29/2422911.html 有一个比较好的介绍。

    下图是我的嵌入式Linux设备硬件示意图:

    因为采用的是桥接的方式,也就是嵌入式设备不能自己拨号,也不能自己路由。换句话说就是插入嵌入式设备的那个网线,直接插电脑就可以上网。这样的设计主要是将有线的网络转成无线局域网。这里的WiFi 模块,通过USB总线与嵌入式Linux通信。

内核配置:

    内核配置的时候 802.1d Ethernet Bridging  和IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP) 需要选上,使内核支持桥接,同时需要WiFi支持AP功能。

WiFi驱动移植:

  WiFi驱动的移植还是比较简单的,下载源码交叉编译就可以了。我使用的是RTL8188C,直接编译成模块8192cu.ko  这里需要多注意一点,应为在编译模块的时候是需要指定Linux内核代码路径的,当你的内核网络配置发生改变的时候,你的驱动需要重新编译一下,不然可能会出现一些内存溢出的问题。

hostapd 移植:

        hostapd 是 Host Access Point 守护进程,能够使得无线网卡切换为master模式,模拟AP(通常可以认为是路由器)功能,也就是我们说的软AP(Soft AP)。它的移植和配置可以参考http://www.cnblogs.com/zhuwenger/archive/2011/03/11/1980294.html

启动嵌入式设备进行设置:

1.加载驱动

    insmod 8192cu.ko

2.启动WiFi网络接口

    ifconfig wlan0 up                       

3.新建一个虚拟的网桥

    brctl addbr br0

4.将有线网接口和无线网接口都添加到虚拟网桥上

    brctl addif br0 eth0
    brctl addif br0 wlan0

5.清除有线网口和无线网口网络设置(因为所有的数据都是通过虚拟网络接口收发)

    ifconfig eth0 0.0.0.0
    ifconfig wlan0 0.0.0.0

6.启动虚拟网络接口

    ifconfig br0 up

7.配置虚拟网口IP地址和子网掩码

    ifconfig br0 192.168.2.2 netmask 255.255.255.0

8.配置默认网关(重要)

    route add default gw 192.168.2.254

9.启动WiFi的AP功能

    ./hostapd hostapd.conf -B

在这里有几点需要注意:

    a.上面第7点,设置IP和子网掩码的时候,需要跟你路由器(上面示意图路由器A)的IP在同一个网段。默认网关也是需要跟路由器A的设置一样。因为通过桥接的方式连网,连接到br0上的设备,在路由器中都将被识别为一台实际的设备。也就是说路由器A中的其他设备也都能访问到br0中的设备。在这种方式下,连接到WiFi中的设备,它们的IP实际上是由路由器A分配的,所以在这里,我们可以不用设置dhcp来为WiFi动态分配IP

    b.在./hostapd hostapd.conf -B 命令中 -B是指在后台运行。WiFi的一些参数是在hostapd.conf中设置的,比如WiFi名字ssid,WiFi信道等。我的hostapd.conf 配置文件如下:

##### hostapd configuration file ##############################################
 
interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=licaibiao_debug
channel=6
wpa=2
wpa_passphrase=87654321
bridge=br0
 
##### Wi-Fi Protected Setup (WPS) #############################################
 
eap_server=1
 
# WPS state
# 0 = WPS disabled (default)
# 1 = WPS enabled, not configured
# 2 = WPS enabled, configured
wps_state=2
 
uuid=12345678-9abc-def0-1234-56789abcdef0
 
# Device Name
# User-friendly description of device; up to 32 octets encoded in UTF-8
device_name=RTL8192CU
 
# Manufacturer
# The manufacturer of the device (up to 64 ASCII characters)
manufacturer=Realtek
 
# Model Name
# Model of the device (up to 32 ASCII characters)
model_name=RTW_SOFTAP
 
# Model Number
# Additional device description (up to 32 ASCII characters)
model_number=WLAN_CU
 
# Serial Number
# Serial number of the device (up to 32 characters)
serial_number=12345
 
# Primary Device Type
# Used format: <categ>-<OUI>-<subcateg>
# categ = Category as an integer value
# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
#       default WPS OUI
# subcateg = OUI-specific Sub Category as an integer value
# Examples:
#   1-0050F204-1 (Computer / PC)
#   1-0050F204-2 (Computer / Server)
#   5-0050F204-1 (Storage / NAS)
#   6-0050F204-1 (Network Infrastructure / AP)
device_type=6-0050F204-1
 
# OS Version
# 4-octet operating system version number (hex string)
os_version=01020300
 
# Config Methods
# List of the supported configuration methods
config_methods=label display push_button keypad
 
 
##### default configuration #######################################
 
driver=rtl871xdrv
beacon_int=100
hw_mode=g
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
max_num_sta=8
wpa_group_rekey=86400


本文参考:

    usb wifi移植

    Linux下搭建网桥及脚本编写

    快速理解VirtualBox的四种网络连接方式
 ———————————————— 
版权声明:本文为CSDN博主「li_wen01」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/li_wen01/article/details/77918700

这篇关于基于嵌入式Linux的无线路由器设计——Bridged Adapter网桥模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/733866

相关文章

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

Linux修改pip临时目录方法的详解

《Linux修改pip临时目录方法的详解》在Linux系统中,pip在安装Python包时会使用临时目录(TMPDIR),但默认的临时目录可能会受到存储空间不足或权限问题的影响,所以本文将详细介绍如何... 目录引言一、为什么要修改 pip 的临时目录?1. 解决存储空间不足的问题2. 解决权限问题3. 提