华硕路由器 RT-AC88U搭配Asuswrt Merlin

上周入手了华硕RT-AC88U,这是一款智能路由,支持固件升级及功能扩展,梅林固件是国内很多人购买此款路由的主要原因,为了上网方便。

Google结果发现网友大部分通过以下三种方式实现上网:

1、刷梅林小宝固件,内置很多APP扩展可以支持上网,比如 Shadowsocks. 此方法折腾成本最低,但据网友反馈内置了不良代码,稳定性也欠佳。

2、刷梅林原生固件,内置各种VPN的服务,而 SSR的需要自己手动安装,研究发现这个折腾成本很高。首先准备好U盘插入路由器,然后分步骤安装各种上网应用,比如 Shadowsocks 等。参考教程:

3、刷梅林原生固件,使用内置的PPTP服务来实现上网,此项依赖是要自己购买VPS并安装好PPTP Server,个人推荐用此方法。

首先,在自己的VPS上搭建PPTP服务,参考:www.linode.com/stackscripts/view/8517-chenxs-Ubuntu+PPTP

然后,设置自己的路由。 参考:haoel.github.io/www.snbforums.com/threads/quic-issue.34105/

无论使用什么方法完成上网应用的配置,梅林固件(Asuswrt Merlin)项目官方文档 值得细读。

准备工作

U盘准备

因为安装包文件需要用U盘作为存储,首先需要制作好U盘工具。教程参考: apple.stackexchange.com/questions/171506/formatting-usb-disk-as-ext3-on-mac 路由器是Linux系统,故U盘需要格式化为Ext2/Ext3/Ext4格式。

1、安装 brew, 参考brew.sh/

2、安装 e2fsprogs, 使用命令:

brew install e2fsprogs

3、确认U盘分区标识

使用命令 diskutil list 找出你的U盘路径及分区标识, 这次要格式化的U盘是disk2,路径/dev/disk2。 这点特别重要,当使用下面这条命令时系统会再次提醒你确认分区名称,特别注意不要操作错了。

sudo $(brew --prefix e2fsprogs)/sbin/mkfs.ext3 /dev/disk2s1

4、错误排除

使用以上命令转格式是如遇到错误如:Could not open /dev/disk2: Resource busy 可使用如下命令强制移除:

diskutil unmountDisk force /dev/disk2

错误移除后,再执行第三步使用 e2fsprogs 格式化。参考: superuser.com/questions/906513/get-rid-of-resource-busy-message-on-mac-os-x

E2fsprogs 格式化成功后,可以看到如下信息:

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

Entware系统

U盘准备好后,插入到路由器,通过电脑终端(MacOS) SSH 方式登录路由,执行命令:

entware-setup.sh

安装Shadowsocks

安装服务

opkg install shadowsocks-libev-polarssl

出现如下错误:

Unknown package 'shadowsocks-libev-polarssl'.
Collected errors:
*opkg_install_cmd: Cannot install package shadowsocks-libev-polarssl.

错误原因分析: Entware 有跟上游同步過,所以直接安裝 shadowsocks-libev-ss-server 跟 shadowsocks-libev-config 就行了。 参考: 在NAS 上架设Shadowsock

opkg install shadowsocks-libev-config
opkg install shadowsocks-libev-ss-server

配置服务

服务安装完并设置 /opt/etc/shadowsocks.json/opt/etc/init.d/S22shadowsocks ,然后执行:

sed -ir 's/PROCS=ss-local/PROCS=ss-server/' /opt/etc/init.d/S22shadowsocks

确认无误后,执行

/opt/etc/init.d/S22shadowsocks start

返回结果:

Starting ss-server...              done. 

以上均在SSH登录路由器中操作。

PPTP配置

安装PPTP服务

1、先更新软件

sudo apt-get update

2、安装 PPTPD

sudo apt-get install pptpd

配置PPTP服务

1、配置IP段

用 vi或nano 编辑 /etc/pptpd.conf,查找以下内容去除注释并根据需要修改IP:

#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245

修改为:

localip 192.168.217.1
remoteip 192.168.217.234-238,192.168.217.245

以上是让连接的VPN服务的客户端连接后可获取的IP范围。

2、添加 PPTP VPN 用户

配置用户名和密码,可通过编辑 /etc/ppp/chap-secrets 添加如下内容:

username pptpd password *

其中username为VPN 帐号,password为密码,后面的*不要保留。

3、配置DNS服务器

编辑/etc/ppp/options,添加如下内容:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

4、开启IPv4转发

编辑 /etc/sysctl.conf 文件,去掉 net.ipv4.ip_forward=1 前的注释.

运行如下命令,使配置修改生效:

sudo sysctl -p

5、重启pptpd服务

sudo /etc/init.d/pptpd restart

6、安装 iptables

sudo apt-get install iptables

7、开启 iptables 转发

sudo iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADE
sudo iptables-save > /etc/iptables.pptp

在 /etc/network/if-up.d/ 目录下创建命名为 iptables 的文件,添加以下内容:

#!/bin/sh
iptables-restore < /etc/iptables.pptp

给脚本添加执行权限:

chmod +x /etc/network/if-up.d/iptables

至此PPTP方式的VPN 服务配置完成。

客户端设置

客户端添加 VPN 时要注意的是记得选择 PPTP 类型,然后输入账号密码连接VPN服务。

其他

路由登录

登录路由可能遇到如下错误:

$ ssh dalanz@192.168.56.101
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:p4ZGs+YjsBAw26tn2a+HPkga1dPWWAWX+NEm4Cv4I9s.
Please contact your system administrator.
Add correct host key in /Users/dalanz/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/dalanz/.ssh/known_hosts:9
ECDSA host key for 192.168.56.101 has changed and you have requested strict checking.
Host key verification failed.

缓存引起,可试着清空原有的Key来解决错误。

$ ssh-keygen -R 192.168.56.101
# Host 192.168.56.101 found: line 9
/Users/dalanz/.ssh/known_hosts updated.
Original contents retained as /Users/dalanz/.ssh/known_hosts.old

参考: How to fix warning about ECDSA host key when SSH connection

参考

1、Shadowsocks + GfwList 实现 OpenWRT / LEDE 路由器自动翻墙
2、OpenWrt+shadowsocks-libev实现路由器自动翻墙

评论已关闭。Comments are turned off for this article.