确实老是感觉到没什么值得一写的,但是没想到这次居然时隔半年才有一点点觉得可写的东西。

最近买了一只kindle,颇为不错的东西。住的地方的路由器却跟kindle兼容性不太好, kindle怎么也连不上wifi。怎么办?Kindle3是不支持ad-hoc无线网络的,所以这条路就绝 了。我先是想到去买一只无线路由器,蹭网中继邻居家的信号给kindle用。于是去买了一 只Fast FW300R V2。东西还没寄到,cfy在聊天室里提醒了我:其实,普通的无线网 卡是可以拿来做AP用的,master mode,跟路由一样,不是ad-hoc。这样的话,用无线网卡 模拟出来一个路由信号不就可以了吗?只不过我笔记本的内置无线网卡是需要拿去连家里的 路由器的,所以我需要一只外置的usb无线网卡。

把路由器处理给了Meaculpa之后就开始选网卡。挑来挑去 最后选中了Mercury MW150u

这款网卡采用AR9271芯片,Linux下用ath9k_htc驱动(内核自带)。支持AP模式,支持 monitor模式。有monitor模式,就可以和aircrack-ng搭配了破解无线网路密码,有AP模式, 就可以用来自架AP。ath9k_htc驱动目前不支持150M模式,不过这已经很次要了。卓越27包邮, 杀人放火居家旅行必备。另外值得一提的是,这款网卡还有个马甲是Fast FW150u。

(更新:MW150u硬件改,我买的是V2,现在市面上的已经到V6了,芯片换成RT5370N,能不 能起AP不清楚。挑网卡比较靠谱的做法是,在京东或者卓越上选usb无线网卡,价格从低到 高排序,然后去翻评论或者Google搜索…Atheros芯片自然是最好不过,不过其他还是有 很多可以用的,需要去LinuxWireless查是否支持AP模式)

下面才是正题。

网上配置hostapd很乱,有的已经过时了。我走了不少弯路,花了几个小时才弄好。

  • 误区一:driver写上了网卡自己的驱动,比如ath9k_htc。这个已经out了,只要是符号80211n规范的网卡,都可以写网卡驱动之上更通用的一个叫做nl80211的东东的。
  • 误区二:配置br0来桥接无线网卡。br0在各个不同的发行版里面的配置方法都不一样,唯一相同的是不好配。而且这个我只看到用来桥接有线和无线的。两个无线网卡进行桥接能不能行还不知道。iptables转发规则要简单的多。
  • 误区三:不配dhcp。kindle用静态ip比用dhcp麻烦多了,输几个数字要死人的。
  • 误区四:dhcp没有配DNS。dhcp不配DNS,kindle是会果断拒绝连接的。

配置文件就没什么好说的了。以下以archlinux为例

  1. 安装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
    
  2. 起hostapd服务

     sudo /etc/rc.d/hostapd start
    
  3. 为新无线网卡指定IP

     sudo ifconfig wlan1 10.10.10.1 netmask 255.255.255.0
    
  4. 安装配置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;
     }
    
  5. 起dhcpd服务

     sudo /etc/rc.d/dhcp4 start
    
  6. 安装iptables,增加转发规则。这里我要把流量转发到wlan0

     sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
    
  7. 别忘了在启用内核转发功能,感谢cfy,在/etc/sysctl.conf加一句

     # 重启生效!
     # 如果要即时生效: sudo echo 1 > /proc/sys/net/ipv4/ip_forward
     net.ipv4.ip_forward=1
    

收工!我发给kindle的书哗哗的就来了。