Ubuntu 14.04 快速创建无线接入点供移动设备连接上网

原创
2014/04/27 13:28
阅读数 1.8W
执行 iwlist 如果 Supported interface modes 的下有 AP 的话表示该网卡支持AP模式,可以创建无线热点。
比如我的无线网卡是Qualcomm Atheros AR9485 Wireless Network Adapter,Linux内核自带了驱动ath9k,支持创建AP无线热点。

1. 安装hostapd和dhcpd

sudo apt-get install hostapd isc-dhcp-server

开机不需要启动这两个服务,建议把它们关掉:
sudo update-rc.d -f hostapd remove
注释掉下面两个文件start on那一行:
sudo nano /etc/init/isc-dhcp-server.conf
sudo nano /etc/init/isc-dhcp-server6.conf

2. 配置hostapd和dhcpd

sudo nano /etc/hostapd/hostapd.conf  注意自己设置其中的无线热点名称ssid和认证密码wpa_passphrase.
interface=wlan0
driver=nl80211
ssid=YOUR_AP_NAME
hw_mode=g
channel=10
macaddr_acl=0
auth_algs=3
wpa=2
wpa_passphrase=YOUR_AP_PASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=TKIP CCMP

sudo nano /etc/dhcp/dhcpd.conf 在末尾加入以下内容:

subnet 192.168.0.0 netmask 255.255.255.0
{
range 192.168.0.2 192.168.0.10;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1,180.76.76.76,8.8.8.8;
}

其中180.76.76.76是百度公共DNS服务器,8.8.8.8则是Google的DNS服务器.

在自己的家目录下创建一个hostapd目录,里面新建启动和关闭脚本,比如我这样写(注意把里面eechen换成你的用户名):
nano  /home/eechen/hostapd/ap-start.sh

#!/bin/bash
# 开启内核IP转发
bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
# 开启防火墙NAT转发(如果本机使用eth0上网,则把ppp0改为eth0)
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# 关闭NetworkManager对无线网卡的控制
nmcli nm wifi off
# 设置并启动无线网卡
ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
# 解锁无线设备,可以用rfkill list查看解锁结果.
rfkill unblock wlan
# 睡眠6秒,待rfkill解锁生效
sleep 6s
# 启动dhcpd和hostapd,如果hostapd无法启动请查看日志hostapd.log,查看这两个进程ps -ef|egrep "dhcpd|hostapd"
nohup hostapd /etc/hostapd/hostapd.conf >/home/eechen/hostapd/hostapd.log 2>&1 &
dhcpd wlan0 -pf /var/run/dhcpd.pid
ps -ef|head -n1 && ps -ef|egrep "dhcpd|hostapd"

nano  /home/eechen/hostapd/ap-stop.sh

#!/bin/bash
killall hostapd dhcpd
bash -c "echo 0 > /proc/sys/net/ipv4/ip_forward"
ifconfig wlan0 down

3. 启动hostapd和dhcpd

在桌面新建两个启动器(快捷方式),里面分别填入:
gksu /home/eechen/hostapd/ap-start.sh
gksu /home/eechen/hostapd/ap-stop.sh
因为脚本需要root用户身份执行,所以需要用gksu运行。

注意:如果你开启了ufw防火墙,ufw默认是禁止转发的,这会导致防火墙NAT转发失效,这时应该设置允许转发:
sudo nano /etc/default/ufw 将 DEFAULT_FORWARD_POLICY 设为 ACCEPT
然后重启ufw即可:
sudo service ufw restart
之后运行启动器即可启动和关闭AP无线热点。

4. 用wireshark监控经过wlan0的通信

安装wireshark(其中 eechen改为你的用户名):
sudo apt-get install wireshark
sudo chgrp eechen /usr/bin/dumpcap
sudo chmod 750 /usr/bin/dumpcap
sudo setcap cap_net_raw,cap_net_admin+eip /usr/bin/dumpcap

Alt+F2运行wireshark,选择网络接口wlan0,Filter里输入http.cookie contains mail.qq.com
然后手机端登录网页QQ邮箱,在WireShark即可查看和获取QQ邮箱登录的Cookie,如图所示:

