1.需要的工具软件
hostapd
udhcpd
iptables
2.hostapd工具
http://w1.fi/wpa_supplicant/devel/
用过WIFI的应该对wpa_supplicant这个工具有一定的了解。wpa_supplicant用于wifi连接AP、验证密码等功能,实现的是wifi sta相关功能。而hostapd工具用于实现WIFI AP相关的功能。
hostapd包括IEEE 802.11接入点管理(认证/关联)、IEEE 802.1X/WPA/WPA2 Authenticator、EAP服务器和RADIUS认证服务器功能。它可以使用各种配置选项构建,例如,一个独立的AP管理解决方案或一个支持多种EAP方法的RADIUS认证服务器。
通俗来讲作用就是将WIFI模块模拟成热点,供其他设备连接。
3.udhcpd
hostapd可以理解为用于搭建物理层。一个WIFI设备连接到热点,就像一个网线的设备,插入到了路由器的lan口。而我们Linux设备模拟成热点,就相当于实现了路由器的功能。Linux热点运行这hostapd程序,那么其他wifi终端设备就可以连接它。我们知道,将设备用网线连接到路由器是需要手动配置IP地址或者自动的获取IP地址的。之所以设备能从路由器获取IP地址,就是因为路由器中运行DHCP服务,可以动态的给连接的设备分配IP地址。同样我们用Linux模拟成热点,也需要为其他连接热点的设备提供IP地址和DNS等配置,这样其他WIFI终端设备才真正的和热点组成了局域网。为了实现DHCP服务,所以Linux上需要运行udhcpd这个程序。在嵌入式上udhcpd是busybox提供的一个应用程序。
4. iptables
我们都知道设备通过网线连接到路由器的lan口,但是如果路由的Wan口,没有连接到外网,我们的设备也是不能上网的。wifi设备也是一样。通过hostapd和udhcpd两个程序,Linux开发板已经又能力提供局域网连接了。但是WIFI终端设备怎么实现外网链接呢?iptables就提供了此功能,比如我们的Linux系统上,有4G或者网线,那么通过iptables就可以实现,将无线网卡的数据转发到其他有外网连接的网卡上,这样Linux热点就可以分享有线网,实现其他无线终端进行上网。