arm linux无线路由
一块arm开发板,带有以太网口,还有一个在京东上买的usbwifi模块,wifi模块在ubuntu上直接可以用,输入lsusb,发现其使用的wifi模块竟然是realtek的8192,于是想用这两个网口实现无线路由的转发功能,即板子的以太网接到局域网,以太网与wifi的wlan0直接存在一定转发规则,然后手机或者笔记本连上8192的AP即可上网。
实现这一功能稍微有些繁琐,需要移植和配置一些东西,这里只说一下步骤与注意细节,不再详细的去写过程。
1以太网部分。我的板子文件系统是nfs的,挂到虚拟机192.168.1.248,板子以太网ip是192.168.1.100;
2AP部分。先移植8192驱动,把固件放到指定位置,insmod 8192.ko,出现wlan0节点。ifconfig wlan 192.168.0.1 ,指定wlan0的ip地址。然后让8192作为AP,需要移植hostapd,配合配置文件,配置文件里主要是创建ap的一些参数,如ap名称、密码、加密方式等,然后运行hostapd,此时用手机扫描wifi出现 “rtwap”。8192的hostapd在驱动源码里有。
3ip分配与获取。通过udhcpd与udhcpc实现,udhcpd一般运行在路由器端,负责分发ip,udhcpc运行与终端,负责获取ip,只有当路由器端运行了udhcpd,终端才可以通过udhcpc获取ip,否则你是获取不到ip的,移植udhcpd,编写配置文件,配置文件描述了ip分发规则,当有客户端连上AP后,udhcpd会跟据配置文件的规则自动分配一个IP地址。例子中的配置文件ip分配从 192.168.0.2开始,这样一般第一个连上的ip是192.168.0.2,下一个是192.168.0.3......。waln0的ip是192.168.0.1相当于路由器的网关。
4ip转发。路由器具有路由和ip转发功能,这里我们只实现转发功能。ip转发依赖于内核的防火墙,需要先在内核里选上相关配置选项,然后移植iptables,由iptables去实现。
移植iptables的时候需要注意,移植的时候库使用什么路径,那么文件系统里要把库放到和移植时相同路径,否则提示某些参数命令找不到。iptables移植好之后,即可进行转发规则设置。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
iptables -A FROWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FROWARD -d 192.168.0.0/24 -j ACCEPT
有这四条命令后,会将192.168.0.0网段的ip伪装成eth0的192.168.1.x通过eth0转发 。
5客户端的设置。pc连上rtwap,获取到ip 192.168.0.2,ping 192.168.1.248,但是ping超时,为什么? 因为一般的笔记本有以太网口和无线网口,默认 192.168.1.x ip通过以太网发出去,而我们想让192.168.1.248通过192.168.0.1发出去,这样192.168.1.248到192.168.0.1网关之后,iptables进行转发,然后选择相应路由。指定ip地址由哪个网口发出去,要看pc的路由表,所以ping 不通的原因是我们没有在本地添加相应路由。
sudo route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1
这样设置以后,ping 192.168.1.248 就可以ping 通,然后 ssh linux@192.168.1.248 ,输入密码后可以登上虚拟主机。
6调试工具。 移植tcpdump,可以对指定网卡抓包。tcpdump -i wlan0 -v 可以显示wlan0的数据传递情况。我当时一直没有ping通,后来通过tcpdump发现是pc端路由设置不对。
7备注。具体各个工具的移植网上资料较多,不再赘述。
arm linux无线路由相关推荐
- arm linux 启动之一:汇编启动到start_kernel
描述arm linux启动的概要过程,以S5PV210(Cortex A8)为例,本文描述第一个阶段. 一.arm linux的引导 uboot在引导arm linux(uImage镜像)到SDRAM ...
- ARM Linux 3.x的设备树(Device Tree)【转】
转自:http://blog.csdn.net/21cnbao/article/details/8457546 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] ARM Devi ...
- arm linux嵌入式网络控制系统,基于ARMLinux的嵌入式网络控制系统的研究与设计
摘要: 随着计算机技术.控制技术和网络技术的蓬勃发展,嵌入式系统与网络控制系统的应用越来越广阔.当前控制系统正经历一场前所未有的变革,远程监控和智能控制成为控制系统发展的重要方向.通过嵌入式网络控制系 ...
- python linux arm_[Python]python for ARM/LINUX
按照下面的方法,可以成功将python2.5 build到 ARM /linux , 我已经成功了: Download latest from www.python.org Save into /ho ...
- 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容...
[Qt开发][VS开发][Linux开发]OpenCV.Qt-MinGw.Qt-msvc.VS2010.VS2015.Ubuntu Linux.ARM Linux中几个特别容易混淆的内容 标签:[Qt ...
- ARM linux的启动部分源代码简略分析
ARM linux的启动部分源代码简略分析 以友善之臂的mini2440开发板为平台,以较新的内核linux-2.6.32.7版本为例,仅作说明之用. 当内核映像被加载到RAM之后,Bootloade ...
- ARM+linux+2440嵌入式开发相关经典书籍(转)
源:ARM+linux+2440嵌入式开发相关经典书籍 转载于:https://www.cnblogs.com/LittleTiger/p/7992971.html
- linux pfn,ARM Linux下的page和pfn之间转换的宏。
ARM Linux下的page和pfn之间转换的宏如下: 1)page_to_pfn 2)pfn_to_page 这两个宏依赖于内核编译时,选择的内存模型.在include/asm-generic/m ...
- Arm Linux 交叉编译(交叉编译是什么?CROSS_COMPILE)(交叉编译工具链【待更】)
文章目录 交叉编译 1.编译 2.本地编译 3.交叉编译 交叉编译工具链 交叉编译 在嵌入式系统开发中,经常会听到一个词:交叉编译.到底什么是"交叉编译"呢?为什么要使用" ...
最新文章
- HTML(二):表格元素
- iOS开发-文件上传原理
- hyperworks2018安装教程
- go与JAVA差异_20190312_浅谈gojava差异(二)
- 计算机视觉---4---多视角几何学
- java socket 多次write_java NIO2异步socket的write事件与read事件的完成次数不一致是怎么回事...
- FineUI(专业版)v3.0.0 发布,手机、平板和桌面全支持!
- 戴着口罩也要开心过年吖!
- android shell检查是否锁屏_android打开关闭屏幕
- react 对象渲染_不要过度使用React.useCallback()
- java之xml编程
- 用setTimeout代替setInterval
- 掌上百度2011java_掌上百度2011通用版 掌上百度 Java空间版
- 面试总结-2023届安全面试题总汇
- PTA IP地址转换
- 史上最全的大数据开发八股文【自己的吐血总结】
- CTFshow 击剑杯 部分WP
- CentOS下修改IRedMail的邮件附件大小
- 创建群晖共享文件夹,并进行电脑访问
- 圣诞节快乐:来自程序员们的问候~
热门文章
- UDP协议的详细解析
- snap 计算机英语,美国习惯用语:460 a real snap... - VOA英语教学
- 《ASP.NET MVC 4 实战》----2.3 Guestbook示例应用程序
- 黄渤沈腾吐槽宁浩拍戏疯狂 徐峥自曝出演外星人
- 不愿做「奴隶」的程序员们组建了一个帝国
- 当代大学生想进入IT行业,要做好哪些准备呢?
- APP手机应用(android和ios)接口(restcontroller, @ResponseBody)
- WebService客户端调用常见5种方式
- StreamReader与StreamWriter乱码问题
- MHA理论实验过程简介