linux下使用hostapd时,报错“recv: Network is down”,不能产生ssid或ssid消失的解决方案

目前市面上很多无线网卡都具有模拟AP功能,不单可以作为无线客户端连接上无线网络,也可以切换为模拟AP,供其他无线客户端连接。本文总结了Linux中使用hostapd创建无线AP及相关问题的处理方法。

AD:51CTO开启企业运维技术盛宴_嘀嘀、新浪、白鹭齐聚MDSA线下沙龙,赶紧报名吧!

http://os.51cto.com/art/201311/415573.htm

http://www.360doc.com/content/14/0403/07/13232598_365885798.shtml

http://www.oschina.net/question/139930_228663?sort=time

【51CTO专稿】无线AP可以为传统的有线局域网提供无线扩展接入,而一般的无线网卡只能作为客户端连接到无线AP。目前市面上很多无线网卡都具有模拟AP功能,不单可以作为无线客户端连接上无线网络,也可以切换为模拟AP,供其他无线客户端连接。而笔记本上的模拟AP其典型应用场景如下:在没有无线路由器的情况下,电脑通过有线连接到宽带线路已经可以上网。电脑上安装具有模拟AP功能的无线网卡,并设置共享可以访问有线网络的网络连接,模拟AP与可以访问有线网络的网络连接就虚拟出一个"无线路由器"。

随着个人越来越多的其他的无线设备如手机、PAD以及很多类似平板设备的普及,我们发现很多时候我们的外出等特殊情况下让我们的其他设备接入有线网络已经成为了一个现实问题,那么我们可以充分发挥我们的随身笔记本的功能,将其通过软件设置成为模拟AP,这样就可以解决很多特殊情况下其他设备上网的问题了,如果您是一位WINDONS的用户,那么在win7下面用"承载网络"这一功能来模拟AP。当然,在LINUX系统下我们也可以通过软件配置来实现这样的功能。下面笔者将以FEDORA18下使用无线AP功能为例,讲述在LINUX系统下实现自定义无线AP的过程及升级带来的问题及解决办法。

一、实验环境:

  • 操作系统:FEDORA18
  • 内核版本:3.11.4-101.fc18.i686.PAE
  • 无线网卡型号:tp-link TL-WN310G

二、无线AP创建过程:

1、在终端下分别使用命令yum install hostapd、yum install dnsmasq安装hostapd及dnsmasq软件组件包。其中hostapd 是 Host Access Point 守护进程,提供对基于 Linux 的无线接入点的强 WPA2 加密和身份验证。配置 hostapd 非常简单,它支持 WPA2-Personal 和 Enterprise,提供了对 WPA2-Personal 的独特修改,可让管理它变得更复杂或更简单,随后我们可以通过/etc/hostapd/hostapd.conf配置文件详细的配置hostapd的各种参数,让其将无线网卡模拟成为无线AP。而Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以为局域网电脑提供内网ip地址和路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络,我们将通过它来为我们接入后的客户端设备提供DHCP以及DNS服务。这样客户端就可以通过无线模拟AP顺利访问网络。

2、在系统中使用vi命令编辑hostapd配置文件/etc/hostapd/hostapd.conf(该在安装hostapd软件组件包时自动创建完成),内容如下:

   
   
  1. ctrl_interface=/var/run/hostapd  
  2. ctrl_interface_group=wheel  
  3. # Some usable default settings...  
  4. macaddr_acl=0  
  5. auth_algs=1  
  6. ignore_broadcast_ssid=0  
  7. # Uncomment these for base WPA & WPA2 support with a pre-shared key  
  8. wpa=2  
  9. wpa_key_mgmt=WPA-PSK  
  10. wpa_pairwise=TKIP  
  11. rsn_pairwise=CCMP  
  12. # DO NOT FORGET TO SET A WPA PASSPHRASE!!  
  13. wpa_passphrase=****** 
  14. # Most modern wireless drivers in the kernel need driver=nl80211   
  15. #ieee80211n=1  
  16. # Customize these for your local configuration...  
  17. interface=wlan0  
  18. hw_mode=g  
  19. channel=7  
  20. ssid=HOSTAP 
  21. logger_stdout=-1 
  22. logger_stdout_level=2 
  23. max_num_sta=5 

在该配置文件中SSID其实指的就是无线AP的访问名,用户可以随意定义自己喜欢的名字。而wpa_passphrase等号后的字符其实就是无线AP的连接密码,用户同样需要根据自己的需求进行修改。

3、在系统中使用vi命令编辑dnsmasq配置文件/etc/dnsmasq.conf,对如下行进行修改,内容如下:

   
   
  1. interface=wlan0 
  2. listen-address=192.168.0.1 
  3. #no-dhcp-interface
  4. dhcp-range=192.168.0.50,192.168.0.150,12h 
  5. dhcp-option=3,192.168.0.1 
  6. dhcp-option=6,8.8.8.8 

其中dhcp=ranage参数为dhcp地址范围,即租借时间12小时,dhcp-option=3,192.168.0.1为客户端配置网关,该地址其实就是模拟为无线AP无线网卡的IP地址。

dhcp-option=6,8.8.8.8为客户端配置dns,用户应该自己修改为外网的dns地址。

4、修改网络设置,打开Linux主机网络数据转发功能,命令模式如下:

   
   
  1. echo 1 >/proc/sys/net/ipv4/ip_forward 

