Ubuntu共享WiFi(AP)给Android方法

更新: 2012-03-03 
 
 
Android是不支持Ad-hoc模式的WiFi.Windows 7软AP一个还是比较简单的.本文介绍在Ubuntu下实现软AP.(需要你的无线网卡支持AP哈) 
 
使用工具hostapd,dnsmasq.我的环境时Ubuntu10.10;手机Android 2.1;网卡ath5k.有线网络使用静态的IP. 
 
首先,系统是Ubuntu 11.10,安装软件: 
 
sudo apt-get install hostapd dnsmasq 
 
为无线添加路由规则 
sudo iptables -F 
sudo iptables -X 
sudo iptables -t nat -F 
sudo iptables -t nat -X 
sudo iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE 
sudo iptables -A FORWARD -s 10.1.1.0/24 -o eth0 -j ACCEPT 
sudo iptables -A FORWARD -d 10.1.1.0/24 -m conntrack --ctstate ESTABLISHED,RELATED -i eth0 -j ACCEPT 
 
10.1.1.0/24是我设置的地址段,可以自己改。 
 
若要记录下路由的情况可以加如下语句: 
 
sudo iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 80 -j LOG --log-prefix "NEW_HTTP_CONN: " 
 
其中NEW_HTTP_CONN是日记中的标识。 
 
然后把现在iptables的规则写进/etc/iptables.rules 
 
sudo sh -c "iptables-save > /etc/iptables.rules" 
 
配置/etc/network/interfaces文件,使每次eth0启动时自动写规则 
 
auto eth0 
pre-up iptables-restore > /etc/iptables.rules
post-down iptables-save > /etc/iptables.rulse 
 
配置/etc/network/hostapd.conf 
 
interface=wlan0 
#bridge=br0 #方法二中有用到 
driver=nl80211 
ssid=wbyxu 
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=* #设置密码 
wpa_key_mgmt=WPA-PSK 
wpa_pairwise=TKIP 
rsn_pairwise=CCMP 
 
详细hostapd.conf配置请看http://linuxwireless.org/en/users/Documentation/hostapd. 
 
配置/etc/network/dnsmasq.conf 
 
interface=wlan0 
bind-interfaces #这个是只监听wlan0,没有之会检测所有卡 
except-interface=lo 
dhcp-range=10.1.1.10,10.1.1.110,6h #设置dhcp地址范 
#address=/#/10.1.1.1 #这个会把#(代表所有网址)的dns到10.1.1.1这个地址 
 
dnsmasq与named 
 
一般情况下bind的named会占了53端口,然后dnsmasq会启动不了,所以我用killall named来杀了named再启动dnsmasq。 
 
启动脚本 
 
#! /bin/sh 
        killall named 
        killall hostapd 
        ifconfig wlan0 10.1.1.1 
        hostapd -B /etc/network/hostapd.conf 
        /etc/init.d/dnsmasq restart 
 
“-B”后台运行,之后的hostapd.conf需要指名路径. 
 
电脑上完成. 
 
手机上设置WiFi不使用静态IP就可以了.
原文地址:https://www.cnblogs.com/huapox/p/3299908.html