基于嵌入式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实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

一文带你迅速搞懂路由器/交换机/光猫三者概念区别

《一文带你迅速搞懂路由器/交换机/光猫三者概念区别》讨论网络设备时,常提及路由器、交换机及光猫等词汇,日常生活、工作中,这些设备至关重要,居家上网、企业内部沟通乃至互联网冲浪皆无法脱离其影响力,本文将... 当谈论网络设备时,我们常常会听到路由器、交换机和光猫这几个名词。它们是构建现代网络基础设施的关键组成

99%的人都选错了! 路由器WiFi双频合一还是分开好的专业解析与适用场景探讨

《99%的人都选错了!路由器WiFi双频合一还是分开好的专业解析与适用场景探讨》关于双频路由器的“双频合一”与“分开使用”两种模式,用户往往存在诸多疑问,本文将从多个维度深入探讨这两种模式的优缺点,... 在如今“没有WiFi就等于与世隔绝”的时代,越来越多家庭、办公室都开始配置双频无线路由器。但你有没有注

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Linux grep 命令的使用指南

《Linuxgrep命令的使用指南》本文给大家介绍Linuxgrep命令的使用指南,包括基础搜索语法、实践指南,感兴趣的朋友跟随小编一起看看吧... 目录linux grep 命令全面使用指南一、基础搜索语法1. 基本文本搜索2. 多文件搜索二、常用选项详解1. 输出控制选项2. 上下文控制选项三、正则表达

Linux部署中的文件大小写问题的解决方案

《Linux部署中的文件大小写问题的解决方案》在本地开发环境(Windows/macOS)一切正常,但部署到Linux服务器后出现模块加载错误,核心原因是Linux文件系统严格区分大小写,所以本文给大... 目录问题背景解决方案配置要求问题背景在本地开发环境(Windows/MACOS)一切正常,但部署到