最近在玩SoftAP,心血来潮能不能在手机上一边连WIFI一边开热点,虽然网上一大堆人都说不可以。。。
但是如果有学习过 Linux 和玩过 SoftAP 的人应该都知道 Android 手机只是一台微型 Linux 机
既然Linux可以,手机很有可能可以
使用 iw 新增一个网络接口
然后 配置 hostapd.conf
使用 hostapd hostapd.conf 在新的网络接口启动 SoftAP
设定 新的网络接口 的 ip地址
使用 dnsmasq 配置 dhcp 服务器
使用 iptables 和 ip_forward 做好 ip转发
然后在手机设置那里进入 wifi 选项,直接连接其他热点
这样就可以 一边接 WIFI ,一边做 SoftAP 了
你的Android手机本来就能开热点
Android 手机 (我的是 小米5)
Linux Deploy (我安装了 Ubuntu ,其他发行版也没有问题,有工具就行了)
1.进入Linux Deploy,启动Linux
2.接入Linux,使用SSH还是直接用命令接入随意
3.执行以下命令确保安装了 iw hostapd dnsmasq
apt-get update
apt-get install iw hostapd dnsmasq
4.执行以下命令 查看你的 无线网络接口名字,一般是 wlan0,记得在手机里面打开你的 WIFI ,不然可能什么都没有
iw dev
5.执行以下命令新增一个名字为 wlan1 网络接口,这里假设你的接口是 wlan0
iw dev wlan0 interface add wlan1 type managed
正确执行后,使用
iw dev
应该能看到一个 新的网络接口 名字为 wlan1
6.执行
vim /etc/hostapd/hostapd.conf
开始配置hostapd
按下 i 开始在里面输入
interface=wlan1
driver=nl80211
ssid=AndroidAP
channel=7
hw_mode=g
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40]
ignore_broadcast_ssid=0
auth_algs=1
wpa=3
wpa_passphrase=12345678ap
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
输入完成后按 Esc键 或 ctrl+c 结束输入
然后按下 :wq 保存退出
7.使用执行以下命令启动 SoftAP
hostapd -B /etc/hostapd/hostapd.conf
没有问题的话 在别人的手机上会 显示多了一个名为 AndroidAP 的热点,密码是 12345678ap
如果直接连接的话,会一直显示 正在获取IP ,因为还没有配置 dhcp 服务器
8.使用
vim /etc/dnsmasq.conf
开始配置 dnsmasq
输入以下内容
listen-address=192.168.2.1
dhcp-host=192.168.2.1
dhcp-range=192.168.2.10,192.168.2.20,1h
dhcp-option=3,192.168.2.1
dhcp-option=option:dns-server,114.114.114.114,8.8.4.4
输入完成后按 Esc键 或 ctrl+c 结束输入
然后按下 :wq 保存退出
9.执行以下命令开启 dhcp 服务
kill $(pgrep dnsmasq)
/etc/init.d/dnsmasq start
执行以下命令设置 新网络接口 的 ip地址
ifconfig wlan1 192.168.2.1 netmask 255.255.255.0
现在再用其他手机接上 名为 AndroidAP 的 WIFI ,发现已经可以正常连接了,不过还上不了网
10.执行以下命令 设置IP转发 和 开启IP转发
下面设置了 把所有从 wlan1 发来的数据转发到了 wlan0 那里
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o wlan0 -j MASQUERADE
iptables -A FORWARD -s 192.168.2.0/24 -o wlan0 -j ACCEPT
iptables -A FORWARD -d 192.168.2.0/24 -m conntrack --ctstate ESTABLISHED,RELATED -i wlan0 -j ACCEPT
echo 1 >/proc/sys/net/ipv4/ip_forward
11.进入手机设置里面的 WIFI 设置那里,注意不要手贱把WIFI关了,否则之前步骤你要重来一遍
随便连上一个能上网的 WIFI热点 ,再用其他手机接上你手机开启的名字为 AndroidAP 热点
发现其他手机也可以上网了,实验成功
成功是成功了
虽然原理很简单,但是写出的字却。。。
连接速度什么的当然比直接连上WIFI热点要慢点
因为是手机内置网卡,只支持单频2.4G一般都是单通道的,所以也会对发AP的手机会有一定影响
如果手机内置网卡是双通道的,例如支持双频2.4G和5G的大部分手机,影响会小很多
果然