admin 管理员组

文章数量: 887019

Ubuntu共享WiFi(AP)给Android方法(手工配置)

 
Android不支持Ad-hoc模式的WiFi。Windows 7软AP一个还是比较简单的。


本文介绍在Ubuntu下实现软AP.(需要你的无线网卡支持AP哈)
 
使用工具hostapd,dnsmasq.我的环境是Ubuntu11.10或ubuntu12.04;手机Android 2.3.5;网卡ath5k.有线网络使用静态的IP.
 
1、首先,系统是Ubuntu 11.10或者Ubuntu 12.04,安装软件:
 
sudo apt-get install hostapd dnsmasq

 
2、配置网络端口:  sudo gedit  /etc/network/interfaces文件,内容如下:

auto eth0

iface eth0 inet static

address 172.16.54.182    # ip地址,自己修改

netmask 255.255.255.0    #  子网掩码,自己修改

gateway 172.16.54.1        #   网关,自己修改

auto lo

iface lo inet loopback

 

 
3、配置hostapd:  sudo gedit /etc/hostapd.conf   内容如下
 
interface=wlan0
driver=nl80211
ssid=wbyxu                   # ssid 可以改成你喜欢的名字
hw_mode=g
channel=11
dtim_period=1
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=3
ieee80211n=0
wpa=3
wpa_passphrase=12345678     #自行设置密码,最好密码后要留空格
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
 
 
4、配置dns:  sudo gedit /etc/dnsmasq.conf    内容如下
 
interface=wlan0
bind-interfaces #这个是只监听wlan0,没有之会检测所有卡
except-interface=lo
dhcp-range=10.0.0.10,10.0.0.110,6h     #设置dhcp地址范围,即租借时间6小时
#address=/#/10.0.0.1 #这个会把#(代表所有网址)的dns到10.1.1.1这个地址
dhcp-option=3,10.0.0.1 #为手机配置网关 (此处参考)
dhcp-option=6,202.114.128.2#为手机配置dns,请自己修改为外网的dns地址此处参考)
 
5、编辑启动脚本: sudo gedit /usr/bin/myap   内容如下:

#! /bin/sh

# 为无线添加路由规则

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE

iptables -A FORWARD -s 10.0.0.0/8 -o eth0 -j ACCEPT

iptables -A FORWARD -d 10.0.0.0/8 -m conntrack --ctstate ESTABLISHED,RELATED -i eth0 -j ACCEPT

#dnsmasq与named一般情况下bind的named会占了53端口,

#  然后dnsmasq会启动不了,所以我用killall named来杀了named再启动dnsmasq。

killall named

killall hostapd

ifconfig wlan0 10.0.0.1

#“-B”后台运行,之后的hostapd.conf需要指名路径.

hostapd -B /etc/hostapd.conf

/etc/init.d/dnsmasq restart

# dnsmasq启动后会出现电脑突然上不了网,

# 因为dnsmasq更改了/etc/resolv.conf的原因。可以在/etc/resolv.conf加一行

# nameserver x.x.x.x

#填入DNS服务器地址,根据自己的情况修改

echo "nameserver 202.114.128.2" >> /etc/resolv.conf


6、修改/usr/bin/myap权限:

sudo  chmod a+x /usr/bin/myap


7、最后还要注意确保系统打开转发功能

sudo su

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

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

exit

 

8. 想共享wifi时,请保证电脑能上网,然后运行

sudo myap


至此,电脑上的设置完成,最好重启一下.
 
手机上设置WiFi不使用静态IP就可以了.


——————————————————————————————————————————

简单易懂的Ubuntu生存战略:开启无线网卡的wifi热点,ap模式

在ubuntu下如何把无线网卡设置成可供wifi设备上网的接入点

因为某些移动设备对wifi热点的要求有些苛刻,p2p模式的无线连接方式虽然易设置,但是实用性不高.

相对而言,创建一个虚拟无线路由器成了分享网络的最佳方式.

win7下为手持设备创建一个wifi热点只需要两行命令;GUI程序有connectify,不存在什么问题.

在linux下则情况有点复杂(对不懂底层网络设置的人而言):网上流传的千篇一律的教程多有讹误,普适性也存在问题.

在这里我介绍一个具有GUI的wifi热点设置程序,相当于win7下的connectify,并且在功能上不亚于收费版的connectify.

这个程序叫wifi-hostapd-ap,作者是一个俄罗斯人.

 程序的下载地址是:http://code.google/p/wifi-hostapd-ap/downloads/list,我下的是WiFi_Hostapd_AP-0.9.4.10_10.03.12.tar.gz.

