摘要:这是一篇关于上网艺术的文章。主要介绍购买VPS,配置shadowsocks服务端与客户端,Youtube加速服务,智能手机终端的客户端软件等。

写在最前: 本文提供的方法共个人使用,勿作商业用途。请尊重开源精神。

这篇文章会比较长,大家可以根据目录导航自己想看的内容。

目录

上网的艺术

国内的网络形式真的是越来越严峻了,想好好上个网都要费劲周折。百度什么的真的太难用了,搜索一堆没用的不说,网盘还不让你下载,必须要用他的客户端。腾讯视频什么的更不用说了,铺天盖地广告加上低画质,就是逼你付费升级。政治什么的我是毫无兴趣的,我只想上网环境好一点,这要求没什么过分的。

在这里要感谢 @clowwindy 给我们带来了一款的软件: shadowsocks 。相较于传统的 VPNshadowsocks 协议具有更好的灵活性和隐蔽性,且搭建相对简单,可以拥有更快的速度和更高的稳定性。 shadowsocksC# 版本 shadowsocks-libev 支持 AEAD Cipher ,并且可以通过 Obfs(Simple-Obfs) 插件实现混淆,维护更新也很勤。综合稳定性,隐蔽性和速度,是目前较好的上网工具选择。

VPS服务器

shadowsocks 是一个服务端+客户端的软件。我们首先需要花点钱租用一个VPS(Virtual Private Servers)虚拟个人服务器。

目前主流的VPS服务,起步价格都在$5/每月左右。大部分个人和家庭只需要使用$5就足够了,绑定信用卡后每月自动扣款。所以在租用VPS服务之前,你可能需要先注册好相关账号并准备一张具有国际支付功能的信用卡(Visa,MasterCard…),

比较常见的国外运营商有:

  • Linode 账号注册简易,费用廉价,个人或家庭使用建议选择$5的套餐即可,包括1TB 流量每月,现在可以选Tokyo2机房(IP Location:Japan),速度极佳,美西Fremont(IP Location:US),稳定性不错,支持IPv6。

  • Digitalocean 账号注册简易,费用廉价,建议选择$5套餐,包括1TB 流量每月,建议选择Singapore机房(IP Location:Singapore),速度应该不如Linode,稳定性极佳,支持IPv6。

  • LightSail Amazon的AWS服务器。Amazon是国际上最大的几家服务器提供商之一,速度一般但是非常稳定,支持IPv6。也有$5的起步套餐,流量是500G。

  • Google Cloud Google的COMPUTE ENGINE,费用是根据使用情况而定的。最便宜虚拟机大概是5美元不到,并且是始终免费的,流量另外收费;不过首先你需要一个Google账号,而且有时候不稳定。

  • Azure 微软的产品,大牌的服务器。不过性价比比较低,一般家里用用还是推荐Linode或者Digitalocean这种吧。

我个人使用的是Linode ,所以用Linode来举例说明使用方法。

租用Linode,Dashboard操作

进入Linode主页点击Pricing,可以看到Linode提供的各种服务价格。这里先解释一下Linode的价格策略:每个账户下面每个Linode服务器是分开计价并且是按时计费的。举例:如果你租了10个Linode 1GB($5),那么每小时产生的费用为$0.075。用足一天就是$1.8,用28天后,每个服务器费用到达$5封顶上限而不再额外产生费用,这个月结束以后总费用就为$50。只要不超过额外的流量,就不会产生额外的费用(流量很充足一般不会超的)。另外一点是Linode主机只要添加了,无论是否开机是否运行都会开始收费,所以正常使用请保持账户下面只有一台工作的Linode主机。

好了我们选择Linode 1GB($5/mo)继续,点击Sign Up注册账户。这个过程不赘述了,注意信用卡信息尽量填写真实,Linode有可能随机验证信用卡真实性,用汉语拼英写地址就OK了。新注册的账户会被要求扣除$20的预授权付款,这是一个验证,不用担心,如果你不使用他的产品,钱会退回;如果你使用,这个就相当于充值了,可以用4个多月(由于第一个月一般不是整月,达不到$5的上限)。

注册完成后进入账户内,这里可以管理我们的Linode主机,点击Add a Linode,添加一台Linode 1024,Location 选择 Fremont,CA 或者 Tokyo2,JP 。日本延迟更低,加州更稳定,自行选择,差别其实不大。

