1、从官网上下载hostapd,编译之前先在hostapd目录下执行cp defconfig .config,配置文件默认只支持nl80211的驱动(CONFIG_DRIVER_NL80211=y)。
make
make install
3、新建/etc/hostapd/hostapd.conf
interface=wlan0
#interface=wlan0
driver=nl80211
#driver=madwifi
ssid=YOUR_SSID
channel=9
hw_mode=g
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
wpa=3
wpa_passphrase=YOUR_PASSPHRASE
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
最后执行:hostapd -d /etc/hostapd/hostapd.conf
hostapd.conf文件(也可以从这里获得),这个文件很大,里面的配置项相当的多,从简单到高级。但一般地我们能够使用到的功能只是其中很少的一部分,下面介绍一下我认为最常用的一些配置选项。首先介绍一些基本的配置项:
上面列出的配置基本上是必须的,其中:
其中auth_algs指定采用哪种认证算法,采用位域(bit fields)方式来制定,其中第一位表示开放系统认证(Open System Authentication, OSA),第二位表示共享密钥认证(Shared Key Authentication, SKA)。我这里设置alth_algs的值为1,表示只采用OSA;如果为3则两种认证方式都支持。不过很奇怪的是,在我工作中如果配置了3,不管采用WEP/WPA/WP2加密的方式都从没连接成功过,配置为2也是如此。所以在我的配置当中,如果采用认证,则设置auth_algs为1;否则把这行代码注释掉(在前面加#)。
由于RADIUS认证需要提供外部RADIUS服务器,我们没有这个功能,因此我只研究了WEP、WPA和WPA2这三种加密方式。
如果要启用WEP加密,只需配置wep_default_key和其中一个wep_keyx,其中x的值只能在0~3之间,wep_default_key的值必须启用了。注意wep_keyx的值不是任意的,只能是5、13或16个字符(用双引号括住),或者是10、26或32个16进制数字。由于WEP加密算法已经被破解了,所以通常不启用它,全部注释掉。
现在推荐的加密方式是WPA/WPA2,由于时间紧迫,我没有怎么去了解过这两者的差别。不过配置是很简单的:
经过这样一些配置,启动hostapd之后应该就可以按照自己的需求正常使用无线接入点功能了:
4、安装dhcpd
apt-get install dhcp3-server
echo "1" > /proc/sys/net/ipv4/ip_forward hostapd -B /etc/hostapd/hostapd.conf
改
/etc/dhcp/dhcpd.conf:subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.0.10; option routers 192.168.0.1; }
wlan0配置地址: ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 开启dhcp:dhcpd wlan0 -pf /var/run/dhcp-server/dhcpd.pid
现在无线网卡就可以当成ap了。
5、把无线网卡的ap继续扩展为连接到外网
网上有很多资料,一般有2种方法:一种是bridge(桥接),另一种是nat方式,这里只介绍nat的方式。
经过前面4个步骤,无线网卡已经可以自动分配IP,现在只需要把无线网卡的数据都经过eth0(有线网络)发到外网去,这就需要IP转发了。
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
还需要修改
/etc/dhcp/dhcpd.conf,添加dns:subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.0.10;
option domain-name-servers 221.5.88.88;
option routers 192.168.0.1;
}
(Linux系统缺省并没有打开IP转发功能,要确认IP转发功能的状态,可以查看/proc文件系统,使用下面命令: cat /proc/sys/net/ipv4/ip_forward
如果上述文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
要想打开IP转发功能,可以直接修改上述文件: echo 1 > /proc/sys/net/ipv4/ip_forward
把文件的内容由0修改为1。禁用IP转发则把1改为0。
上面的命令并没有保存对IP转发配置的更改,下次系统启动时仍会使用原来的值,要想永久修改IP转发,需要修改/etc/sysctl.conf文件,修 改下面一行的值: net.ipv4.ip_forward = 1 修改后可以重启系统来使修改生效,也可以执行下面的命令来使修改生效: sysctl -p /etc/sysctl.conf 进行了上面的配置后,IP转发功能就永久使能了。)
6、嵌入式开发板上设置内核支持iptabel的设置如下:
内核需要对iptables的支持并加上nat功能
Networking support --->
Networking options --->
Network packet filtering framework (Netfilter)
│ │ --- Network packet filtering framework (Netfilter) │ │
│ │ [*] Network packet filtering debugging │ │
│ │ [*] Advanced netfilter configuration │ │
│ │ Core Netfilter Configuration ---> │ │
│ │ < > IP virtual server support ---> │ │
│ │ IP: Netfilter Configuration --->
Core Netfilter Configuration里面的配置如下:
<*> Netfilter connection tracking support
-*- Netfilter Xtables support (required for ip_tables)
IP: Netfilter Configuration里面的配置如下:
[*] proc/sysctl compatibility with old connection tracking
<*> IP tables support (required for filtering/masq/NAT)
<*> Packet filtering
<*> REJECT target support
< > LOG target support
< > ULOG target support
<*> Full NAT
<*> MASQUERADE target support
<*> NETMAP target support
<*> REDIRECT target support
<*> Basic SNMP-ALG support
http://blog.csdn.net/laoyouji/article/details/7583034
http://www.cnblogs.com/zhuwenger/archive/2011/03/11/1980294.html
http://blog.sina.com.cn/s/blog_3f83aa130100s8jo.html