下载后解压:

tar xzf WiFi_Hostapd_AP-0.9.4.10_10.03.12.tar.gz

在使用前安装一些依赖程序:

sudo apt-get install wireless-tools bridge-utils hostapd dnsmasq libqtgui4

编辑一处配置:

sudo gedit /etc/init.d/hostapd

找到第19行,更改如下:

DAEMON_CONF=/etc/hostapd/hostapd.conf

保存并退出.

下面就可以运行那个GUI程序了:

转到解压后的目录,并且使用root运行:

cd WiFi_Hostapd_AP-0.9.4.10_10.03.12

sudo ./WiFi_Hostapd_AP

运行界面如下:

界面非常朴素,不过实用就行了.

选择Options下的第二个菜单项来设置:

第一个设置页不用更改,值得关注的是第二项:语言,有英文与俄文,一般情况下选英文.

语言文件在程序的目录下,*.ts与*.qm,移动的程序时需要与程序一起移动.

第二页注意一下,

AP IP,AP Mask:ip地址不用更改,

WiFi device for AP:选择开启热点的无线网卡,一般是wlan0

SSID:无线网络的名称,自行设置

Driver for device:网卡驱动器的型号,必须选nl80211

Protection:密码格式,可以选择None(不设密码),WEP,WPA3

Password(8-16字符):密码

第三页

IP Range For Clients:分配给客户的IP范围,注意与ap的IP地址(在第二页设置)要在同一个段内

The interface to access the internet:通过哪个接口上网.如果电脑是连在路由上直接上网的选eth0,通过DSL上网的选ppp0.设置前最好用先弄清楚.

 

* 每一页设置好后都 [Save]保存.

然后回到主程序,点 [Activate]开启wifi.不出意外就如下所示,表示成功开启.

开启成功后把这个程序关掉也没问题,毕竟这只是一个壳.


问题与排除:

无法激活,或出现错误,或激活完成但是没有绿色的Active字样.

1:没有编辑/etc/init.d/hostapd文件,请按前面的方法修改该文件

2:设置选项的第二页没有设置正确,或驱动选择不正确,或网卡没有选对,或者是其他地方出错

3:密码设置不正确.尝试取消密码

sudo hostapd -d 可以显示错误信息.

 

激活成功,但是移动设备无法上网:

1:ap的id与客户分配的ip不在同一程序段内

2:选择了错误的访问英特网的适配器(第三页)



————————————————————————————————

1. connectify

计算机:acer4739Z——ubuntu12.04-LTS
手机:T619——Android-2.3.5


     现在不少朋友都在使用Android手机,链接wifi来上网确实很方便。但是当没有无线路由的时候,就不得不想另外一个办法了。比较流行和实用的就是,利用笔记本电脑共享APwifi)给Android手机。使用过WIN7的朋友都知道,WIN7系统中利用几条命令就可以创建AP,或者更为方便的是利用Connectify这样的软件,可以轻轻松松就创建好AP。但是使用ubuntu的朋友,就没这么幸运了。为了共享AP,不得不折腾一番。下面,我们就一起来分析一下,在ubuntu下有哪些方法可以共享AP


方法一:利用系统自带的功能创建AP

    首先,最简单的莫过于使用系统自带的功能去创建AP了,不需要下载任何软件,而且是在UI界面下进行操作,非常的简单。但是首先要说明的是,按照这样的方法创建AP,大部分手机都不能扫描到PC所发射出来的wifi信号。我用华为的一款手机(具体型号忘了)可以成功的检测到这种wiifi信号,但是使用三星,天语(T619)的手机都检测不到这种wifi信号。还有朋友说,他的是小米的手机,可以检测到这种wifi信号。不知你的手机是否可以检测到呢?下面我们就先试一下吧。

1,在系统的有上角,有个链接管理的图标,点击见下拉菜单。

2,在上述菜单中,点击“启动无线”了启动无线功然后点击“编辑连接...",在弹出的“网络连接”窗体中,选择“无线”,如下所示:


3,点击“添加(A)”按键来创建一个网络。选中“无线”这个选项,然后“连接名称”和SSID中都填写“MyWifi”,其他选项都按照图中的设置去选择,如下图所示:


4,点击“无线安全性”,填写认证的密码。如下图所示。


5,点击“IPv4设置”,设置如下(如果默认就是如此,就不用改了):


6,点击“IPv6设置”,“方法”选择“忽略”,其他不用管。完了后点击“保存”:


