[技术分享] – 在华硕路由器搭建SS-Server

前段时间回国一趟,自己在路由器上搭建了openvpn,想着这样就可以不受GFW影响,顺便还可以访问下内网的NAS。

结果落地国内,VPN完全无法连接。用百度,必应查了好久查不到原因(这里必须吐槽一下,国内的搜索引擎是真的搜不到任何有用的东西)。回新加坡后Google到是因为openvpn在握手阶段使用的是明文,GFW可以精准识别,所以GFW直接在建立连接阶段就介入了,自然无法成功连接。

既然openvpn不行(基本也意味着IPSec等都不行),那就只好看看还有什么别的方法。这一了解才发现,大家为了应付这道不可见的高墙真的是手段百出。协议是一个接一个。有兴趣的可以参考这篇文章:科学上网的主流协议大对比!这里面有你在使用的吗?

扯远了。回归正题。我这里选择的协议是shadowsocks,如果想选择其他协议,可以酌情参考。


硬件要求

  • 一个公网IP
  • 一个刷了Merlin系统的华硕路由器

我因为有公网IP,所以这里不再赘述DDNS的配置。有需要的朋友可以自行google。

如果是其他品牌的路由器 + openwrt的系统,可以酌情参考本文章。内容大体通用。


前置准备

这两步是想要在路由器上做任何进阶操作的基础。后面我也会出相应的教程。


安装SS-Server

做完前置准备后,就可以正式开始在路由器上部署shadowsocks了。

首先ssh登录到路由器,之后输入opkg update来确保opkg的index是最新的。

成功后应该看到类似如上的结果。

之后继续输入 opkg list | grep shadowsocks-libev,应该会得到

shadowsocks-libev-config – 3.3.5-10a – shadowsocks-libev config scripts

shadowsocks-libev-ss-local – 3.3.5-10a – shadowsocks-libev ss-local

shadowsocks-libev-ss-redir – 3.3.5-10a – shadowsocks-libev ss-redir

shadowsocks-libev-ss-rules – 3.3.5-10a – shadowsocks-libev ss-rules

shadowsocks-libev-ss-server – 3.3.5-10a – shadowsocks-libev ss-server

shadowsocks-libev-ss-tunnel – 3.3.5-10a – shadowsocks-libev ss-tunnel

这一堆的输出。具体版本根据查询的时间可能有所不同,不必在意。这里是shadowsocks的不同组件,大部分和客户端相关。我们这里是搭建shadowsocks的服务器端,所以只需要安装

shadowsocks-libev-ss-server – 3.3.5-10a – shadowsocks-libev ss-server

这一个就好。

输入opkg install shadowsocks-libev-ss-server,等待安装完成。

安装完成后,输入ss-server -h,如果看到以下界面,则说明安装成功

芜湖!

配置SS-Server

配置自启动 & config文件位置

cd进入/opt/etc/init.d,这里应该会看到一个文件名为”S22shadowsocks“, 数字22可能会不同,不必在意。

输入vi S22shadowsocks(替换成你自己看到的文件名) ,进入文本编辑页面。输入“i”开始编辑。在这里需要关注两个变量

  • PROCS,注意PROCS后面是否为“ss-server”,如果不是,则改为“ss-server”
  • ARGS,这里后面跟的是config存放的位置。如果你不知道写什么,可以写"-c /opt/etc/shadowsocks/shadowsocks.json"。注意这里需要同时复制双引号。

修改完成后,输入:wq,保存文件。

配置config文件

根据上一步在ARGS变量设置的config文件位置,创建对应文件。如果使用的是上面提供的位置,则依次输入以下命令

  • mkdir /opt/etc/shadowsocks && cd /opt/etc/shadowsocks
  • vi shadowsocks.json

这时进入了config的编辑页面,将下面的配置粘贴进去

{
    "server":["::0","0.0.0.0"],
    "mode":"tcp_and_udp",
    "local_port":1080,
    "timeout":86400,
    "method":"chacha20-ietf-poly1305",
    "server_port":8312,
    "password":"xxxxxxxx",
    "fast_open":false
}

这里两个地方需要修改

  • server_port,修改成你希望使用的端口。如果不知道修改成什么,保持不动
  • password,修改为你自己的密码。最好复杂一些。

其他参数可以自行看需修改。完成后“:wq”保存文件。

配置防火墙

cd进入/jffs/scripts。ls查看文件夹下是否存在firewall-start文件。

如果没有,vi firewall-start创建并编辑文件,粘贴以下内容

#!/bin/sh
iptables -I INPUT -p tcp --dport 8312 -j ACCEPT
iptables -I INPUT -p udp --dport 8312 -j ACCEPT

这里8312替换成上面config文件填入的server-port。

如果有的话,vi firewall-start编辑文件,将上面后两行(即iptables开头的两行)粘贴到文件的最后。

完成后“:wq”保存并退出。

启动SS-Server

到这里,基础的配置就已经完成了。输入/opt/etc/init.d/S22shadowsocks start(将S22shadowsocks替换成上面你自己的文件名)启动SS-Server服务。


连接SS-Server

一切顺利的话,你的SS-Server已经搭建好了。接下来就是用客户端来连接服务器。我自己的电脑是Mac,所以这里以Mac端ShadowsocksX-NG举例。

打开软件后会看到上面的界面。这里有几个地方需要填

  • Address 填入你自己的公网IP
  • Port 填入上面你自己选择的端口。如果上面没有更改端口,则为8312
  • Encryption 选择 chacha20-ietf-poly1305(或者上面你自己的选择)
  • Password 你的密码
  • Remarks 填什么都可以。起一个名字

一切顺利的话,这样就连上你自己搭建的SS-Server了!

定时检查SS-Server进程(Optional)

## TO-DO ##

SS-Server访问内网资源(Optional)

## TO-DO ##

小结

如果遇到什么问题,欢迎留言讨论

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注