亿枝红杏儿出墙来

神一样的工具们
https://shadowsocks.org/en/index.html

真香定律

更新(2021-05-05)

技术无时无刻不在发展,各种代理方案如雨后春笋般冒出来。新技术虽然一个比一个强大,但是配置起来也确实麻烦,咱毕竟不是专业玩家,日常使用更应注重方便快捷。

最近同事给推荐了一个代理软件 clash4windows 还不错,搭配各路机场,比 V2rayN 要好用不少。

官方出品Clash配置文件
深入理解Clash配置文件

后起之秀

更新(2020-03-15)

由于墙的封锁能力愈来愈强,本文之前所列举的方案已经不再适用,目前本人已弃用 shadowsocks 转投 v2ray 的怀抱。

技术文档:v2ray site
技术文档:v2ray 白话文教程 - 原版
技术文档:v2ray 白话文教程 - 新版

这里介绍了 v2ray 的工作原理。

v2ray 可同时开启多个协议支持,包括 http、socks、shadowsocks、vmess 等。每个协议可单独设置传输载体,比如 TCP、mKCP、http/2、WebSocket 等。

Vmess + TCP + TLS + Web
Vmess + KCP + TLS + Web
Vmess + HTTP/2 + TLS + Web
Vmess + WebSocket + TLS + Web
Vmess + WebSocket + TLS + Web + CDN
{浏览器} <--(socks)--> {V2Ray 客户端 inbound <-> V2Ray 客户端 outbound} <--(HTTP)-->  {V2Ray 服务器 inbound <-> V2Ray 服务器 outbound} <--(Freedom)--> {目标网站}
{浏览器} <--(socks)--> {V2Ray 客户端 inbound <-> V2Ray 客户端 outbound} <--(shadowsocks)--> {V2Ray 服务器 inbound <-> V2Ray 服务器 outbound} <--(Freedom)--> {目标网站}
{浏览器} <--(socks)--> {V2Ray 客户端 inbound <-> V2Ray 客户端 outbound} <--(VMess)--> {V2Ray 服务器 inbound <-> V2Ray 服务器 outbound} <--(Freedom)--> {目标网站}

{浏览器} <--(socks)--> {V2Ray 客户端 inbound <-> V2Ray 客户端 outbound} <--(VMess/TLS/TCP)--> {V2Ray 服务器 inbound <-> V2Ray 服务器 outbound} <--(Freedom)--> {目标网站}
{浏览器} <--(socks)--> {V2Ray 客户端 inbound <-> V2Ray 客户端 outbound} <--(VMess/TLS/KCP)--> {V2Ray 服务器 inbound <-> V2Ray 服务器 outbound} <--(Freedom)--> {目标网站}
{浏览器} <--(socks)--> {V2Ray 客户端 inbound <-> V2Ray 客户端 outbound} <--(VMess/h2/TLS/TCP)--> {V2Ray 服务器 inbound <-> V2Ray 服务器 outbound} <--(Freedom)--> {目标网站}
{浏览器} <--(socks)--> {V2Ray 客户端 inbound <-> V2Ray 客户端 outbound} <--(VMess/ws/TLS/TCP)--> {V2Ray 服务器 inbound <-> V2Ray 服务器 outbound} <--(Freedom)--> {目标网站}

上面所陈列的若干技术文档对实现原理进行了详细说明,不过真要根据上述理论做出一套现实可行的代理方案出来,对于我这种半瓶水玩家来说还是有点难度的,还是老老实实按别人的教程来吧:Vmess + WebSocket + TLS(domain) + Web(Caddy) + CDN(Cloudflare) 方案复活

懵懂时期

以下方案在 2018 年前后尚能对付着用,现在(2020)基本上是一封一个准儿,墙愈来愈高,吾辈还是要跟上时代的步伐呀!

使用 bbr 加速

安装、设置、重启

uname -r

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

sudo yum --enablerepo=elrepo-kernel install kernel-ml -y

rpm -qa | grep kernel

sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

sudo grub2-set-default 0

sudo shutdown -r now

重启过后

uname -r

echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

sudo sysctl net.ipv4.tcp_available_congestion_control

net.ipv4.tcp_available_congestion_control = bbr cubic reno

sudo sysctl -n net.ipv4.tcp_congestion_control

lsmod | grep bbr

测试工具|可选

sudo yum install httpd -y
sudo systemctl start httpd.service
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload
cd /var/www/html
sudo dd if=/dev/zero of=500mb.zip bs=1024k count=500

http://[your-server-IP]/500mb.zip

服务端工具之 shadowsocks

程序安装

curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py
pip install --upgrade pip

pip install shadowsocks
pip install https://github.com/shadowsocks/shadowsocks/archive/master.zip -U

编辑配置

vi /etc/shadowsocks.json
# 配置一:
{
"server": "0.0.0.0",
"server_port": 10235,
"password": "Pass3ord",
"timeout": 300,
"method": "aes-256-gcm"
}
# 配置二:
{
"server": "0.0.0.0",
"port_password": {
"10236": "password",
"10237": "password"
"10238": "password"
"10239": "password"
},
"timeout": 300,
"method": "aes-256-cfb"
}

启动服务

ssserver -c /etc/shadowsocks.json -d start

服务端工具之 shadowsocksR

服务端工具之 v2ray

程序安装

yum -y install wget
yum -y install zip unzip
wget https://install.direct/go.sh
bash go.sh

编辑配置

vi /etc/v2ray/config.json

启动服务

systemctl start v2ray

服务端防火墙 firewalld

yum -y install firewalld
systemctl start firewalld.service

firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=10235/tcp
firewall-cmd --permanent --zone=public --add-port=10245/tcp
firewall-cmd --reload
firewall-cmd --zone=public --list-ports

客户端工具之 shadowrocket

略.

客户端工具之 outline

ss://base64(method:password)@server-address:port
ss://YWVzLTI1Ni1jZmI6UGFzc3dvcmQ=@xxx.xxx.xxx.xxx:xxxxx

上古时代

诸位还记得通过修改 host 文件来科学上网的方式吗,好怀念呀!