分享

Ubuntu共享WiFi(AP)给Android的方法汇总

 Tehero 2014-01-08

计算机: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.com/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.net/jiguanghoverli/article/details/8110283

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

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

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

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









    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多