建好以后点击Dashboard,进入控制板,开始配置我们的Linux服务器。先在 Dashboard Remote Access Rebuild Rescue Resize Clone Graphs Backups Settings 这一排中点击进入Rebuild页面,然后出现Image:Debian9这里默认使用的发行版本是Debian 9,如果你从来没接触过Linux,请选择Debian 9或者Ubantu 16.04 LTS,因为后面的介绍是以Debian系列为例;如果你会使用,选一个自己熟悉的版本替换就行。之后下面的输入框Root Password:,这里需要你输入一个密码,这是你服务器的管理员密码,设一个长一点又不会忘记的密码吧,这个密码很重要,后面会用到。

Rebuild好了之后再次进入到Dashboard,可以看到你的主机现在用的Linux内核,默认是最新的。点击Boot,等十几秒钟,开机启动,一切就绪。

下面是最关键的一部:点击页面左上方的Linodes链接,进入到最初的Linode Manager页面,会看到新建Linode主机的IP地址。这个IP地址有时候会是之前被墙的一些IP地址,我们需要验证一下IP是否可用。先假设这个IP是172.104.118.170。Windows用户打开CMD,输入:

ping 172.104.118.170

如果4个都ping通了,延迟也还可以,那么这个主机就可以用了;如果出现4个Request timed out,那么请把这个Linode主机删除,重建,重复之前的步骤,直到获得满意的IP为止。由于之前一段时间shadowsocks在Linode服务器上的大量商业使用,导致很多日本和美国西部的IP被封,现在的新用户就被禁止使用Tokyo1的机房,新分配的机器也有可能是以前被封的IP段。

通过SSH配置自己的服务器

在上面一步成功设置好主机后,我们可以通过SSH进入自己的机器,安装软件,升级系统。Windows用户首先下载工具,PuTTy。打开PuTTy,输入你的Linode主机IP,默认端口22不用改,Type:SSH默认也不用改,点击Open。第一次连接会弹出警告窗口,点Yes继续。下面出现Terminal窗口:login as输入root,password输入之前设置的管理员密码。注意:Terminal里输入密码是看不到进度的,一口气输完然后回车就行。接下来就进入了root用户。

Debian系列用户在 root@localhost:~# 的#提示符后面输入命令:

apt-get update

会自动更新软件包。之后所有命令都以Debian系列为例,其他发行版本请自行修改命令。补充一点:PuTTy里面默认的粘贴是鼠标右键!本文中的命令可以直接由网页复制后,右键粘贴在PuTTy里,请不要使用Windows的Ctrl+V

Shadowsocks

接下来开始搭建shadowsocks-libev服务端。这里推荐使用@unbinilium的脚本Twist来进行搭建。这是一个一站式的解决方案,将shadowsocks-libev,simpe-obfs,网络优化加速融合。一键安装非常方便。

配置shadowsocks服务器端

在终端输入或者复制粘贴以下代码,并回车:

wget https://raw.githubusercontent.com/Unbinilium/Twist/master/twist -O twist.sh && chmod -x twist.sh && bash twist.sh

然后就等脚本开始执行,根据提示按键即可。过程可能需要几分钟,耐心等待,过程中千万不要按Ctrl+C的组合键,会打断进程要重新开始。

安装完成后我们开始配置参数,输入:

twist custom

然后会出现:

 PORT="443"                       # Server port
 LOACL="127.0.0.1"                # The address that server listens
 LOCALPORT="1080"                 # Local port of loacl address that server listens
 PASSWORD=""                      # Password used for encryption, auto generate if left free
 METHOD="xchacha20-ietf-poly1305" # Encryption, AEAD is better than OTA cipher which is already departed
 TIMEOUT="600"                    # Drop connections if it not using in seconds
 OBFS="tls"                       # Obfs method using tls or http
 OBFSHOST="mzstatic.com"          # Obfs host address
 OBFSURI="/"                      # Obfs specify the client request path uri
 FASTOPEN="true"                  # Use TCP fastopen that reduces TCP handshake time
 REUSEPORT="true"                 # Use TCP port reuse
 DNS1="8.8.8.8"                   # Default DNSv4 server address 1 from Google Public DNS
 DNS2="8.8.4.4"                   # Default DNSv4 server address 2 from Google Public DNS
 DNSv6a="2001:4860:4860::8888"    # Default DNSv6 server address a from Google Public DNSv6
 DNSv6b="2001:4860:4860::8844"    # Default DNSv6 server address b from Google Public DNSv6
 DSCP="EF"                        # Default dscp using expedited forwarding
 MODE="tcp_and_udp"               # Allow both connection use TCP and UDP
 MTU=""                           # Default mtu size, leave it blank to auto detect
 MPTCP="true"                     # Use multi-TCP experimental feature
 IPV6FIRST="true"                 # Use IPv6 default when available, auto off if no IPv6 address detected
 SYSLOG="true"                    # Export verbose log to /var/log/syslog
 NODELAY="true"                   # Reduce the TCP respond time delay
 FWS="enable"                     # Fake as a apache web server for concealing
 BBR="enable"                     # Use Google BBR for low delay network to get faster speed