7,回到桌面,再次点击网络链接的图标,选择“链接到隐藏的无线连接(C)...”,在“连接(N)”选项里,选择刚才所创建wifi——“MyWifi”,然后点击”连接(O)“。



8
,到此,一个AP就创建成功了。拿你的手机出来,打开wifi,看能不能扫描到刚才所创建的wifi信号?如果可以的话,恭喜你,
不用往下看了;如果不行,那也别着急下面还有更好的方法。


方法二,ubuntu版的”Connectify“

     在Windows中有”Connetify”ubuntu中有什么呢?不错,那就是“wifi-hostapd-ap”,是一位俄罗斯的朋友写的。可到http://code.google/p/wifi-hostapd-ap/downloads/list进行下载。网站的截图如下:



    从截图可见,共有4种版本的供你选择。首先是源码,喜欢自己编译的或者研究里面是怎么实现的朋友可以下载这个。其次是可执行文
件,下载解压就行了。最后一个是.deb格式的安装包,使用dpkg命令即可安装。

    在安装的过程中,可能会出现一些问题,主要是这个软件依赖很多的库。那么,这个软件依赖于哪些库或者要使用的工具有那些呢?简单列举一下:wireless——tools,bridge—utils,hostapd,dnsmasq,libqtgui4,gambas3-runtime...具体的你可以根据安装过程中的提示去下载。我在安装的过程中就因为缺少适合版本的gambas3-runtime,从而导致安装失败。因此也没有能够进行下一步的测试。所以,下面

将引用另外一位朋友的对这个软件的介绍《ubuntuAP》。希望你可以安装成功。
    如果你安装成功了,那恭喜你;如果很不幸,你也和我一样,找不到适合版本的gambas-runtime3,怎么办呢?
    针对在这一块的缺失,本人写了一款针对ubuntu-12.04-LTS的“Connectify”,现在正处于测试阶段。
在推出这一款软件之前,先向大家介绍一些其他的方法,以便缓解“燃眉之急”。请继续往下看。    


方法三:hostapd+dnsmasq

    利用方法一所创建出来的wifi,为什么大多数Android手机都搜索不到它的信号呢?那是因为Android一般都是不支持Ad-hoc模式的WiFi的。为了在ubuntu中创建一个Android手机能够识别的AP,下面将向大家介绍另外一种方法。 

1,要安装两个软件。hostapddnsmasq。执行sudo apt-getinstall hostapd dnsmasq 即可安装。至于这两个软件的详细说明,我另外有文章进行详细的描述,有兴趣的可以看我的《Hostapd》。这里就不深入介绍,仅仅达到成功建立AP的目的即可。

2,关于网路端口的配置。网上有文章说,要将有线网卡配置为静态ip。但是本人经过测试,其实不用将有线网卡配置为静态ip也行。由于本人使用的是校园网,链接网络要利用锐捷认证,所获得的ip是变化的,如果使用静态ip,则很难认证成功,或者认证成功之后上网很慢(这里涉及到DNS的配置,不详细介绍)或者打不开一些网页。总之,使用静态IP带了很大的不便。不过如果你喜欢,可以按照下面的方法去设置静态IP

打开/etc/network/interfaces文件,添加以下内容:
autoeth0
ifaceeth0 inet static
address 172.16.40.1  #ip
地址,自己修改
netmask 255.255.255.0  #
子网掩码,自己修改
gateway 172.16.40.1   #
网关,自己修改
配置好后,如下图所示意:


3,配置hostapd。打开/etc/hostapd.conf,里面有很多的可配置选项,其中大部分都已经用#来注释了。为了使得一些配置有效。我们要将一些配置前的#去掉,然后根据我们的需要去进行参数设置。要配置的选项和参数如下所示。每个选项的具体意思,有另外的博客专门说明,限于篇幅这里不做详细的介绍。

interface=wlan0
driver=nl80211
ssid=LiyihaiWifi #ssid
可以改成你喜欢的名字,你的手机将会搜索到这个名字的wifi
hw_mode=g
channel=11
dtim_period=1
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=3
ieee80211n=0
#
以下是加密方法的设置,当然你可以选择不要密码(不用设置以下内容),这样的话就只要能够扫描到你的wifi信号的都可以连接。
wpa=3
wpa_passphrase=12345678 #
自行设置密码,有文章说设置好后要留空格,但是经本人测试,不留空格也是可以的。
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

