{ 撰文/ivan_wl }
这次我们的目标是来打造一台带有自动翻墙功能的路由器!
当然,天上是不会掉馅饼的,为了打造这么一台自动翻墙路由器,还是需要一些条件的。
首先就是一台支持 OpenWrt 的路由器。淘宝上有卖的,刷好 OpenWrt 的带 USB 接口的无线路由,最便宜的也就 100 元左右。
其次就是要有一台 SSH 主机,不解释~
首先简单介绍一下 OpenWrt。OpenWrt 是一个基于 Linux 的开源路由固件。因为是开源而且基于 Linux 的,所以可定制性极强。OpenWrt 有类似软件源的东西,里面有很多已经编译好的软件包,包括 Transmission 和 aMule 等。而且有自己的开发环境,我就在 OpenWrt 上编译了校园网锐捷认证的客户端。所以如果你是牛人的话,理论上在 OpenWrt 上编译个 Tor 来翻墙也是完全可以的。
最新的 OpenWrt 固件可以使用 LUCI 网页管理界面,而且支持中文,非常方便。设置路由的过程我就不多说了,就建议大家更改一下 root 用户的密码。改过后,就可以用 SSH 登录路由器来进行管理了。
对于路由器的文件管理,可以使用任意一款的 FTP 客户端。用 root 用户和密码登录即可。如果你是使用 Linux/GNOME 的话,使用 Nautilus 文件管理器当然是最方便的了!直接就可以像操作本地文件一样来操作路由器中的文件。只需在文件管理器中选择 文件 - 连接到服务器 即可。
由于 OpenWrt 中默认自带的 SSH 服务/客户端是 Dropbear,Dropbear 作为 SSH 客户端无法满足我们的需要,所以我们要安装 openssh-client。首先到路由器的文件系统中 /usr/bin 目录下,删除 ssh 和 scp。其实这两个文件都是到 Dropbear 的符号链接,所以放心删除。
然后我们打开终端,通过 ssh 登录路由器。一般情况下,就是
ssh 192.168.1.1 -l root
登录后,先用
opkg update
刷新一下软件包。(老版本的 OpenWrt 可能是使用 ipkg 来管理软件包,这点我也不太清楚)
然后安装一些需要的包
opkg install openssh-client autossh
我们使用 OpenSSH 来登录主机并做端口转发,使用 Autossh 来自动管理 SSH 连接。
由于 OpenSSH 只支持 SOCKS 代理,如果需要 HTTP 代理的话,我们还要安装 Polipo
opkg install polipo
安装完之后,我们首先要做的就是设置 SSH 的密钥,这样就可以自动登录,而不用输入密码。我是参照这篇文章 来做的。
简单的说,就是几步。首先在自己的电脑上,用 sh-keygen 来生成密钥对。比如
ssh-keygen -b 1024 -t rsa
会在 ~/.ssh 文件夹下生成 id_rsa 和 id_rsa.pub 两个文件。然后把 id_rsa.pub 公钥上传到 SSH 服务器 ~/.ssh/ 文件夹下,改名为 authorized_keys,把 id_rsa 私钥复制到路由器中 /root/.ssh 文件夹下。具体操作参见前面那篇文章,或者自行谷歌。然后我们 SSH 登录路由器,在路由的 SSH 中再用 ssh 命令登录下你的 SSH 服务器(这个有点绕~),看看是不是不用再输入密码了?如果提示你有关权限问题的话,可能还需要改下 id_rsa 文件的属性。
chmod -rw------- /root/.ssh/id_rsa
接下来我们用 Autossh 来试一下
autossh -M20000 -f -q -N -D 192.168.1.1:[代理端口] [用户名@你的主机地址]
打开火狐,设置 SOCKS 代理为 192.168.1.1 和上面设置的端口,如果有 Autoproxy 就更方便了。试一下,墙是不是已经透明了?
接下来我们让路由器开机时自动运行代理。