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