全部博文(685)
分类: 嵌入式
2014-09-18 16:18:18
这里我们使用的是rtl8192cu模块
选中如下内核选项:
General setup --->
[*] Sysctl support
(在ROMFS文件系统中/proc/sys/net/ipv4/出现ip_forward)
Networking options--->
[*] Network packet
filtering (replaces ipchains)
IP: Netfilter Configuration
--->(全部选择即可)
首先去Realtek下载驱动与工具包RTL8188C_8192C_USB_linux_v3.4.4_4749.20121105,也可以去这下载。
hostapd移植
解压后里面有一个driver文件夹,这里面是驱动,然后还有一个是wpa_supplicant_hostapd文件夹,这里面是wpa和hostapd工具,驱动的移植这里就不作说明了,网上有很多例子,在wpa_supplicant_hostapd文件夹里有这么一个文件wpa_supplicant_hostapd-0.8_rtw_20120803.zip,解压进入hostapd目录,修改makefile,在第一行加上CC=arm-linux-gcc然后编译,最后在当前文件夹下生成一个hostapd_cli和hostapd文件,先放着。
dhcp移植
下载dhcp工具包,链接解压,后执行./configure然后进入work.linux-2.2目录执行make "CC=arm-linux-gcc -static"最后会在server目录下生成dhcp文件
iptables移植
下载iptables工具,链接解压,首先在/usr目录下创建iptables目录,执行./configure --prefix=/usr/iptables --host=arm-linux 然后执行如下:
make
KERNEL_DIR=/dao/newdisk/2416/kernel/linux3.1.0-icool2416-v1.0
make
NO.SHARED_LIBS=1
make && make install
最后会安装到/usr/iptables目录下
工具安装
首先将/usr/iptables目录下的所以文件拷贝到开发板中,为了方便我们直接从SD卡往里面拷cp /sdcard/iptables/* /usr/ -rf
然后在/usr目录下创建iptables目录,mv /usr/libexec /usr/iptables/ 下
将前面编译好的hostapd dhcp拷贝到开发板上的/sbin目录下
配制文件编写
在/etc/目录下加入dhcp.conf文件,内容如下:
default-lease-time 259200;
max-lease-time 518400;
option domain-name-servers 192.168.1.1;
ddns-update-style ad-hoc;
subnet 192.168.0.0 netmask 255.255.255.0{
range 192.168.0.10 192.168.0.100;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
}
其中需要注意的是 option domain-name-servers 192.168.1.1;为你有线网络的网关,subnet 192.168.0.0 netmask 255.255.255.0这里是将wlan0的网段设置为0,同时subnet最后一定要是.0要不然dhcp会出错,range 192.168.0.10 192.168.0.100;你将分配的ip地址的范围。
在/etc/目录下加入hostapd.conf文件,内容如下:
interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=test
channel=6
wpa=3
wpa_passphrase=12345678
eap_server=1
own_ip_addr=192.168.0.1
#wps_state=0
uuid=12345678-9abc-def0-1234-56789abcdef0
device_name=RTL8192CU
manufacturer=Realtek
model_name=RTW_SOFTAP
model_number=WLAN_CU
serial_number=12345
device_type=6-0050F204-1
os_version=01020300
config_methods=label
display push_button
keypad
driver=rtl871xdrv
beacon_int=100
hw_mode=g
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
max_num_sta=8
wpa_group_rekey=86400
这里基本上不用怎么修改,其中test为你的ap,12345678为密码,这里使用的是wpa加密
修改/etc/init.d/rcS文件,加入如下内容:
mkdir -p /var/run/hostapd
mkdir -p
/var/state/dhcp
touch /var/state/dhcp/dhcpd.leases
mv /dev/random
/dev/random.org
ln -s /dev/urandom /dev/random
启动路由功能,在/sbin/加入iptables-eth0脚本,内容如下:
#!/bin/sh
ifconfig eth0 192.168.1.15 netmask 255.255.255.0 up
route add
default gw 192.168.1.1
ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
up
iptables --flush
iptables --table nat --flush
iptables
--delete-chain
iptables --table nat --delete-chain
iptables --table nat
--append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append
FORWARD --in-interface wlan0 -j ACCEPT
echo 1 >
/proc/sys/net/ipv4/ip_forward
dhcpd wlan0
hostapd /etc/hostapd.conf -B
这里我使用的是静态ip, eth0也可以使用动态ip,注意把相应的网关修改即可,保存后chmod 777 /sbin/iptables然后重启,插入有线网络,然后执行iptables-eth0,这里你就可以通过手机连接这个ap了.