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 | 03:00.0 Network controller: Intel Corporation PRO/Wireless 5100 AGN [Shiloh] Network Connection |
对于USB网卡:
然后用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这个新的无线网卡配置工具的话,你得先安装一个。
运行
如果”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