右键点击Cookie项把Value复制出来,然后用Firefox访问站点https://w.mail.qq.com/,Alt+C激活 Original Cookie InjectorGreaseMonkey),弹出输入框Wireshark Cookie Dump,把Cookie项的Value粘贴到里面,然后点OK确定并刷新页面即可登录QQ邮箱。或者你使用Tamper Data这个Firefox扩展在提交时修改Cookie值也是可以的。

附:

查看连接wlan0网络的客户端:
sudo arp 返回IP地址和MAC硬件地址和无线接口名.
iw dev wlan0 station dump 能显示收发包和字节数等.

查看网络接口速度:
sar -n DEV 1
展开阅读全文
打赏
8
44 收藏
分享
加载中
eechen博主

引用来自“李火清”的评论

start后,查看进程,这样也不行呢:

root@career-ubt:~/Desktop# ps -ef|egrep "dhcpd|hostapd"
root 3367 1780 0 09:29 ? 00:00:00 dhcpd wlan0 -pf /var/run/dhcp-server/dhcpd.pid
root 3382 3260 0 09:29 pts/0 00:00:00 egrep --color=auto dhcpd|hostapd
dhcpd已经启动了,hostapd没有启动,查看日志hostapd.log里的出错原因。
2014/05/10 20:35
举报
start后,查看进程,这样也不行呢:

root@career-ubt:~/Desktop# ps -ef|egrep "dhcpd|hostapd"
root 3367 1780 0 09:29 ? 00:00:00 dhcpd wlan0 -pf /var/run/dhcp-server/dhcpd.pid
root 3382 3260 0 09:29 pts/0 00:00:00 egrep --color=auto dhcpd|hostapd
2014/05/09 09:29
举报
eechen博主

引用来自“李火清”的评论

按楼主的步骤安装后启动提示这个:

Internet Systems Consortium DHCP Server 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Wrote 0 leases to leases file.
Listening on LPF/wlan0/0c:82:68:14:79:30/192.168.0.0/24
Sending on LPF/wlan0/0c:82:68:14:79:30/192.168.0.0/24
Sending on Socket/fallback/fallback-net
Can't create PID file /var/run/dhcp-server/dhcpd.pid: Permission denied.
的确存在不能创建pid文件的情况,用ps -ef|egrep "dhcpd|hostapd"查看这两个进程,只要保证它们在后台运行就好了。
2014/05/08 20:32
举报
按楼主的步骤安装后启动提示这个:

Internet Systems Consortium DHCP Server 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Wrote 0 leases to leases file.
Listening on LPF/wlan0/0c:82:68:14:79:30/192.168.0.0/24
Sending on LPF/wlan0/0c:82:68:14:79:30/192.168.0.0/24
Sending on Socket/fallback/fallback-net
Can't create PID file /var/run/dhcp-server/dhcpd.pid: Permission denied.
2014/05/08 13:11
举报
对那就必须得有线网连上了再分网出去
看来只得借助360wifi 把360 linux驱动编译出来才能分网
我考完了试试
2014/04/30 22:26
举报
eechen博主

引用来自“邓攀”的评论

你这个可以用笔记本用无线网卡连无线网然后分无线网出去么?
没试过,估计不行吧,wlan0连上无线网络后IP就被固定下来了。
2014/04/30 22:16
举报
你这个可以用笔记本用无线网卡连无线网然后分无线网出去么?
2014/04/30 21:53
举报
eechen博主

引用来自“杨同学”的评论

太猥琐了,果断收藏
所以说随便蹭网不是好习惯,说不定人家就在钓鱼,等着上钩。
2014/04/30 13:31
举报
太猥琐了,果断收藏
2014/04/30 13:14
举报
eechen博主

引用来自“木子叶”的评论

NetworkingManager有个功能直接点一下就可以了。
顺便请教一下,知道怎么设置交叉网线直连吗?
NetworkManager可以用Ad-hoc共享上网,但Ad-hoc跟AP(Access Point)是不一样的,现在的手机等移动设备一般都只是支持AP而不支持Ad-hoc。当然,带有无线网卡的电脑一般都能连接Ad-hoc共享的网络。
2014/04/27 13:47
举报
更多评论
打赏
11 评论
44 收藏
8
分享
返回顶部
顶部