设为首页 收藏本站
查看: 1088|回复: 0

[经验分享] 小米随身wifi到手,准备开搞当个ap给linux共享wifi上网!

[复制链接]

尚未签到

发表于 2015-10-1 07:26:32 | 显示全部楼层 |阅读模式
  思路:目前国内的随身wifi基本上都是用的Ralink芯片的USB无线网卡而已,只不过很多无线网卡芯片不支持master模式,所以不能兼做ap,而Ralink出的几款芯片都是支持master模式的,在Linux下就可以通过hostapd这个软件包+iptables(NAT)+dhcpd(给设备动态分配IP)设置使手机等设备共享电脑上的有线连接实现上网。
  
  经查,小米wifi用的应该是mediatek(也就是以前的Ralink)的7601芯片。ArchLinuxer最喜欢做的一件事,先在AUR里搜搜看:



yaourt -Ss 7601
  结果如下



aur/dkms-mt7601u v3.0.0.4-1 (2)
Driver for Ralink MT7601U chipset wireless adaptors
aur/dkms-mt7601u-latest v3.0.0.4-5 (4)
Driver for Ralink MT7601U chipset wireless adaptors
aur/mt7601u-ap-dkms 3.0.0.3-1 [installed] (1)
Kernel module for Ralink MT7601U chipset wireless adaptors with Access
Point (AP / Master) support.
aur/mt7601u-dkms 3.1-1 (1)
Kernel module for MediaTek MT7601U USB dongles, written from scratch based
on the vendor GPL-driver. Unlike the vendor driver this driver uses modern
Linux WiFi infrastructure and should work flawlessly with NetworkManager,
wicd, wpa_supplicant and such.
aur/mt7601u-git 2015.04.30-1 (3)
Driver for Mediatek MT7601U USB bgn WiFi dongle
aur/test_mt7601u 0.1-2 (0)
Test if mt7601u (wifi) is loaded. If not, it install it
  心中窃喜呀!居然有'mt7601u-ap-dkms'这个现成的包,直接开装!



