翊轩LeOn
黑夜给了我黑色的眼睛,而我却用它来寻找光明.
最近在Ubuntu找了很久,也找不到一个可以将无线网卡作AP的软件,就是类似win 7下的connectify工具,能将笔记本作为AP使用。试了网上很多方法都不行,有些是可以搜到热点,但我的Android手机连上去的时候获取不了ip地址。研究了几天,昨晚花了一晚时候,去写个脚本,成功的连上了。希望我这个脚本能帮到大家解决问题。
主要是用到iwconfig这个无线配置工具,然后用iptable设置NAT规则,使用dnsmasq去分配ip地址。
因為硬件不的同,設置也會有相應的修改。
本人的筆記本是:Acer 4743g
使用前,請激活網管理器的wifi功能以此加載模塊,然後再取消wifi功能。
- ifconfig wlan0 192.168.2.254 netmask 255.255.255.0
- ifconfig wlan0 up
- #设置为ad-hoc模式
- iwconfig wlan0 mode ad-hoc
- #设置essid,即搜索到的名字
- iwconfig wlan0 essid Leon_in_GuangZhou
- iwconfig wlan0 channel auto
- #设置密码
- iwconfig wlan0 key s:androidworkab
- iwconfig wlan0 key restricted
- #删除旧的规则
- iptables -N wireless-adhoc
- iptables -F wireless-adhoc
- iptables -t nat -F PREROUTING
- iptables -t nat -F POSTROUTING
- iptables -t nat -F
- #建立新的规则
- iptables -A wireless-adhoc -m state --state ESTABLISHED,RELATED -j ACCEPT
- iptables -A wireless-adhoc -s 192.168.2.0/24 -j ACCEPT
- iptables -A wireless-adhoc -p 47 -j ACCEPT
- iptables -A wireless-adhoc -j DROP
- iptables -A FORWARD -m state --state INVALID -j DROP
- iptables -A FORWARD -j wireless-adhoc
- iptables -t nat -I POSTROUTING -s 192.168.2.0/24 -j MASQUERADE
- echo "1" > /proc/sys/net/ipv4/ip_forward
- dnsmasq -i wlan0 --resolv-file=/etc/resolv.conf --conf-file=/etc/adhoc/dnsmasq.conf
/etc/adhoc/dnsmasq.conf文件内容为
- dhcp-authoritative
- dhcp-range=192.168.2.100,192.168.2.105,12h
- dhcp-leasefile=/var/run/dnsmasq.leases
- pid-file=/var/run/dnsmasq.pid
- user=root
- no-negcache
完整脚本下载地址:
http://download.csdn.net/source/3484630
或者:https://gist.github.com/1117004
脚本要根据自己电脑情况修改
- #####################################
- #要共享网络的设备,可以用ifconfig命令查看
- ShareNet=eth0
- Wmode=ad-hoc
- Wchannel=auto
- #显示共享wifi的名称
- Wessid=Leon_in_GuangZhou
- #这个是wifi设备的名称,可以用ifconfig查看
- WInterface=wlan0
- #密码
- WPasskey=androidworkab
- Wkey=restricted
- Igateway=192.168.2.254
- Inetmask=255.255.255.0
- Inetwork=192.168.2.0
- DhcpRangeMin=192.168.2.10
- DhcpRangeMax=192.168.2.105
- #####################################
以下是脚本的使用方法:
#先加可执行的权限,XXX代表脚本的路径
chmod +x /XXX/XXX/adhoc
#运行脚本
sudo /XXX/XXX/adhoc
#停止共享
sudo /XXX/XXX/adhoc -s
#重启动共享
sudo /XXX/XXX/adhoc -r
转载请注明出处:http://blog.csdn.net/feifei454498130/article/details/6642140
运行getprop命令可以查看到连接信息地址
注意:
如果运行脚本后,手机或电脑搜不到你的共享,运行重新启动共享命令
sudo /XXX/XXX/adhoc -r
即可,多試几次就行了。
-
顶
- 10
-
踩
- 0
-
猜你在找
核心技术类目
- 个人资料
-
- 访问:274674次
- 积分:2124
- 等级:
- 排名:第8016名
- 原创:19篇
- 转载:51篇
- 译文:0篇
- 评论:136条
- 文章搜索
- 阅读排行
- android 中 系统日期时间的获取(82226)
- Android 4.0 隐藏虚拟按键(导航栏)的方法(38006)
- 手动root android 模拟器(emulator)详细过程(28103)
- Linux Wifi共享上网脚本,类似win 7的Connectify工具(13069)
- android获取string.xml的值(8650)
- i-jetty环境搭配与编译(5472)
- android之定时器AlarmManager(5401)
- Android httpclient接收xml乱码问题解决方法(4934)
- android学习之wifimanager(4609)
- 如何进行手机web远程调试——chrome beta(4088)
- 评论排行
- 推荐文章
- 最新评论
- Android微信抢红包外挂 源代码
gaohanzangqiwen:这个程序怎么运行啊?能写出步骤吗?
- Android微信抢红包外挂 源代码
月亮之上009:厉害!
- Android微信抢红包外挂 源代码
jamseyang:很好很强大!
- Android WebView自定义处理错误页面显示(404等)
Z980287353:这样做还是会刷出原本的错误页面的
- Android SQLite加密
wangning08115:你好 看了您的 博文,很不错。。我遇到一个问题:我把你demo的数据库 拷贝出来 ,用sqlite工...
- Android显示电量——自定义电池View
jason_lee_ying:lz你好,充电状态是不是没有画出来
- android之定时器AlarmManager
C_cai_niao:谢谢楼主的详细讲解
- Android SQLite加密
mnsoft:@huanzi211:这个问题,最后是怎么解决的呢?
- Android 4.0 隐藏虚拟按键(导航栏)的方法
Rebekah_PP:弹出dialog或者popupwindow会导致导航栏出现一下然后又消失的情况,这个是什么原因?怎么...
- Android 4.0 隐藏虚拟按键(导航栏)的方法
安儿47:@nihenbuhao:你怎么去掉的??
16楼 wugenfa 2013-09-10 12:17发表 [回复]-
-
Setting wlan0 key type...Error for wireless request "Set Encode" (8B2A) :
SET failed on device wlan0 ; Operation not supported.
[ good ]
Setting iptable....
dnsmasq: failed to create listening socket for port 53: 地址已在使用
大哥,这是我执行你的脚本的时候出现问题,能帮我吗,QQ 24731843
15楼 feitianzhenwo 2013-04-04 15:58发表 [回复]-
-
额也一样。。。。
14楼 unixcsir 2012-07-26 13:36发表 [回复]-
-
請問,手機連接不上共享的wifi是什麼問題呢?
13楼 coolboy94psj 2012-04-03 03:14发表 [回复]-
-
运行的时候有:
....
Setting wlan0 key type... [ good ]
Setting iptable...iptables: Chain already exists.
-r重启时提示.....iptables: Too many links.
这里出错了,貌似是防火墙的规则(猜的)
wifi可以连上,只是访问不了外网,只能访问开wifi的机子
Re: coolboy94psj 2012-04-03 14:21发表 [回复]-
-
回复coolboy94psj:问题解决了,flush 一下iptables就可以
#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
谢谢楼主分享脚本,膜拜一下再走
12楼 mirzhaoqi 2012-03-20 09:33发表 [回复]-
-
新手,不会弄啊,一步一步告诉我吧,是不是直接安装上就行了,还是在etc里面建立一个adhoc文件夹然后把编译文件考进去还是怎么办
11楼 wuxinxinggg 2012-02-21 09:31发表 [回复]-
-
Setting eth1 cannel...Error for wireless request "Set Frequency" (8B04) :
SET failed on device eth1 ; Invalid argument.
不知道这是什么问题~~好像是channel auto参数无效~~
10楼 liuhk388 2011-11-28 10:18发表 [回复]-
-
这个还是ad-hoc啊,直接在ubuntu里用默认的就可以了啊。
我要的是虚拟AP啊,要master/AP mode…因为kindle连不上ad-hoc…
9楼 yisimalan 2011-11-02 15:48发表 [回复]-
-
我是在ubuntu11.10上做的,自带的无线网卡驱动,难道是这个驱动对iwconfig的支持不好?难道非得更新一下驱动?
8楼 yisimalan 2011-11-02 13:57发表 [回复]-
-
把sudo iwconfig $WInterface key s:$WPasskey
这句改为:
sudo iwconfig $WInterface key "androidworkab"
试一下。 可是我改完之后提示invalid argument "androidworkab",依然报(8B2A)这个错误,搜索到的网络依旧是“未设置安全机制的计算机到计算机网络”,登陆不用密码。这应该是不支持引号""这种格式吧?按理说应该是用s:的方法设置为五位或者十三位的ASCII码的密码就可以是吧?
另外我在网上找到有关iwconfig的资料,都是一样的语焉不详。请问你有详细点的资料吗,望指教
Re: LeOn 2011-11-03 01:11发表 [回复]-
-
回复yisimalan:上次发错了,将androidworkab这个密码改为5位数的密码就行了。
7楼 w7849516230 2011-10-29 16:44发表 [回复]-
-
android手机不是不支持wifi的ad-hoc模式么?你这里是怎么把手机上的修改成功的?!!!!望指点!!!!
Re: LeOn 2011-11-02 01:36发表 [回复]-
-
回复w7849516230:一般根据CM7修改的rom都支持ad-hoc,我看过源码,android 是屏蔽的了。
6楼 yisimalan 2011-10-27 17:14发表 [回复]-
-
设置五位的密码就不会报三楼的错。但是设置五位密码之后反而获取不到地址了。设置非五位密码,可以获取到地址了... 为啥呢
Re: LeOn 2011-11-02 01:40发表 [回复]-
-
回复yisimalan:把sudo iwconfig $WInterface key s:$WPasskey
这句改为:
sudo iwconfig $WInterface key "androidworkab"
5楼 yisimalan 2011-10-27 16:15发表 [回复]-
-
我也出现了三楼一样的问题,改了几个密码,问题依旧,请楼主指点啊
4楼 sinojelly 2011-10-02 23:00发表 [回复]-
-
脚本里面有点问题,stop里面应该是iwconfig,而不是ifconfig。
不过,我在Ubuntu 11.4里面建立了ad-hoc网络之后,用Win 7来连,发现能连上我的电脑,但是连不上Internet,重启ad-hoc连接多次,都是一样,不知有何办法?
另外,有个dhcp绑定失败的信息:
dnsmasq: failed to bind DHCP server socket: 地址已在使用
Re: LeOn 2011-10-03 01:24发表 [回复]-
-
回复sinojelly:能连上wifi,但不能上网,一般是iptables没配置好.
你可能先在网络管理那里,enable wireless 然后disable wireless 然后再去启动脚本,这样的话,重复连接两次就可以成功.
至于
dnsmasq: failed to bind DHCP server socket: 地址已在使用
这个问题,估计是
if [ -f $dnsmasqPid ]; then
dnsmasqID=`cat $dnsmasqPid`
kill $dnsmasqID
sleep 1
fi
这段脚本没执行到
可以将dnsmasq的进程kill了,再尝试.
3楼 bingo_boy 2011-08-25 22:52发表 [回复]-
-
你是不是河畔上的feifei???
Re: LeOn 2011-10-03 01:24发表 [回复]-
-
回复bingo_boy:不是....
2楼 magicalne 2011-08-15 19:40发表 [回复]-
-
哥们强人
但是貌似脚本有个小错误啊
我不懂这是啥脚本 暂时不会怎么修改-。-
具体就是 执行后 我的G11可以连上本本的wifi了 可是不需要密码啊-。-
执行时提示
Setting wlan0 password...Error for wireless request "Set Encode" (8B2A) :
SET failed on device wlan0 ; Invalid argument.
[ good ]
Re: LeOn 2011-11-02 01:41发表 [回复]-
-
回复magicalne:把sudo iwconfig $WInterface key s:$WPasskey
这句改为:
sudo iwconfig $WInterface key "androidworkab"
试一下。
Re: LeOn 2011-08-16 22:56发表 [回复]-
-
回复magicalne:可能是设置密码的位数有问题。你改一下其它密码看看。
1楼 Ryan200909 2011-08-01 16:42发表 [回复]-
-
牛X的说~