创建VPS

安装openvpn或者shadowsocks用于Fuck the GFW,首先需要申请一个外国的私有服务器(Virtual Private Server), 常见的性价比比较高的选择有:

DigitalOcean虽然有额定流量,但是似乎并不会因为流量超限而额外收费,如果是有比较大的流量需求,建议选择DigitalOcean。最便宜的5刀价位上,DO家的机器内存最小,只有512M,Vultr和Linode均为1G。如果想要在VPS上搭建其他服务,如博客等,那么Vultr和Linode的性价比更高。在文档支持方面,DO有比较强大的社区,有很多用户撰写高质量的文档,Vultr的文档通常比较简略,Linode的文档更新不够活跃。

配置VPS

VPS推荐使用Ubuntu最新LTS版本,Ubuntu用户多,社区活跃,遇到问题,更容易找到支持和帮助。创建Ubuntu VPS后,可以参考这篇文章做最基本的安全配置。如果没有特殊需求,一般情况下可以忽略防火墙配置。创建VPS后,推荐使用zsh代替原生的bash,并使用oh-my-zsh主题框架,可以减轻使用命令行的痛苦。

安装配置shadowsocks

服务器端安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
sudo apt-get install python-pip
sudo pip install shadowsocks
cat > /etc/shadowsocks.json
{
    "server":"my_server_ip",
    "server_port":8388,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"mypassword",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

可以参考官方文档修改各个配置项。如果需要让shadowsocks同时监听ipv4和ipv6流量,配置"server":"::"

可以用systemd来将shadowsocks运行为系统服务,参照shadowsocks.service:

1
2
sudo systemctl enable shadowsocks.service
sudo systemctl start shadowsocks

客户端安装

在客户端安装shadowsocks的步骤与服务器端相同,配置文件中,server项填写为服务器ip地址即可,ipv4或者ipv6均可,server_port,password,method等项需要与服务器配置相同。

1
2
sudo sslocal -c /path/to/shadowsocks.json -d start --> 启动shadowsocks客户端
sudo sslocal -c /path/to/shadowsocks.json -d stop --> 终止shadowsocks客户端

客户端代理配置

在客户端安装shadowsocks后,需要配置本地代理服务。

浏览器配置

对于Chrome浏览器,安装SwitchyOmega插件。设置本机流量和局域网流量不使用代理。

1
2
3
4
5
6
7
8
9
Protocol: socks5
Server: 127.0.0.1
Port: 1080

Bypass List:
127.0.0.1
::1
localhost
10.*

命令行配置

对于terminal,安装proxychains进行代理。参考官方文档安装后,echo "socks5 127.0.0.1 1080" >> /etc/proxychains.conf即可让proxychains使用shadowsocks进行代理。在需要使用代理的命令前添加proxychains4命令即可,例如sudo proxychains4 apt-get update。注意proxychains命令不可代理ping指令,但是可以代理curl指令,可以通过proxychains4 curl www.google.com来测试代理网络的连通性。

可以在客户端的 .zshrc 中写入alias pc='proxychains4'来简化指令,但是当使用sudo命令时,仍然需要使用命令全称。

移动端配置

在Android移动端,可以通过shadowsocks-android来使用shadowsocks,配置方法同上。新版本中加入了广告和不必要的新功能,推荐使用老版本2.8.3

openvpn安装配置

openvpn安装配置较为复杂,配置项较多,稍有错误openvpn就可能无法正常工作。推荐使用openvpn一键安装脚本简化安装。

1
2
3
sudo systemctl enable openvpn@server --> 设置openvpn为开机自启动
sudo systemctl openvpn@server start --> 启动openvpn服务端
sudo systemctl openvpn@server sotp --> 终止openvpn服务端

安装完成后,脚本会把服务端配置文件写入到 /etc/openvpn/ 目录下,并且在当前目录下生成 client.ovpn 配置文件。将 client.ovpn 使用ftp或者sftp复制到客户端机器的 /etc/openvpn/ 目录下即可。

注意,如果需要使用让openvpn支持ipv6通道,应该在openvpn的服务端配置文件 /etc/openvpn/server.conf 和客户端配置文件 /etc/openvpn/client.ovpn 中配置 proto udp6。默认情况下,客户端的所有流量均走vpn通道,可以在客户端配置文件中设置 route 10.0.0.0 255.0.0.0 net_gateway ,让局域网流量不走vpn通道。

1
sudo openvpn /etc/openvpn/client.ovpn > /dev/null & --> 运行openvpn客户端

在Android移动端可以使用OpenVPN for Android来连接openvpn。配置方法是把client.ovpn复制到手机中,在手机中点击该文件,选择导入OpenVPN配置

Google地址封禁

Google对于大量提交访问的网段会封禁IP,由于许多人使用VPS搭建代理服务器访问Google,导致许多VPS的IP地址被Google封禁,无法使用正常的Google服务,如Google Scholar。

解决这个问题的方法是使用ipv6地址访问Google服务,因为大多数VPS都是直接使用ipv4地址访问,所以被封禁的地址大多数是ipv4,ipv6基本不会被封禁。要让服务器通过ipv6访问Google服务,只需要配置 /etc/hosts 即可,向其中写入所访问的域名的ipv6地址。推荐使用ipv6-hosts查询ipv6地址。

1
2
3
4
5
6
$ su
$ cat >> /etc/hosts
2404:6800:4008:c00::71 google.com
2404:6800:4008:c02::63 www.google.com
2404:6800:4008:c06::be scholar.google.com
2404:6800:4008:803::2001 scholar.googleusercontent.com