RT3070 AP模式移植 基于linux3.0内核


一、移植AP 模式驱动

1.1 下载文件

其实AP模式和STA模式的驱动不是同一个文件,我也是找了好久才找到的。现在分享一个链接

1.2 解压文件,并改文件名

1.2.1解压文件

tar -xjf 2010_0203_RT3070_SoftAP_v2.4.0.1_DPA.bz2

mv 2010_0203_RT3070_SoftAP_v2.4.0.1_DPA   rt3070_AP

1.2.2 修改Makefile ,编译驱动 

修该rt3070_AP文件夹下的  MODULE  NETIF  UTIL三个文件夹下的Makefile 

平台选择pc 

 

修改交叉编译器路径和内核路径

 

1.2.3编译内核,加载驱动

出现的错误与STA模式相同,此处不再赘述,错误参见STA模式移植文档。

拷贝RT2870AP.dat文件

cp  /RT2870AP.dat  etc/Wireless/RT2870AP/RT2870AP.dat

 

拷贝固件 rt2870.bin /lib/firmware目录下

 

insmod  rtutil3070ap.ko

insmod  rt3070ap.ko 

insmod    rtnet3070ap.ko

 

 

二、移植libnl-1.1.4

2.1 解压文件

2.2 编译文件

mkdir  install 

./configure --prefix=/home/pikaqiu/tools/WIFI/libnl-1.1/install (安装路径) --host=arm-linux (指定平台)

 

make CC= arm-linux-gcc(注意这种方式要把交叉编译器的路径设置为系统变量)

make install 

 

2.3移植库文件

将install目录下的文件放进开发板的lib目录下

 

三、移植openssl-1.0.0d 

3.1 下载并解压文件

3.2 修改Makefile 并编译文件

指定安装路径

 

指定交叉编译器

 

编译

Make

3.4移植库文件

将libary下的库文件拷贝到开发板的lib目录下

 

四、移植 hostapd-1.0

4.1下载文件

4.2 修改Makefile 

 

指定libnl 和openss头文件位置和文件路径

 

 

4.3 编译内核

make CC=arm-linux-gcc

 

4.4 移植工具hostapd到开发板的bin目录

 

4.5修改配置文件hostapd.conf  拷贝到etc目录

 

interface=wlan0   //指定网口

driver=nl80211     //

ssid=My           //显示的wifi名字

channel=3

hw_mode=g

ignore_broadcast_ssid=0

auth_algs=1

wpa=3

wpa_passphrase=11111111    //密码

wpa_key_mgmt=WPA-PSK

wpa_pairwise=TKIP

rsn_pairwise=CCMP

 

4.5 开启wifi

 

hostapd -B etc/hostapd.conf 

五、配置udhcpd

5.1将busyboxudhcpd配置文件进行修改:

文件所在目录为/home/zhanghaijun/fl2440/3rdparty/busybox-1.20.2/examples/udhcp/

 

 

 

5.2运行配置文件

在配置之前一定要设置wlan0 ip地址,否则会出错

ifconfig wlan0 192.168.2.1 netmask 255.255.255.0 up

uducpd -f udhcpd.conf

六、移植iptables-1.4.11

6.1配置文件

./configure --host=arm-linux --enable-static --disable-shared --prefix=/home/zhanghaijun/fl2440/driver/iptables/iptables-1.4.11/install --disable-ipv6 --disable-largefile

6.2编译文件 

make CC=arm-linux-gcc

make install (这个如果出错,切换到root用户模式)

6.3 移植xtables-multi文件开发板的根目录

首先要对文件进行改名

mv  xtables-multi  iptables

拷贝文件到开发板bin目录

6.4 iptables的使用

参考博客http://blog.chinaunix.net/uid-26495963-id-3279216.html

http://www.linuxso.com/linuxpeixun/10332.html

6.4.1 iptables传输数据包的过程

① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

 

6.4.2iptables5个规则链

1.PREROUTING (路由前)

2.INPUT (数据包流入口)

3.FORWARD (转发管卡)

4.OUTPUT(数据包出口)

5.POSTROUTING(路由后)

 

6.4.3 iptables使用比较多的三个功能

1.filter 定义允许或者不允许的

2.nat 定义地址转换的 

3.mangle功能:修改报文原数据

 

6.4.4iptables的定义规则

iptables [-t table] COMMAND chain CRETIRIA -j ACTION

 

-t table :3个filter nat mangle

COMMAND:定义如何对规则进行管理

chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的

CRETIRIA:指定匹配标准

-j ACTION :指定如何进行处理

 

 

链管理命令

-P :设置默认策略的

   iptables -P INPUT (DROP|ACCEPT)  默认是关的/默认是开的

-F: FLASH,清空规则链的

   iptables -t nat -F 清空nat表的所有链

-Z:清空链

规则管理命令

-A:追加,在当前链的最后新增一个规则

-I num : 插入,把当前规则插入为第几条。

-R num:Replays替换/修改第几条规则

-D num:删除,明确指定删除第几条规则

 

通用匹配:源地址目标地址的匹配

 

-s:指定作为源地址匹配,这里不能指定主机名称,必须是IP

-d:表示匹配目标地址

-p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP)

-i eth0:从这块网卡流入的数据,流入一般用在INPUT和PREROUTING上

-o eth0:从这块网卡流出的数据,流出一般在OUTPUT和POSTROUTING上

--sport源端口

--dport目的端口,端口必须和协议一起来配合使用

 

常用的ACTION:

DROP:悄悄丢弃,一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表

REJECT:明示拒绝

ACCEPT:接受

custom_chain:转向一个自定义的链

DNAT    

SNAT

MASQUERADE:源地址伪装

REDIRECT:重定向:主要用于实现端口重定向

 

6.5使用iptables实现路由转发


由下图可知目的地址不是本开发板的ip地址将通过FORWARD转发出去,所以要在FORWARD这条链上将wlan0的数据转发到eth0

iptables   -A  FORWARD  -i wlan0 -o eth0 -j  accept

对于将要转发的数据需要经过POSTROUTING ,需要将数据包进行伪装

iptables  -t nat  -o eth0 -j  MASQUERADE

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

(允许已建立连接的通行,ESTABLISHED表示已经通过握手建立的连接。

RELATED表示由已建立的连接(ESTABLISHED)产生的一个新的连接。


 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(RT3070 AP模式移植 基于linux3.0内核)