SSR

SSR是什么?

Shadowsocks RSS,也叫SSR,是加强版的ShadowSocks。它增加了混淆和协议两个主要功能来达到防止某墙的重放攻击(这里不讲)和躲避QoS。

工作原理

C -> S 方向
浏览器请求(socks5协议) -> ssr客户端 -> 协议插件(转为指定协议) -> 加密 -> 混淆插件(转为表面上看起来像http/tls) ->
ssr服务端 -> 混淆插件(分离出加密数据) -> 解密 -> 协议插件(转为原协议) -> 转发目标服务器

其中,协议插件主要用于增加数据完整性校验,增强安全性,包长度混淆等混淆插件主要用于伪装为其它协议

推荐

如不考虑原版的情况下,推荐使用的协议,只有auth_sha1_v4和auth_aes128_md5和auth_aes128_sha1,推荐使用的混淆只有plain,http_simple,http_post,tls1.2_ticket_auth


安装SSR

1.下载并安装

https://doub.io/
http://ping.chinaz.com/

适用于Ubuntu Centos7

1
2
3
4
wget -N --no-check-certificate https://softs.fun/Bash/ssr.sh && chmod +x ssr.sh && bash ssr.sh

# 备用地址
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr.sh && chmod +x ssr.sh && bash ssr.sh

ShadowsocksR 安装后,自动设置为 系统服务,所以支持使用服务来启动/停止等操作,同时支持开机启动。

启动 ShadowsocksR:service ssr start

停止 ShadowsocksR:service ssr stop

重启 ShadowsocksR:service ssr restart

查看 ShadowsocksR状态:service ssr status

ShadowsocksR 默认支持UDP转发,服务端无需任何设置。

本脚本已经集成了 安装/卸载 锐速(ServerSpeeder)开心版,但是是否支持请查看 Linux支持内核列表 。(锐速不支持OpenVZ)

ShadowsocksR目前支持的协议和混淆:

  • 协议(Protocol):origin,auth_sha1_v4,auth_aes128_md5auth_aes128_sha1auth_chain_aauth_chain_b

  • 混淆(Obfs):plain,http_simple,http_post,random_head,tls1.2_ticket_authtls1.2_ticket_fastauth(需06/04日以后的服务端版本)

origin 和 plain 是原版,加粗的是推荐使用的。

如果你想要使用 tls1.2_ticket_fastauth 混淆插件,那么服务端选择 tls1.2_ticket_auth,客户端选择 tls1.2_ticket_fastauth 即可。

如果服务端 设置混淆参数为:tls1.2_ticket_auth_compatible (兼容原版)

那么客户端 可使用的混淆为:plain / tls1.2_ticket_auth / tls1.2_ticket_fastauth
tls1.2_ticket_auth 与 tls1.2_ticket_fastauth 的区别为,后者不会等待服务器回应,所以不会增加延迟。适合于,因为混淆插件增加延迟的原因不得不选择原版混淆 plain,但是又因为QOS等因素而处于延迟与干扰/限速等之间抉择的时候,可以选择 tls1.2_ticket_fastauth 客户端混淆插件!

安装libsodium 以支持 Chacha20/Chacha20-ietf 加密方式

支持系统CentOS 6+ / Debian 6+ / Ubuntu 14.04 +

1
2
3
4
wget -N --no-check-certificate https://softs.fun/Bash/libsodium.sh && chmod +x libsodium.sh && bash libsodium.sh

# 如果上面这个脚本无法下载,尝试使用备用下载:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/libsodium.sh && chmod +x libsodium.sh && bash libsodium.sh

开启BBR

Ubuntu

开启BBR需要内核版本 > 4.9

1.升级内核

  • 查看当前可升级内核列表 sudo apt-cache search –names-only linux-image
  • 安装内核 apt-get install linux-image-extra-4.10.0-14-generic linux-headers-4.10.0-14-generic
  • 查看内核启动顺序 grep menuentry /boot/grub/grub.cfg
  • 重启系统 reboot

2.开启BBR

1
2
3
4
5
6
7
# 开启BBR
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
sysctl net.ipv4.tcp_available_congestion_control
# 查看开启是否成功,若看到有 tcp_bbr 模块即说明bbr已启动
lsmod | grep bbr

Centos 7

内核版本 > 4.9

开启BBR

1
2
3
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
sysctl -p

输出结果

1
2
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

检查开启是否成功

1
lsmod | grep bbr

输出

1
tcp_bbr

OVZ BBR

https://blog.kuoruan.com/116.html

已经测试Centos7

关闭防火墙

1
2
systemctl disable firewalld
systemctl stop firewalld

1
2
3
wget https://raw.githubusercontent.com/kuoruan/shell-scripts/master/ovz-bbr/ovz-bbr-installer.sh
chmod +x ovz-bbr-installer.sh
./ovz-bbr-installer.sh

检测脚本

在VPS主机上运行

1
2
3
4
5
6
7
wget https://raw.githubusercontent.com/oooldking/script/master/superbench.sh
chmod +x superbench.sh
./superbench.sh