默认使用的是 nano 编辑器,我们用上下左右箭头移动光标位置修改下面列出的几项配置参数:

PORT="443"                         # 服务端口请设置为443,配合混淆更好
LOACL="127.0.0.1"                  # 默认
LOCALPORT="12345"                  # 本地端口随意,不要超过65535就行
PASSWORD= ""                       #设置ss的密码这个密码将是客户端的密码
METHOD="xchacha20-ietf-poly1305"   #加密方式使用默认的,同时要注意对应shadowsocks客户端版本需在4.09以上才支持这个加密
OBFSHOST="www.baidu.com"           #这个地址填大IT公司的网址就行,比如itunes.apple.com, www.icloud.com

修改好之后按Ctrl+X回车,输入y确认,退出并保存。之后Twist会自动应用更新过的配置重启。服务端也就设置好了。

配置shadowsocks客户端

接下来就是客户端了。

  1. Windows
  2. MacOS
  3. Linux

主要说一下Windows客户端:

  1. 下载最新shadowsocks客户端之后,解压缩。
  2. 下载simple-obfs插件,将解压缩以后的文件放在shadowsocks同一层文件目录中。
  3. 打开shadowsocks.exe文件,依次添加服务器地址(Linode主机的IP);服务器端口(443);密码;加密方式选择xchacha20-ietf-poly1305;插件一栏填写:obfs-local;插件选项:obfs=tls;obfs-host=www.baidu.com,网址要与你服务器上设置的一致;备注随意填写。
  4. 最后一步点击确认,shadowsocks会自动最小化到任务栏上,找到它,右键点击启用,程序图标由灰色变成白色,表明以启动。网络没有问题的话就完成了。可以点击Google试验一下效果。
  5. shadowsocks还有PAC模式和全局模式的区别,就不细述了,自行Google一下吧。
  6. 感谢Twist一键安装脚本对网络进行了优化,由于Linux4.9以上的内核版本采用了Google的BBR算法,极大的提高了观看Youtube视频的速度,原本需要安装的一些提速插件也都无需使用了,现在观看1080p画质应该是非常流畅了。

其他终端产品客户端

Iphone客户端

Iphone客户端主要推荐 ShadowrocketShadowrocket 支持所有最新的加密方式以及obfs,目前市场上没有比之更好的客户端了。免费的 Potatso Lite 更新比较慢,不支持最新的加密方式,不支持obfs。

请注意 Shadowrocket 在国服apptore卖场下架了,如需购买请注册新的appleid至美国卖场购买,价格为$3.99,作者Guangming Li。

华硕路由器客户端

华硕路由器以及Netgear路由器某些型号(包括但不限于ac56u,ac66u,ac68u,ac88u)可以通过刷梅林固件后安装ss路由器版。这样在路由器上设置好shadowsocks后,所有连接路由的设备都可以科学上网。固件下载请查看这里

下载并更新好固件后,请到这里下载ss软件包,之后在路由器软件中心选择加载离线包就能完成安装。梅林固件的具体使用请参阅Koolshare论坛的梅林讨论区。

写在最后

貌似最近北京开会,网络形式又紧张起来。之前用的稳定的Linode也不是很稳定了,经常ping不通。大家在配置好自己的上网环境以后,一定记得勤更新。要知道GFW是在不断升级的,毕竟那些科研人员是拿着国家的研究经费的。

相信在将来,去中心化的第三代互联网会彻底打破网络的封锁,不过那一天可能还需要很多年吧。