5、设置无线接入点IP地址,命令模式如下:

   
   
  1. ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 

6、使用命令systemctl启动hostapd及dnsmasq网络服务,命令模式如下:

   
   
  1. systemctl start hostapd.service 
  2. systemctl start dnsmasq.service 

7、如果该linux系统开启了防火墙需要使用iptables开启数据转发功能,命令模式如下:

   
   
  1. iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o em1 -j MASQUERADE 
  2. iptables -A FORWARD -s 192.168.0.0/24 -o em1 -j ACCEPT 
  3. iptables -A FORWARD -d 192.168.0.0/24 -m conntrack --ctstate ESTABLISHED, RELATED -i em1 -j ACCEPT 

通过以上配置,在FEDORA18初次安装后作为无线AP使用是没有问题的。

三、问题及解决办法

FEDORA18内核升级到3.11.4-101.fc18.i686.PAE后,启动hostapd系统会报类似如下错误:

   
   
  1. nl80211: Failed to set interface wlan0 into AP mode 
  2. nl80211 driver initialization failed. 

导致LINUX系统无法创建模拟无线AP,终于用GOOGLE在:

   
   
  1. https://wiki.archlinux.org/index.php/Software_Access_Point#NetworkManager_is_interfering 

帖子中找到了解决办法。其实后来发现只需要将netmanager网络管理器中无线网卡设置为"设备未托管"状态,之后hostapd就可以正常启动。

如果没有netmanager,那么需要执行安装命令

Installation

NetworkManager should be installed by default on Ubuntu Desktop installs, as well as most flavours of Ubuntu.

To install NetworkManager:

sudo apt-get install network-manager

To install the GNOME applet / indicator:

sudo apt-get install network-manager-gnome

使用sed -i '/\[keyfile\]/a unmanaged-devices=mac:00:23:cd:10:3e:0b' /etc/NetworkManager/NetworkManager.conf;

在/etc/NetworkManager/NetworkManager.conf文件中的[keyfile]字段之后添加内容为:

unmanaged-devices=mac:00:23:cd:10:3e:0b的一行,其中"00:23:cd:10:3e:0b"为无线网卡MAC地址。这样该网卡就已经不再受NetworkManager管理了,在NetworkManager管理器中无线网络状态将更改为“设备未托管”状态。

使用sed -i '/^unmanaged-devices=mac:00:23:cd:10:3e:0b/d' /etc/NetworkManager/NetworkManager.conf命令,在文件中删除 unmanaged-devices=mac:00:23:cd:10:3e:0b这一行内容,可将无线网络重新托管在NetworkManager管理器中。

客户端使用HOSTAPD无线AP时,网速不稳定,导致某些时刻无法打开网页或者其它因为网络超时导致的网络不可访问故障。

该问题主要是因为无线数据传输校验中随机种子数较少导致的无线网络数据传输时延过大导致的,用户可以通过命令cat /proc/sys/kernel/random/entropy_avail来查看具体数值,该值一般小于1000,用户需要通过在终端中执行yum install haveged命令安装随机数生成器(haveged),并使用systemctl enable haveged.servce命令来启动随机数生成器(haveged)已提高entropy_avail数值。这样无线网络时延将恢复到正常状态。网络不在出现以上描述的问题。

【编辑推荐】

您可以按照以下步骤在Linux系统上使用hostapd搭建和使用WiFi: 1. 安装hostapd:可以使用以下命令在终端中安装hostapd: ``` sudo apt-get update sudo apt-get install hostapd ``` 2. 配置hostapd:可以使用以下命令来编辑hostapd的配置文件: ``` sudo nano /etc/hostapd/hostapd.conf ``` 在编辑器中,您需要设置一些参数,例如SSID(WiFi名称),密码,通道等等。以下是一个示例: ``` interface=wlan0 driver=nl80211 ssid=my_network hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=my_password wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP ``` 请注意,这只是一个示例配置文件。您需要根据自己的需要进行调整。 3. 启动hostapd:可以使用以下命令来启动hostapd: ``` sudo systemctl start hostapd ``` 4. 配置网络接口:您需要配置网络接口,以便能够将WiFi网络连接到互联网。可以使用以下命令来配置网络接口: ``` sudo nano /etc/network/interfaces ``` 您需要添加以下内容: ``` auto wlan0 iface wlan0 inet static address 192.168.1.1 netmask 255.255.255.0 ``` 这将为wlan0接口配置静态IP地址。 5. 配置DHCP服务器:您需要配置DHCP服务器,以便为连接到WiFi网络的设备分配IP地址。可以使用以下命令来安装和配置DHCP服务器: ``` sudo apt-get install isc-dhcp-server ``` 然后,您需要编辑DHCP服务器的配置文件: ``` sudo nano /etc/dhcp/dhcpd.conf ``` 在文件末尾添加以下内容: ``` subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.50; option broadcast-address 192.168.1.255; option routers 192.168.1.1; default-lease-time 600; max-lease-time 7200; option domain-name "my_network"; option domain-name-servers 8.8.8.8, 8.8.4.4; } ``` 请注意,这只是一个示例配置文件。您需要根据自己的需要进行调整。 6. 启动DHCP服务器:可以使用以下命令来启动DHCP服务器: ``` sudo systemctl start isc-dhcp-server ``` 现在,您的hostapd WiFi网络已经搭建好了,您可以使用其他设备连接到该网络并访问互联网。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值