4
,配置dnsmasq。打开/etc/dnsmasq.conf。如果没有这个文件,可以自己创建一个,添加以下内容:
interface=wlan0
bind-interfaces#
这个是只监听wlan0,没有之会检测所有卡
except-interface=lo
dhcp-range=192.168.1.100,192.168.1.254,12h#
设置dhcp地址范围,即租借时间6小时
#address=/#/10.0.0.1#
如果你的配置中有这个,请注释掉,应为这个会把#(代表所有网址)dns10.1.1.1这个地址
dhcp-option=3,192.168.1.1#
为手机配置网关,要和dhcp-arange对应,这涉及网络的知识,不详细介绍。
dhcp-option=6,202.114.128.2#
为手机配置dns,你可以根据实际情况去修改


5
AP是需要路由规则的,为了添加路由规则,可以使用iptalbes命令。你可以用命令行的方式去添加路由规则,但是这里推荐使用

脚本的方式。

   创建一个文件myap,里面添加如下内容:
#!/bin/sh
#
为无线添加路由规则
iptables-F
iptables-X
iptables -t nat -F
iptables -t nat-X
iptables -t nat -APOSTROUTING -s 192.168.1.0/24 -o eth0 -jMASQUERADE
iptables -A FORWARD-s 192.168.1.0/24 -o eth0 -jACCEPT
iptables -A FORWARD -d 192.168.1.0/24-m conntrack --ctstateESTABLISHED,RELATED -i eth0 -jACCEPT

   添加完后如图所示:



    添加完后,保存文件。为了使得文件具有可执行的属性,我们可以利用一下的命令去修改(注:你传创建的myap应该在当前目录下,否则要添加路径):sudo chmod a+x  myap 
    说明:由于在上面我们将dhcp-range设置为192.168.1.100,192.168.1.254,也就是指定了wifi动态分配的地址范围为192.168.1.100192.168.1.254,所以这里要配置路由规则的时候使用192.168.1.0。如果上面你的dhcp-range不是192.168.1.100,192.168.1.254,那么你的路由规则也要修改。


6,为了确保打开了转发的功能,还要修改一个文件/etc/sysctl.conf。打开文件/etc/sysctl.conf,找到net.ipv4.ip_forward=1,如果被注释了,要将其前面的注释去掉,以便使其生效。如图所示:


7,现在以启动AP啦。流程如下。(#号后面的是说明)
killallnamed  #
一般情况下bindnamed会占了53端口,从而导致dnsmasq启动不了,所以要用killallnamed来杀了named再启动dnsmasq
killallhostapd
ifconfig wlan0 192.168.1.1 #
由于上面我们将dhcp-range设置为192.168.1.100,192.168.1.254,所以这里我们要将wlan0ip设置为同一网段的ip
hostapd-B/etc/hostapd.conf
/etc/init.d/dnsmasq restart #
使用静态ip的朋友注意了,dnsmasq启动后会出现电脑突然
上不了网,因为dnsmasq更了/etc/resolv.conf的原因。可以在/etc/resolv.conf加一行,执行命令echo"nameserver202.114.128.2">>/etc/resolv.conf即可。202.114.128.2dns服务器,你可以根据你的当地的实际情况去修改。

echo1>/proc/sys/net/ipv4/ip_forward #启动转发功能。
sudo./myap#
如果你的myap不在当前路径下,要加路径。


     至此,AP创建已经完成。打开手机扫描一下wifi,是不是可以上网了了?如果还不可以,建议重启一下电脑,再操作一次第7步。注意:手机不要设置为静态ip了。

     

    备注:在测试的过你可以会遇到:“SIOCSIFFLAGS: Operation not possible due to RF-kill”这样的错误。这时不要害怕,有个很简单的解决方法,请看我的博客《SIOCSIFFLAGS: Operation not possible due to RF-kill》。


最后的总结

     除此之外,ubuntu下还有其他的方法去创建AP,但是限于篇幅,这里就不再添加更过的方法了。在上面的3种方法中,第一种最简单,但是适用性很差。第二种方法很方便,很是暂时还不大可行。第三种方法最复杂,但是适用性最好。至于选择那一种,看你喜欢啦。

参考文档

Ubuntu_Ubuntu12.04下设置笔记本成为wifi热点》

http://blog.csdn/jiguanghoverli/article/details/8110283

《Ubuntu共享WiFi(AP)给Android方法》

http://xgwdy06.blog.163/blog/static/190718352201223093522365/
Ubuntu共享WiFi(AP)Android方法【修正版】》

http://hi.baidu/gbthereisaway/item/9073a2e4ab2d8a374ddcafad
UbuntuAP

http://hi.baidu/lexiangtaotao/item/5d4e87f22db132c70cd1c86f


本文标签: 方法 WiFi Ubuntu Android AP