宿舍的网络还是ADSL。买了一个树莓派3代B型版,将它配置成了无线路由器。
0 准备工作
首先需要一个树莓派3代B型板和5V-2.5A电源,其次需要一张SD卡盛放Raspbian系统。
0.1 安装Raspbian
Raspbian是一个基于Debian还针对树莓派硬件特别优化过的操作系统。选用Raspbian的理由很充分:30000多个可用的软件包支持,可定制性也强。完全可以把Raspbian理解成一个常见的Linux发行版。
安装的详细过程可以参考安装指南。
安装过程的实质就是把系统镜像上传到SD卡中,使SD卡变成一个可以启动的存储介质,也就是Raspbian系统盘。
0.2 连接到树莓派
将树莓派组装好,连接电源线。之后,可以使用一根网线或者显示器+键鼠的方式连接到树莓派。
0.2.1 使用网线连接到树莓派
使用网线连接树莓派和另一个端设备。如果树莓派接入了一个dhcp网络,那么直接开机,而后想办法确定树莓派的ip地址即可。另一个端设备也可能是固定ip地址的PC、路由器等。这就需要编辑Raspbian系统盘中的cmdline.txt文件,在同一行的行尾指定的ip指令,形如:
ip=192.168.0.17
通电以后,在电脑上可以采取ssh(或者putty)的方式连接到树莓派,默认的密码是raspberry。
$ ssh pi@192.168.0.17 #将这里的ip地址替换成树莓派的ip地址
这个连接的主要目的是对树莓派入网的方式进行调整。如果接到树莓派的网线上分享有互联网连接,那就直接形成了下面要出场的“第一个网络拓扑”。
0.2.2 使用显示器+键鼠的方式连接到树莓派
将显示器连接到树莓派的HDMI接口,鼠标和键盘连接到USB接口,接下来就跟使用PC的体验类似。
1 第一个网络拓扑
在第一个网络拓扑中,树莓派是一个普通的互联网最终用户,目的是单纯地利用现有的网络连接更新Raspbian,加装必备的软件。
1.1 更新树莓派系统
做一次初始配置,然后更新SD卡上的二进制文件。如果你并不是一个Linux老司机,那么你可能还需要一些Linux基础知识。
$ sudo raspi-config #初始配置,部分选项需要sudo reboot以生效
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo rpi-update
在完成了二进制的更新以后,树莓派就为各种应用做好了充分准备。
1.2 安装必备要件
dnsmasq,hostapd,pppoeconf号称小白用户的三神器。
当Raspbian和软件源之间连通后,可以使用以下apt-get命令安装它们
$ sudo apt-get install dnsmasq hostapd pppoeconf
2 第二个网络拓扑
第二个网络拓扑将树莓派设置成Wi-Fi热点一枚。这里需要确保树莓派可以远程访问。
2.1 树莓派热点的组网规划
在进行hack之前,简单地做一个规划,重点是Wi-Fi局域网的ip地址等。在这里不妨做如下假设:树莓派wlan0的ip是192.168.0.1,接入后的设备均处于192.168.0.0/24网段的40-140区间。
2.2 为wlan0指定静态地址
树莓派wlan0作为热点模式下的网关,配置为静态ip地址。在Raspbian中,编辑如下文件
$ sudo vi /etc/network/interfaces
/etc/network/interfaces文件的内容为
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.1
2.3 配置wlan0上的dhcp
dhcp自动为一个网段上的其它接入设备维护ip地址。dnsmasq是简单够用的dns+dhcp服务器,推荐使用。
安装之后,需要针对wlan0的具体情况定制dnsmasq
$ sudo vi /etc/dnsmasq.conf
在该文件中录入下面的配置信息
interface=wlan0
listen-address=192.168.0.1
server=8.8.8.8
dhcp-range=192.168.0.40,192.168.0.140,12h
2.4 开启树莓派热点服务
hostapd为树莓派维护Wi-Fi热点服务。它的配置文件由两个组成:/etc/hostapd/hostapd.conf和/etc/default/hostapd。
$ sudo vi /etc/hostapd/hostapd.conf
该配置文件概要如下
interface=wlan0
hw_mode=g
channel=6
macaddr_acl=0
ssid=your_ssid_here #用你的ssid替换
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=your_passwd_here #用你的密码替换
而系统首先读取的hostapd配置文件却是/etc/default/hostapd。编辑该文件,在其中更新配置如下
DAEMON_CONF="/etc/hostapd/hostapd.conf"
配置完成后重启生效。此后,树莓派应该可以作为一个常见的Wi-Fi热点正常工作,除了接入的Wi-Fi设备无法连接到互联网以外。尝试检查无线设备的接入情况。
3 第三个网络拓扑
在这个网络拓扑中,通过接入的Wi-Fi连接为树莓派配置ppp0。
3.1 为树莓派热点接上ADSL
用网线把树莓派和拨号设备(modem)连接起来。
3.2 使用pppoeconf创建ppp0
众所周知,pppoeconf为树莓派配置一个自启动的ppp0而接入互联网。
ssh到树莓派上,进行pppoeconf的设置。
$ sudo pppoeconf
接下来,按照界面提示输入帐号、密码等信息,注意确保选择了随着系统自启动。只要拨号信息配置正确,ping命令可以到互联网。
4 第四个网络拓扑
在这个网络拓扑中,构建ip转发。之前树莓派已经通过网线连接到拨号设备,建立了网络接口ppp0。
4.1 开启linux的ip转发
ip转发规避了桥接的繁琐,让树莓派摇身变成路由器一枚。编辑/etc/sysctl.conf文件,启用设置
net.ipv4.ip_forward=1
重启树莓派,使用cat命令查看转发是否已然开启
$ cat /proc/sys/net/ipv4/ip_forward
显示为1则开启成功。
4.2 配置接入的无线设备上网
使用iptables命令来指定nat,将ppp0上的互联网连接共享给接入的无线设备(192.168.0.40-192.168.0.140)。
$ sudo iptables -t nat -I POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE
4.3 当Raspbian启动时添加转发规则
上面的转发规则在关机后会失效。可以将上述命令写入Raspbian系统自启动服务。那意味着,新建文件
$ sudo vi /etc/init.d/ppp0-nat
文件的内容可以简单如下:
#!/bin/bash
case "$1" in
start)
iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE
;;
stop)
iptables -t nat -F
;;
*)
echo "usage: ppp0-nat {start|stop}"
exit 1
;;
esac
exit 0
然后用update-rc.d命令将它添加到Raspbian的启动项
$ sudo update-rc.d ppp0-nat defaults
重启即可生效。