Click here to view the English version of the tutorial
最近家里wifi连续使用时间一长就会出现速度大幅度波动,严重影响了我上王者的速度,估摸着应该是路由器扛不住夏天的高温,所以脑回路一转觉得可以用手头的树莓派替代路由器。反正树莓派3又有ethernet接口又有wifi模块,理论上实现应该很简单,然而一如往常我又给自己挖了个坑。8个小时后重新连接上文明社会互联网的我写下了这篇教程。
网上有多篇类似教程但是出于各种原因在我的树莓派3上都没有实验成功,这篇教程大多数内容借鉴自Medium上的Turn a RaspBerryPi 3 into a WiFi router-hotspot(需要科学上网)。
首先你需要一个树莓派。我用的是树莓派3代B型和最新的Raspbian系统。B+型跟B型区别不大应该没问题,zero W型应该也可以,我很想试验一下但是没钱买,老版的树莓派可能需要配上一个usb wifi模块。
家里的宽带是网线入户但是需要用运营商提供的账号密码来上网,也就是PPPoE,国内大多数家里用的应该是类似的网。我们需要一个叫pppoeconf的工具来让树莓派接上互联网,去这里下载安装包,国内的话点击“ftp.cn.debian.org/debian”下载会快一些。下载好以后sudo dpkg -i pppoeconf_1.21_all.deb
来安装这个deb。接着把树莓派直接连接上网线,用sudo pppoeconf
打开程序,跟着GUI一路设置就好了。这时候打开浏览器确认一下树莓派可以上网。
接着例行
sudo apt-get update sudo apt-get dist-upgrade
安装两个程序
sudo apt-get install hostapd isc-dhcp-server
然后sudo nano /etc/dhcp/dhcpd.conf
,把
option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org;
这两行前面加#号注释掉。把
#authoritative;
前面的#号去掉。接着到文件的最后加上
subnet 192.168.42.0 netmask 255.255.255.0 { range 192.168.42.10 192.168.42.50; option broadcast-address 192.168.42.255; option routers 192.168.42.1; default-lease-time 600; max-lease-time 7200; option domain-name "local"; option domain-name-servers 114.114.114.114, 114.114.115.115; #可以换成其他的DNS服务器 }
ctrl+x退出,y接回车保存。
sudo nano /etc/default/isc-dhcp-server
把INTERFACES=””改成INTERFACES=”wlan0″来针对一下wlan0。保存退出。
编辑interfaces:
sudo ifdown wlan0 sudo nano /etc/network/interfaces
把这个
auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet static address 192.168.42.1 netmask 255.255.255.0 post-up iw dev $IFACE set power_save off
加到最最后面。保存推出后强行改ip
sudo ifconfig wlan0 192.168.42.1
DHCP就差不多改完了。
开始设置wifi
sudo nano /etc/hostapd/hostapd.conf
填入以下内容
interface=wlan0 ssid=RaspiPoweredWifi #改成你想要的wifi名 hw_mode=g channel=6 #频道随便选一个 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=12345678 #这里设置wifi密码 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
保存退出,wifi搞定。接下来把pppoe和wlan连接起来。
sudo nano /etc/sysctl.conf
跳到最后加上
net.ipv4.ip_forward=1
保存退出。刷一波iptables
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
这里有教程说应该刷ppp0,不过我亲测eth0有效,ppp0用不了。
加入启动项全家桶
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
切回interfaces
sudo nano /etc/network/interfaces
把这个加到最后面
up iptables-restore < /etc/iptables.ipv4.nat
保存退出。
打开两个服务
sudo service hostapd start sudo service isc-dhcp-server start
重启。
以上。
[qrcode]