$ yaourt -S mt7601u-ap-dkms
#此处省略一万字。。。
:: 进行安装吗? [Y/n]
(1/1) 正在检查密钥环里的密钥                       [######################] 100%
(1/1) 正在检查软件包完整性                         [######################] 100%
(1/1) 正在加载软件包文件                           [######################] 100%
(1/1) 正在检查文件冲突                             [######################] 100%
(1/1) 正在检查可用硬盘空间                         [######################] 100%
(1/1) 正在安装 mt7601u-ap-dkms                     [######################] 100%
Creating symlink /var/lib/dkms/mt7601u-ap/3.0.0.3/source ->
/usr/src/mt7601u-ap-3.0.0.3
DKMS: add completed.
Error! echo
Your kernel headers for kernel 4.0.1-1-ARCH cannot be found at
/usr/lib/modules/4.0.1-1-ARCH/build or /usr/lib/modules/4.0.1-1-ARCH/source.
>>> You might need to modprobe mt7601Uap manually.
>>> Also, you *must* change the default values (especially WPAPSK)
>>> in /etc/Wireless/RT2870AP/RT2870AP.dat
>>> Read the documentation in /usr/src/mt7601u-ap-3.0.0.3/doc.
  WTF! 我的机器上竟然没有linux header...(抱歉昨天刚装的新电脑,系统也是新的)。 赶紧装上!



$ yaourt -S linux-headers
  之后就没有问题了,yaourt -S mt7601u-ap-dkms顺利安装并成功自动编译成功内核模块,注意后面的提示:



>>> You might need to modprobe mt7601Uap manually.
>>> Also, you *must* change the default values (especially WPAPSK)
>>> in /etc/Wireless/RT2870AP/RT2870AP.dat
>>> Read the documentation in /usr/src/mt7601u-ap-3.0.0.3/doc.
  嗯,按照给出的提示,先把新编译好的内核模块modprobe一下:



# modprobe rtutil7601Uap
# modprobe mt7601Uap
# modprobe rtnet7601Uap
  同样按照给出的提示,编辑/etc/Wireless/RT2870AP/RT2870AP.dat,把里面SSID(名称)和WPAPSK(密码)改成你自己的内容:



...
SSID=RA_11_AP #AP对外显示的名称
...
WPAPSK=Chang_Me_Now #密码
...
  好!有了驱动,咱就可以安装需要的软件了:



$ yaourt -S hostapd
  之后要写入这个文件,指定SSID名称和密码以及小米wifi的设备名(ra0):/etc/hostapd/hostapd.conf



ssid=xiaomi_WIFI #设置AP接入点名称
wpa_passphrase=Somepassphrase #设置你的WIFI密码
interface=ra0 #小米随身wifi插入电脑后默认的interface名称就是ra0
bridge=br0
auth_algs=3
channel=7
driver=nl80211
hw_mode=g
logger_stdout=-1
logger_stdout_level=2
max_num_sta=5
rsn_pairwise=CCMP
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
  顺便说一下,在mt7601u-ap-dkms这个包里设置过一次SSID和密码了,在hostapd里也有一个设置SSID和密码的地方。我不知道到底哪个才是真正管用的,所以两个地方都设成一样的了,免得麻烦。
  为了NAT,需要软件包’iptables',多数发行版默认应该已经装好了。为了给联网的设备分配动态IP,需要软件包dhcp并做一定的配置:



yaourt -S iptables dhcp
sudo mv /etc/dhcpd.conf /etc/dhcpd.conf.example #主要是默认的配置文件比较烦,我们先把它备份一下,再自己创建一个
sudo vi /etc/dhcpd.conf
  在/etc/dhcpd.conf中输入以下内容:



option domain-name-servers 114.114.114.114, 8.8.8.8;
option subnet-mask 255.255.255.0;
option routers 192.168.123.100;
subnet 192.168.123.0 netmask 255.255.255.0 {
range 192.168.123.150 192.168.123.250;
}
  默认情况下,dhcpd会对电脑上所有网卡都起作用,而我们希望它只作用于小米wifi,故可以借助systemctl让它成为只针对ra0这个interface的service。先要创建一个systemctl用的配置文件:



sudo vi /etc/systemd/system/dhcpd4@.service
  输入以下内容:



[Unit]
Description=IPv4 DHCP server on %I
Wants=network.target
After=network.target
[Service]
Type=forking
PIDFile=/run/dhcpd4.pid
ExecStart=/usr/bin/dhcpd -4 -q -pf /run/dhcpd4.pid %I
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target
  准备好dhcpd后,就可以编辑脚本了:



vi ~/bin/ap.sh
  输入以下内容:



#!/bin/sh
#modprobe kernel modules for xiaomi Wireless card
modprobe rtutil7601Uap
modprobe mt7601Uap
modprobe rtnet7601Uap
#Set Static IP address on interface ra0
ip link set up dev ra0
ip addr add 192.168.123.100/24 dev ra0
#enable packet forwarding
sysctl net.ipv4.ip_forward=1
#enable NAT
iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ra0 -o internet0 -j ACCEPT
#enable dhcpd
systemctl start dhcpd4@ra0
#enable hostapd
systemctl start hostapd
  保存以后,设置其为可执行文件,再sudo运行,大功告成!



chmod 755 ~/bin/ap.sh
sudo ~/bin/ap.sh
  以后只要想用小米WIFI共享上网,只要sudo运行一遍这个脚本就行啦!
  
  参考资料:
  1、小米随身WiFi,Linux下AP热点驱动(开源)
  本文是受上面说的这篇文章的启发,我自己对照Arch Wiki设置好的,这样对整个设置的内部运行机制了解得深一些。那篇文章里提供了Github的源码,可以下载下来后直接编译运行,似乎简单些。但我只编译了没运行,不确定能不能直接用。
  2、Arch Wiki: Software access point
  3、Arch Wiki: Internet sharing
  4、Arch Wiki: dhcpd
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-121077-1-1.html 上篇帖子: Marvell w8782 sdio wifi AP模式设置 下篇帖子: 360 / 小米 / 百度 随身wifi Ubuntu 下作为无线网卡使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表