随笔 - 298  文章 - 377  trackbacks - 0
<2013年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(34)

随笔分类

随笔档案

文章档案

相册

收藏夹

搜索

  •  

最新评论

阅读排行榜

评论排行榜


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

Driver802.11Bus interfaceWEPWPAWPA2Monitor modeMaster modeAd-Hoc mode
acx1xx802.11b,802.11gPCIMini PCIPC cardUSBYesNoNoYesYes?
adm8211?PCI????No?
ath5k802.11a,802.11b,802.11gPCIMini PCIPC cardAHBYesYesYesYesYes (since 2.6.31)Yes
ath9k802.11a,802.11b,802.11g,802.11nPCIMini PCIAHB,PCI Express Mini CardYesYesYesYesYesYes
b43802.11b,802.11gPCIMini PCISDIO ?YesYesYesYesYesYes
bcm43xx802.11b,802.11gPCIMini PCIPC card,CardbusYesYesYesYesNo?
brcmsmac802.11b,802.11g?Yes?YesYesNoNo
hostap802.11bPCIMini PCIPC cardYesYes[17]Yes[17]YesYesYes
ipw2100802.11bMini PCIYesYes?Yes??
ipw2200802.11a,802.11b,802.11gMini PCIYesYesYesYesNoYes
ipw2200-ap802.11b,802.11gMini PCI???YesYes?
ipw3945802.11a,802.11b,802.11gMini PCI,PCI Express Mini CardYesYesYesYesNoYes
islsm?PCIUSBNoNoNo?No?
iwlwifi802.11a,802.11b,802.11gMini PCI,PCI Express Mini CardYesYesYesYesNoYes
iwlagn802.11a,802.11g,802.11nMini PCI,PCI Express Mini CardYesYesYesYesNoYes
libertas802.11b,802.11gUSBCF,SDIO????No?
MadWifi802.11a,802.11b,802.11gPCIMini PCIPC cardYesYesYesYesYesYes some issues in HAL, outdoor sensitivity?[citation needed]
orinoco802.11bMini PCI,PC cardYesYes[18]NoYesNoYes
p54802.11b,802.11gMini PCI,Cardbus,USBYesYesYesYesYesYes
prism54802.11b,802.11gPCIYesNo?YesYes?
rndis_wlan802.11b,802.11gUSBYesYesYesNoNoYes
rt2x00802.11b,802.11gPCIMini PCIUSBYesYes[19]Yes[20]YesYes[21]Yes
rtl8180802.11a,802.11b,802.11gPCIMini PCIPC card????Yes?
rtl-wifi802.11a,802.11b,802.11gPCIMini PCIPC cardYesYes??Yes?
zd1201802.11bUSBYesNo[22]No[22]YesYes?
zd1211802.11a,802.11b,802.11gUSBYesYesYesYesYes?
zd1211rw802.11b,802.11gUSBYesYesYesYesYes[23]Yes

:eek:

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

如果以上检查证明无线网卡支持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 

posted on 2013-11-23 11:09 聂文龙 阅读(3764) 评论(0)  编辑 收藏 引用 所属分类: Linux

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理