Pages

Saturday, 6 August 2016

用hostapd建非ad-hoc网络(安卓手机可检测到)

我们知道,安卓系统的手机屏蔽了ad-hoc网络。所以,当我们用笔记本或者台式机自带的无线网卡去建立一个无线热点来给我们的移动设备共享有线网络的时候,就不可以。此时,在windows下面,由许多种方法可以实现非ad-hoc网络共享。本文就介绍一种在linux底下实现共享的方法——用hostapd来建一个非ad-hoc网络。至于hostapd是什么,此处就不予介绍了,因为网上相关的文章太多,而且都很详细。下面具体说一下实现步骤:
  1. 安装hostapd。安装完以后在/etc/hostapd/目录下建立hostapd.conf文件(如果没有,自己建立),内容如下:
  2. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ssid=mytest         // ssid是无线终端搜索网络时看见的名字
    interface=wlan0     // wlan0是无线网卡的名字,如果是其他名字修改了即可;
    driver=nl80211      // driver一定要设置为nl80211;
    channel=10
    hw_mode=g
    ignore_broadcast_ssid=0
    macaddr_acl=0
    wpa=3
    wpa_passphrase=xxxxxx     //无线密码
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
  3. 安装dhcp服务器
  4. 1
    sudo apt-get installisc-dhcp-server //dhcp服务器,网上有许多是用网桥实现,但我觉得用这个dhcp服务器更简单
3. 安装完以后,在/etc/dhcp/目录下建立文件dhcpd.conf,内容如下:
1
2
3
4
5
subnet 10.10.0.0 netmask 255.255.255.0 {
  range 10.10.0.1 10.10.0.100;  //这个范围表示你可以连接的终端数
  option domain-name-servers 8.8.8.8,8.8.4.4;
  option routers 10.10.0.254;
}

4.写一个脚本softAP.sh。内容如下:

1
2
3
4
5
6
7
8
9
#/bin/bash!
sudo service hostapd stop
sudo ifconfig wlan0 10.10.0.254 netmask 255.255.255.0
sudo hostapd /etc/hostapd/hostapd.conf -B
sudo service isc-dhcp-server restart
sudo iptables -A FORWARD -i wlan0 -o eth0 -s 10.10.0.0/25 -m state --state NEW -j ACCEPT
sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo echo "1" >/proc/sys/net/ipv4/ip_forward

5.执行
1
sudo sh sotfAP.sh
即可。
   注:其实你也可以不用第4步的脚本,手动去启动hostapd和dhcp服务器,但是每次这样做比较麻烦,用一个脚本来实现这些功能比较方便,这也是linux的习惯和方便之处.