Ubuntu共享WiFi(AP)给Android方法【修正版】

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系统上建立一个热点,然后共享网络给自己的Android手机,发现Android不支持Ad-hoc模式的WiFi。


于是查资料,发现可以使用AP模式共享,开始高兴坏了,但是再次悲剧了哭,自己的网卡是Intel WiFi Link 5100,该网卡LINUX下不支持AP模式(windows是否支持没研究)。

所以有类似想法的朋友,建议先查看一下自己的无线网卡是否支持AP模式,方法如下:(如果有哪位朋友还有别的方法在ubuntu下使用wifi共享给安卓手机,麻烦传授一下方法,谢谢~~

【下面方法是参考该博主的博客:http://ihacklog.com/linux/archlinux/use-hostapd-to-setup-wireless-access-point-under-linux.html,对其表示感谢】

首先,查看网卡芯片信息:
对于pci网卡:

1
lspci

我的是:

1
03:00.0 Network controller: Intel Corporation PRO/Wireless 5100 AGN [Shiloh] Network Connection

对于USB网卡:

1
lsusb

然后用ifconfig -a 看下你有哪几块网卡。

ethtool这个工具可用来查看网卡的详细信息:

1
2
3
4
5
6
7
8
9
[admin @huangye ~ ]$ ethtool  -i wlan0
driver: iwlagn
version:  3.0-ARCH
firmware-version: 8.83.5.1 build  33692
bus-info: 0000:03: 00.0
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no

可以看到我的网卡目前用的驱动是iwlagn,此驱动是由intel开发的。
debian wiki 有关于此驱动的描述:http://wiki.debian.org/iwlagn
下面一步才是关键:
这一步用于确定你的无线网卡是否支持”master mode”,也就是AP模式,如果不支持的话,下面的你不用看了,基本没戏了。。。

我们先用这个来测试:

1
2
3
4
[admin @huangye ~ ]sudo iwconfig wlan0 mode master
Password: 
Error  for wireless request  "Set Mode"  (8B06 ) :
    SET failed on device wlan0 ; Invalid argument.

可以看到这里操作失败了。
还有机会。。。有些新的网卡用的是mac80211 framework,对于这些网卡的话,用iwconfig来测试它是否支持master模式是行不通的。
因为他们是使用新的 nl80211接口在用户空间通信的.
如果你没有iw这个新的无线网卡配置工具的话,你得先安装一个。
运行

1
iw list

如果”Supported interface modes”中有AP的话,那么恭喜,你的网卡支持用hostapd来架设软AP.

1
2
3
4
    Supported interface modes:
          * IBSS
          * managed
          * monitor

可以看到我的杯具了,不支持。。。
还不死心的话,这里有一个列表,列出各种网卡的信息,可以看到 iwlagn的驱动不支持master模式的。。。杯具啊
Comparison of open-source wireless drivers
Intel 无线网卡驱动官方网站:http://intellinuxwireless.org/

Driver capabilities

Also see linuxwireless.org

Driver 802.11 Bus interface WEP WPA WPA2 Monitor mode Master mode Ad-Hoc mode
acx1xx 802.11b,802.11g PCI, Mini PCI, PC card, USB Yes No No Yes Yes ?
adm8211 ? PCI ? ? ? ? No ?
ath5k 802.11a,802.11b,802.11g PCI, Mini PCI, PC card, AHB Yes Yes Yes Yes Yes (since 2.6.31) Yes
ath9k 802.11a,802.11b,802.11g,802.11n PCI, Mini PCI, AHB,PCI Express Mini Card Yes Yes Yes Yes Yes Yes
b43 802.11b,802.11g PCI, Mini PCI, SDIO ? Yes Yes Yes Yes Yes Yes
bcm43xx 802.11b,802.11g PCI, Mini PCI, PC card,Cardbus Yes Yes Yes Yes No ?
brcmsmac 802.11b,802.11g ? Yes ? Yes Yes No No
hostap 802.11b PCI, Mini PCI, PC card Yes Yes[17] Yes[17] Yes Yes Yes
ipw2100 802.11b Mini PCI Yes Yes ? Yes ? ?
ipw2200 802.11a,802.11b,802.11g Mini PCI Yes Yes Yes Yes No Yes
ipw2200-ap 802.11b,802.11g Mini PCI ? ? ? Yes Yes ?
ipw3945 802.11a,802.11b,802.11g Mini PCI,PCI Express Mini Card Yes Yes Yes Yes No Yes
islsm ? PCI, USB No No No ? No ?
iwlwifi 802.11a,802.11b,802.11g Mini PCI,PCI Express Mini Card Yes Yes Yes Yes No Yes
iwlagn 802.11a,802.11g,802.11n Mini PCI,PCI Express Mini Card Yes Yes Yes Yes No Yes
libertas 802.11b,802.11g USB, CF,SDIO ? ? ? ? No ?
MadWifi 802.11a,802.11b,802.11g PCI, Mini PCI, PC card Yes Yes Yes Yes Yes Yes some issues in HAL, outdoor sensitivity?[citation needed]
orinoco 802.11b Mini PCI,PC card Yes Yes[18] No Yes No Yes
p54 802.11b,802.11g Mini PCI,Cardbus,USB Yes Yes Yes Yes Yes Yes
prism54 802.11b,802.11g PCI Yes No ? Yes Yes ?
rndis_wlan 802.11b,802.11g USB Yes Yes Yes No No Yes
rt2x00 802.11b,802.11g PCI, Mini PCI, USB Yes Yes[19] Yes[20] Yes Yes[21] Yes
rtl8180 802.11a,802.11b,802.11g PCI, Mini PCI, PC card ? ? ? ? Yes ?
rtl-wifi 802.11a,802.11b,802.11g PCI, Mini PCI, PC card Yes Yes ? ? Yes ?
zd1201 802.11b USB Yes No[22] No[22] Yes Yes ?
zd1211 802.11a,802.11b,802.11g USB Yes Yes Yes Yes Yes ?
zd1211rw 802.11b,802.11g USB Yes Yes Yes Yes Yes[23] Yes

=============================================

如果以上检查证明无线网卡支持AP模式,参考如下方法共享wifi给android手机,这是我这几天看了一些文章总结,希望对大家都帮助:

参考如下:

方法一:安装工具wifi-hostapd-ap,该软件作者是一个俄罗斯人,具体操作步骤请参考:(推荐大家使用这个。比较简单,我因为网卡原因没福享受了。。。)

http://hi.baidu.com/aristotle9/blog/item/a77477911e01bf92a977a4fd.html#0


方法二:使用配置文件及脚本启动AP模式实现wifi共享:

可参考该博客:

http://hi.baidu.com/gbthereisaway/blog/item/d3f419a3a45cf78ad0435807.html

注意该文章有三点要注意修改:

(1)在这节中:“2、配置网络端口”,将里面的IP地址和网关根据自己实际情况来设置,我的是这样:

auto eth0
iface eth0 inet static
address 192.168.1.110
netmask 255.255.255.0
gateway 192.168.1.1
auto lo
iface lo inet loopback


(2)在这节中:“4、配置dns”,将里面的dns也根据自己的实际情况来设置,我的是这样:

interface=wlan0
bind-interfaces #这个是只监听wlan0,没有之会检测所有卡
except-interface=lo
dhcp-range=192.168.0.2,192.168.0.110,6h #设置dhcp地址范
#address=/#/192.168.0.1 #这个会把#(代表所有网址)的dns到192.168.0.1这个地址

(3)在这节中“:5、编辑启动脚本: sudo gedit /usr/bin/myap   内容如下”,请根据实际情况修改:

ip地址

另外还有该路径请设置正确,按照文章中描述,应该修改:

hostapd -B /etc/hostapd.conf  --》修改为:hostapd -B /etc/network/hostapd.conf 

你可能感兴趣的:(Ubuntu共享WiFi(AP)给Android方法【修正版】)