之前买了一块树莓派一直闲置着,本着折腾不浪费的精神,遂决定把它改造成一个可以科学上网的无线路由器。
准备清单:
- 树莓派一枚
- 无线网卡一枚,型号:
EP-N8508GS
,芯片是Realtek RTL8188CUS
- micro SD 卡一枚,至少4G
- 树莓派官方系统
Raspbian
镜像 - 电脑若干
- USB电源线和网线各一条
这里需要注意的是我使用的无线网卡,芯片因为是 Realtek RTL8188CUS
,需要特殊处理,所以一开始花费了好多时间处理处理。为什么使用该芯片呢?首先,便宜;其次,很早以前就买好了。当然如果你是土豪,类似下面这位,你可以买一个兼容的芯片。
刷机
刷机使用的是Windows电脑,Linux电脑也是能够刷机的,之前刷OpenWRT
系统的时候使用过,Mac系统还没试过。
从树莓派官方网站下载最新版本的 Raspbian
系统镜像,这里用的版本是 RASPBIAN JESSIE
完全版。
电脑上下载 Win32DiskImager
,用来把镜像写入SD卡中。
Raspbian系统配置
在终端中输入命令,会弹出上图的配置窗口。
|
|
主要配置以下几项:
- 1 Expand Filesystem
- 2 Change User Password
- 5 Internationalisation Options
- I1 Change Locale
- I2 Change Timezone
- I3 Change Keyboard Layout
- I4 Change Wi-fi Country
- 9 Advanced Options
- A3 Memory Split:如果只是当做路由器使用,可以把GPU的内存改小点。我这里的设置是32.
- A0 Update:这一步需要系统联网
重启电脑:
|
|
安装并配置 hostapd
hostapd
可以让无线网卡变成信号发射器,如果你的芯片是官方支持的,可以直接从软件源中安装:
|
|
我这边使用的无线网卡的芯片是官方不支持的,所以得自己安装。
|
|
打开 hostapd
的配置文件,配置 ssid
(Wi-fi名称)、wpa_passphrase
(Wi-fi密码)
|
|
以下是我的配置文件:
|
|
重启 hostapd
服务,并设置开机启动
|
|
安装并配置 udhcpd
udhcpd
可以让链接到Wi-fi设备的客户端通过DHCP
获取到IP地址。
|
|
修改 udhcpd
的配置文件 /etc/udhcpd.conf
:
- start 和 end: DHCP 分配的 IP 段的起始和结束 IP
- interface:修改成上一步配置的interface
- opt dns: DNS
- option subnet:子网掩码
- opt router:路由器 IP
以下是我的配置:
|
|
接着修改 /etc/default/udhcpd
,注释掉 DHCPD_ENABLED="no"
这一行。
重启 udhcpd
服务,并设置开机启动
|
|
配置 iptables 和网络接口
打开网络接口配置文件 /etc/network/interfaces
,设置 wlan0
为静态IP:
|
|
注意上面的 wlan0
配置,请勿加上 gateway 192.168.x.x
的配置,否则会导致其它设备连接得上树莓派,但是DNS解析不了的问题。
使生效:
接着配置 iptables
。修改 /etc/sysctl.conf
,打开内核IP转发,在末尾添加:
|
|
然后,添加 iptables
规则,将 wlan0
的包通过 eth0
转发,在命令行中输入下列命令
|
|
由于 iptables
设置重启后将消失,常用的方法是先保存下来,然后在启动的时候加载规则
|
|
编辑 /etc/network/interfaces
,添加下面这一行
|
|
以上,设置Wi-fi热点的配置就完成了,重启树莓派,用其它设备连接应该就能够上网了。
安装shadowsocks服务
shadowsocks 是科学上网的一种非常有用的工具。以下内容的前提是需要有一个shadowsocks账号。
|
|
创建shadowsocks的配置文件,可以在任意目录。以下以 /etc/shadowsocks/config.json 为例。编辑如下内容
|
|
设置开机启动。编辑 /etc/rc.local。在exit前添加以下代码:
|
|
放弃
改造后的树莓派路由器服务并不稳定,经常会出现连接不了网络,需要重新启动才能继续上网。
另外本来打算将改造后的路由器放在公司使用,但是因为公司网络策略升级,不允许随意搭建私人路由器,所以也就放弃继续改造下去。