用hostapd和树莓派架设自己的无线AP
转载自:http://www.log4cpp.com/smarthome/14.html
最近在通过树莓派和arduino做智能家居,想用树莓派作为服务器,arduino通过wifi接入。我的树莓派没有板载wifi,据说可以通过一个支持monitor模式的无线网卡来提供ap功能,在某宝认真的翻了一段时间,发现树莓派专用的都不便宜,怎么办呢?想起来之前有一个Mercury MW150U和一个360wifi,想先试试吧,不行再买。
把MW150U插在树莓派上,过了几秒无线网卡上红色的灯亮了。。。灯亮了。。。亮了。。。了,太出乎意料了,这说明树莓派已经内置了驱动。
问了一下度娘,MW150U这款网卡采用AR9271芯片,Linux下用ath9k_htc驱动(内核自带)。支持AP模式,支持monitor模式。有monitor模式,就可以和aircrack-ng搭配了破解无线网路密码,有AP模式,就可以用来自架AP。ath9k_htc驱动目前不支持150M模式,不过这已经很次要了。杀人放火居家旅行必备。另外值得一提的是, 这款网卡还有个马甲是Fast FW150u。只是我这网卡是五六年前买的,不知道各位还能不能买到了。。。。。
下面才是正题。
网上配置hostapd很乱,有的已经过时了。我走了不少弯路,花了几个小时才弄好。
- 误区一:driver写上了网卡自己的驱动,比如ath9k_htc。这个已经out了,只要是符号80211n规范的网卡,都可以写网卡驱动之上更通用的一个叫做nl80211的东东的。
- 误区二:配置br0来桥接无线网卡。br0在各个不同的发行版里面的配置方法都不一样,唯一相同的是不好配。而且这个我只看到用来桥接有线和无线的。两个无线网卡进行桥接能不能行还不知道。iptables转发规则要简单的多。
- 误区三:不配dhcp。kindle用静态ip比用dhcp麻烦多了,输几个数字要死人的。
- 误区四:dhcp没有配DNS。dhcp不配DNS,kindle是会果断拒绝连接的。
配置文件就没什么好说的了。以下以archlinux为例
-
安装hostapd,修改
/etc/hostapd/hostapd.conf
。这是一个WPA-PSK的配置,用hostapd -d /etc/hostapd/hostapd.conf
来测试配置是否可用。interface=wlan1 driver=nl80211 ssid=vlad_is_here channel=6 hw_mode=g ignore_broadcast_ssid=0 auth_algs=1 wpa=3 wpa_passphrase=xxxxxxxx wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
-
起hostapd服务
sudo /etc/rc.d/hostapd start
-
为新无线网卡指定IP
sudo ifconfig wlan1 10.10.10.1 netmask 255.255.255.0
-
安装配置dhcp,
/etc/dhcpd.conf
如下default-lease-time 600; max-lease-time 7200; subnet 10.10.10.0 netmask 255.255.255.0 { range 10.10.10.10 10.10.10.100; option routers 10.10.10.1; option domain-name-servers 8.8.8.8; option ip-forwarding off; option broadcast-address 10.10.10.255; }
-
起dhcpd服务
sudo /etc/rc.d/dhcp4 start
-
安装iptables,增加转发规则。这里我要把流量转发到wlan0
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
收工!我发给kindle的书哗哗的就来了。