科学上网路由器折腾记录

由于众所周知的原因,在国内必须通过一些科学的上网方式才能顺畅的访问一些技术站点。

虽然自建的shadowsocks用起来非常的顺畅,但是由于并非系统级代理,在某一些软件上会相应的麻烦一些,比如 Airmail、终端等。此外,一些周边设备,比如 iPad、iPhone、电视机、ps4什么的(并没有),如果也要直接设置的话,非常的麻烦或者几乎不可能。

好消息是我们可以把代理直接设置在路由器上来达到所有设备无缝科学上网的目的。

不过首先,你得有一个能够刷 openwrt 的路由器。openwrt 是一个开源的 linux 发行版,专门为路由器定制。当然也提供各种平台的版本。路由器刷上了之后就相当于变成一台 linux 小电脑,然后你就可以在上面进行一些定制改造与开发了。

附官网: https://openwrt.org/

由于需要折腾,又要我方便携带,而且考虑到性价比,我最终选择了淘宝上的这个路由器作为我刷机的路由器。主要看中的是其 DIY 增加了存储、USB 和散热片。而且本身外形也不错。

附淘宝链接:http://item.taobao.com/item.htm?id=39265237362(非广告,未必是适合你的选择)

如果你仅仅是需要科学上网的话,可以考虑702N之类的或者不考虑便携也可以考虑其他的。

淘宝店家内置的 openwrt 固件虽然集成了很多功能,但是版本过旧,官方源支持已经不是很好了,安装软件包有时会出现内核版本冲突。

所以我们用 openwrt 官方的固件对其进行一个替换。由于水星 MW151RM 其实就是一个 Tp-link 703N 的克隆,所以我们可以放心的使用 703N 的固件

ssh 登上路由后将固件 scp 到路由器上

scp openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin root@192.168.1.1:/tmp

并在路由器上执行命令

cd /tmp
sysupgrade -F -v openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin

等待升级完成重启。

官方固件不会自动的提供一个无线信号而需要先用线进行连接配置。插上线后浏览器访问 ip 进入 luci 界面,我的目标首先是要让路由实现一个万能中继的功能,让路由器连接一个 Wifi 同时提供一个热点可以接入。具体设置方法比较简单我就不多说了,需要注意的是搜索添加无线的时候有一个覆盖之前无线配置的钩千万别勾上。
配置完成后路由器应该就可以上网了,然后我们就要可以开始配置科学上网了。
我们需要下载2个文件,分别是 shadowsocks 和其 luci 的配置界面。
下载地址可以在这里找到 https://github.com/shadowsocks/openwrt-shadowsocks

照旧本地执行命令将目录拷贝到路由器上

scp -r ipks root@192.168.1.1:/tmp

并在路由器上执行命令

cd /tmp/ipks
opkg install shadowsocks-libev-spec_x.x.x-x_ar71xx.ipk
opkg install luci-app-shadowsocks-spec_x.x.x-x_all.ipk

安装完成后在路由配置界面的 service 菜单就可以看到配置了,勾选 enable。取消 使用配置文件 的钩,就能看到shadowsocks 的配置。输入你的配置即可。

这时候基本访问 google 什么的是没问题了,但是还有 DNS 污染问题没有解决。解决这个问题还有更加好的方式,比如使用 ChinaDNS 等。不过这里我就采用最简单的方式了。

在 网络 – DHCP/DNS 菜单下面 的DNS转发一项填上 127.0.0.1#5353 (端口号与 shadowsocks 内 DNS 转发设置为相同),让后勾上 hosts和解析文件 选项卡 里面的 忽略解析文件即可。

这样一个自带无缝科学上网的路由器就完成了。

还有些易用性上的改进,比如在没有网线的时候,我们经常可能会因为配置失误等原因连不上路由提供的无线网络,所以我们需要定制路由器的 reset 按钮的功能,比如我定义短按 reset 即用默认无线配置覆盖现有配置。

vi /etc/rc.button/reset

我将文件改成了下面这样

#!/bin/sh

[ "${ACTION}" = "released" ] || exit 0

. /lib/functions.sh

logger "$BUTTON pressed for $SEEN seconds"

if [ "$SEEN" -lt 2 ]
then
        logger reset wifi
        cp /etc/reset/wireless /etc/config/wireless
        wifi
elif [ "$SEEN" -lt 5 ]
then
        echo "REBOOT" > /dev/console
        sync
        reboot
elif [ "$SEEN" -gt 5 ]
then
        echo "FACTORY RESET" > /dev/console
        jffs2reset -y && reboot &
fi

然后只要把默认的无线配置文件放在 /etc/reset/wireless 就好了。

另外还有无线设置的问题,我们可以通过修改 /usr/lib/lua/luci/model/cbi/admin_network/wifi_add.lua 文件
将默认覆盖原来无线配置的钩子去掉,以及还可以在首页增加搜索无线的链接。

另外还有个非常方便的方式是你可以将有线口接到 wan 上,这样只要插上网线就可以上网了,不需要额外的配置。

如果要做成产品的话,易用性上可能还要再花一些功夫,比如简化配置界面和连接无线的界面,以及可能需要自动弹出页面来选择连接的无线信号。当然这些都暂时处于构想中,对于我自己个人使用,这样已经非常的足够了。

5 thoughts to “科学上网路由器折腾记录”

发表评论

电子邮件地址不会被公开。 必填项已用*标注