wget http://soft.laozuo.org/scripts/superbench.sh
chmod +x superbench.sh
./superbench.sh

Linux中使用 路由追踪 测试VPS回程路由

https://doub.io/linux-jc4/

CN2

CN2全称为中国电信下一代承载网,英文Chinatelecom Next Carrier Network,缩写为CNCN,进一步缩写为CN2。

普通163: 就是电信用户最经常遇到的电信线路,等级最低,省级/出国/国际骨干节点都以202.97开头,全程没有59.43开头的CN2节点。在出国线路上表现为拥堵,丢包率高。

CN2 GT: CN2里属于Global Transit的产品(又名GIS-Global Internet Service),在CN2里等级低,省级/出国节点为202.97开头,国际骨干节点有2~4个59.43开头的CN2节点。在出国线路上拥堵程度一般,相对于163骨干网的稍强。

CN2 GIA: CN2里属于Global Internet Access的产品,等级最高, 省级/出国/国际骨干节点都以59.43开头,全程没有202.97开头的节点。在出国线路上表现最好,很少拥堵,理论上速度最快最稳定

CN2线路的陷阱

便宜CN2需谨慎:很简单,便宜的CN2谁都想要,而且用来卖SS利润高。于是是个人都买,都用来开设代理卖给其他人,由于成本低,就算滥用被处罚的损失也小。

单向CN2需谨慎:单向CN一般都是去程CN2,回程普通电信线路。


Client

Python

local.py -s ip -p port -b 127.0.0.1 -l port -k pwd -m aes-256-cfb -O auth_aes128_sha1 -o tls1.2_ticket_auth

electron-ssr

多平台GUI客户端,需要依赖shadowsocksr

ShadowsocksR

仅支持Windows


Nginx转发socks5

配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
user  root;
# 处理请求的进程数量,CPU核心数量决定
worker_processes 1;

error_log /var/log/nginx/error.log;

events {
worker_connections 1024;
}

stream {
upstream backend {
hash $remote_addr consistent;

server 45.63.84.190:80 max_fails=3 fail_timeout=30s;
}

server {
listen 0.0.0.0:23456;
proxy_connect_timeout 30s;
proxy_timeout 30s;
proxy_pass backend;
}
}

使用Privoxy桥接HTTP代理到SOCKS5代理


OpenVZ KVM Xen 三者的区别

个人比较倾向于Xen,因为它是对供应商和和客户来说都是可以接受的折衷方案。openvz超卖太厉害,kvm等看RP,这2种都不适合那些不想折腾只想做站的站长。

检查类型脚本

1
wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/code/master/vm_check.sh && bash vm_check.sh

OpenVZ

OpenVZ是操作系统级别的虚拟化技术,是底层操作系统上的一层应用,这意味着易于理解和低权重开销,一般来说也意味着更优的性能。但是OpenVZ配置起来比较灵活,给黑心服务商改低限制的机会。

优势:现在外面卖的这种类型,许可的内存都超大,CPU也强劲,而且卖家很多,可比性也很强。性价比超高。

劣势:超卖,没有不超卖的,导致各种石头盘,钻石盘。连带的cpu也被过度分割导致性能升值不如其标明的1/10。再有就是内存,基本上OpenVZ技术没有独占的,都是共享,别人多了你就少了,而且这种技术最大的劣势就是内存下来后直接就是当机。还有开设vpn各种不方便。


KVM

优势:和xen类似,比xen更好的一点是,kvm是完全虚拟的,所以不分pv和hvm的区别,所有的kvm类+型的虚拟技术都可以装各种linux的发行版和各种win的发行版,不管供应商在主页有没有写明是否支持win,只要你配置够win运行,那就肯定可以装+的上去,只是方法的问题而已。

劣势:恰恰因为kvm可以装任意类型的操作系统,导致了折腾帝甚至在128m的机器上装了win2003(上去+后直接所有的cpu和内存都用于硬盘IO了,不明白这些人想干神马)。其结果就是所有的kvm邻居都得看你周围邻居的脸色。这么说把,一个node下只要+有5、6台这种折腾帝,对不起,你的硬盘基本就是石头盘了。


Xen

Xen是半虚拟化技术,它并不是一个真正的虚拟机,而是相当于自己运行了一个内核的实例,可以自由的加载内核模块,虚拟的内存和IO,稳定而且可预测。分Xen+pv+和Xen+hvm,区别就是pv只支持linux,而hvm支持win系统。

优势:内存独占,虽然小但是保证分配的到。部分虚拟技术决定了就算是超卖也不会超太离谱。所以一般的母鸡就算超了,也很少导致石头盘。当然小鸡有pt就除外了。另外就是即使内存再低也不会当掉,只是会无响应一段时间。

劣势:内存小,硬盘小,带宽小(以上3点均和同价位的openvz对比)。因为没法超卖了,为了赚钱只能把这3个基本配置降下来了。还有就是供应商残次不齐,而且大部分在说xen的时候都木有明说是pv还是hvm,其实pv的性能是优于hvm的。