hostapd是在用户状态下运行的软件,介绍可以向认证服务器提供管理接入点。 以下是无线网卡的常见操作模式及其作用。
工作模式角色Master(AP )成为无线接入点提供无线接入服务的管理的(Managed ) sta )作为客户端连接到另一无线接入点Monitor以监听所有邻居的无线业务很明显,平时我们计算机上的无线卡通常在管理模式下工作,而我们平时使用的路由器上的无线卡通常在主模式下工作。 在本文中,您使用hostapd使计算机的无线卡在Master模式下运行,以便计算机成为无线接入点并为其他设备提供服务。
2 .安装配置Ubuntu 14.04 hostapdv 2.6 isc-DHCP-server hostapd可通过以下命令安装,并提供最新版本2.6 :
如果您想获得$ sudo apt-get install hostapd之前的版本,或者想了解有关hostapd的详细信息,请通过以下地址下载并编译: 2.6版没有创建mon.wlan0接口。 如果需要使用此接口,则必须下载早期版本。
3358 w1.fi/releases/http://w1.fi/cgit/hostap/plain/hostapd/readme isc-DHCP-server我的系统附带。 如果没有,可以通过以下命令下载。
$ sudo apt-getinstallisc-DHCP-server3.进程打开主机并使计算机的无线网卡在主模式下运行。 选中后,其他设备可以搜索热点,但无法连接,因为无法获取IP地址。 根据情况,选择是采用桥接方法,还是向DHCP服务器添加NAT以启用AP。 如果选择桥接方法,则IP地址由计算机实际连接的外部网分配,连接的终端可以直接将数据发送到外部网。 热点连接后即可直接使用,与计算机有线端位于同一子网。 如果选择DHCP服务器和NAT方法,则打开DHCP服务器可以连接到热点,但无法连接到网络。 通过配置NAT,可以将终端发送的包的IP更改为公共IP,并连接到网络。 4 .创建软件AP并启动hostapd后,将创建软件AP。 设置hostapd配置文件hostapd.conf,然后在终端上输入以下命令即可启动: 其中xx/xxx是存储相应配置文件的位置。
有关$ sudohostapdxx/XXX/hostapd.conf配置文件的示例和详细信息,请访问/usr/share/doc/hostapd/example目录:
3358 w1.fi/cgit/hostap/plain/hostapd/hostapd.conf以下是我自己轻松配置的文件。 仅供参考。
#无线设备名称基本上是wlan0,可以显示iwconfig命令中接口wlan0使用的桥名称。 如果是DHCP NAT方式,则可以忽略此行。 在#bridge=br0 #hostapd 0.6.8或更高版本中,只能选择驱动器=nl 80220请自行更改ssid=mywifi#,以指定要选择的无线传输协议。 在此使用802.11ghw_mode=g#802.11b/g,意味着都仅使用互不干扰的三个信道,即1、6和11。 通常,这三种类型之一的channel=1 #用于验证验证算法,1表示auth_algs=1#wpa加密方案,1表示wpa,2表示WAP 2,3表示两者都支持。 wpa=1#wifi密码。 wpa_passphrase=123456789#对所有用户进行相同的验证,但不进行单独的验证。 请根据需要设定为WPA-EAP。 wpa_key_mgmt=WPA-PSK#控制支持加密数据的私钥,CCMP在启用了强于TKIP的wpa_pairwise=CCMP的情况下,通过接口WLAN0wasn’t ssst 软锁是指关闭但在软件中启用,无法进行硬锁。
输入以下两个命令关闭wifi,然后软锁定wlan,最后重新打开hostapd即可。
sudonmclinmwifioffsudorfkillunblockwlan5.网桥我们可以在我们的计算机上建立网桥。 两端分别是以太网接口(我的是eth0)和无线网络接口(我的是wlan0)。 这样,连接到wlan0的设备就可以获得eth0端接口的网络服务。 该结构相对简单,通过wlan0连接的设备相当于直接连接到外部网络,与提供AP服务的计算机eth0在同一子网中。
但这同时也要求外部网络可以为你的无线设备服务,如果你通过拨号,或者需要认证才能连接到互联网,或者通过其他DHCP只能得到一个IP地址的方式是
6.DHCP NAT 1) DHCP打开DHCP服务器是为了允许终端获取IP地址,而且分配的地址是专用的,因此它必须与公用地址冲突。 RFC 1918为专用网络预留三个IP地址块,而上述三个地址范围内的地址则不然
在因特网上被分配,我们可以放心使用。
A 类:10.0.0.0~10.255.255.255B 类:172.16.0.0~172.31.255.255C 类:192.168.0.0~192.168.255.255
我们需要配置/etc/dhcp/dhcp.conf文件,添加要分配的网段,指明分配的地址范围,默认网关和DNS服务器地址。在文件最后我们添加以下内容。注意要分配的网段不能和主机eth0所处的网段相同。(我的主机处在192.168.0.1/24,所以我下面挑的是10.0.0.0/8这段地址。
subnet 10.0.0.0 netmask 255.0.0.0 { range 10.0.0.2 10.0.0.10; option routers 10.0.0.1; option domain-name-servers 8.8.8.8;}
然后我们配置无线接口wlan0所处的网段,注意要跟上面的配置一致。
$ sudo ifconfig wlan0 10.0.0.1 netmask 255.0.0.0
最后开启dhcp服务器即可,连上热点会从10.0.0.2到10.0.0.10之间分配一个ip地址给客户端。
$ sudo service isc-dhcp-server start 2) NAT
NAT一般分为三类,分别是SNAT,DNAT以及PNAT。
SNAT,Source Network Address Translation
源地址转换,能够为内部客户端代理访问外部网络。目标地址和端口不变,源地址修改成对外可见的公网地址,端口随机生成,并将映射记录在NAT表中。当数据返回时,根据端口将目的地址修改成对应表项的IP地址和端口,这样可以解决多个设备共享一个公有IP上网的问题。DNAT,Destination Network Address Translation
目标地址转换,用来隐藏真实服务器的地址。接收到数据时,源地址和端口不变,对目的地址和端口进行修改。当接收到真实服务器发送给请求的客户端回应时,对源目的地址和端口进行修改。PNAT , Port Network Address Translation
端口地址转换,用来将不同服务统一成一个公网地址,对应不同的端口。接收到数据时,根据目的地址和目的端口将其修改成对应真实服务的地址和端口,并记录在表项中。当接收到真实服务器发送给请求的客户端回应时,根据表项记录对源目的地址和端口进行修改。
在这里,我们要用到的是SNAT,这可以借助iptables工具来实现。iptables能够帮助我们配置管理linux内部防火墙。我们首先打开转发功能,然后将192.168.0.1/24网段的地址都修改为eth0的出口地址。
$ sudo sysctl net.ipv4.ip_forward=1$ sudo iptables -t nat -A POSTROUTING -s 10.0.0.1/8 -o eth0 -j MASQUERADE 7.后续
可以根据自身适宜的方案建立一个bash脚本,以免每次开启AP时都得重新输入命令。
本文参考了以下链接。
https://wiki.archlinux.org/index.php/Software_access_pointhttps://wiki.archlinux.org/index.php/Network_bridgehttps://wiki.archlinux.org/index.php/Internet_sharing