Shadowsocks

购买国外服务器

vultr 购买服务器

支持 alipay 付款

环境搭建

访问

  [sh]
1
$ ssh root@XXX.XXX.XXX.XXX

安装命令

  • centos
  [sh]
1
$ yum -y install ${你要安装的文件}
  • ubuntu
  [sh]
1
$ apt-get XXX

安装

此处为 centos 环境,其他类似。

安装 pip

  [sh]
1
$ yum -y install python-pip

安装完成日志:

  [plaintext]
1
2
3
4
5
6
7
已安装: python2-pip.noarch 0:8.1.2-6.el7 作为依赖被安装: python-backports.x86_64 0:1.0-8.el7 python-backports-ssl_match_hostname.noarch 0:3.5.0.1-1.el7 python-ipaddress.noarch 0:1.0.16-2.el7 python-setuptools.noarch 0:0.9.8-7.el7 完毕

centos8

centos8 安装报错:

  [plaintext]
1
2
3
4
[root@vultrguest ~]# yum -y install python-pip Last metadata expiration check: 0:18:44 ago on Sun 22 Aug 2021 12:08:22 AM UTC. No match for argument: python-pip Error: Unable to find a match: python-pip

Centos8(最小化安装)全新安装Python3.8+pip的方法教程

  • 完整命令版本

最小化安装Python8后安装Python3.8.1,网上找了一圈教程,没有一个能完全成功的。或者能安装成功,但pip无法使用。最后根据多个教程整理了一份命令,测试成功,安装使用完全没有问题。

  [sh]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
yum -y install wget yum -y install setup yum -y install perl yum install openssl-devel -y yum install zlib-devel -y yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum install -y libffi-devel zlib1g-dev yum install zlib* -y yum install libffi-devel -y wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tar.xz tar -xvJf Python-3.8.1.tar.xz mkdir /usr/local/python3 cd Python-3.8.1 ./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl make && make install ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3 pip3 install --upgrade pip

今天看了一下宝塔的安装程序,发现用下面一行命令就可以快速安装Python3.6

  [plaintext]
1
2
yum install python3 python3-devel -y ln -sf /usr/bin/python3 /usr/bin/python

安装完用下面的命令升级PIP就可以正常使用了。

  [plaintext]
1
pip3 install --upgrade pip

测试

  [plaintext]
1
2
[root@vultrguest ~]# pip -V pip 21.2.4 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)

搞定。

较为简单的方式

https://teddysun.com/486.html

  • ss
  [plaintext]
1
2
3
4
5
wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-go.sh chmod +x shadowsocks-go.sh ./shadowsocks-go.sh 2>&1 | tee shadowsocks-go.log

卸载:

  [sh]
1
2
3
4
5
6
7
8
9
/etc/init.d/shadowsocks stop chkconfig --del shadowsocks # delete config file rm -rf /etc/shadowsocks # delete shadowsocks rm -f /etc/init.d/shadowsocks rm -f /usr/bin/shadowsocks-server

ss 安装实战

对应客户端:

常规版 Windows 客户端

ShadowsocksR 版 Windows 客户端

简单说明:

  [plaintext]
1
2
3
4
5
6
服务器端口:自己设定(如不设定,默认从 9000-19999 之间随机生成) 密码:自己设定(如不设定,默认为 teddysun.com) 加密方式:自己设定(如不设定,Python 和 libev 版默认为 aes-256-gcm,R 和 Go 版默认为 aes-256-cfb) 协议(protocol):自己设定(如不设定,默认为 origin)(仅限 ShadowsocksR 版) 混淆(obfs):自己设定(如不设定,默认为 plain)(仅限 ShadowsocksR 版) 备注:脚本默认创建单用户配置文件,如需配置多用户,请手动修改相应的配置文件后重启即可。

root 命令:

  [sh]
1
2
3
4
wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh chmod +x shadowsocks-all.sh ./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log

日志如下:

  [plaintext]
1
2
3
4
5
Which Shadowsocks server you'd select: 1) Shadowsocks-Python 2) ShadowsocksR 3) Shadowsocks-Go 4) Shadowsocks-libev

此处选择 1),其他自己根据需要设计即可,因为发现常规的 windows 客户端,支持的是 aes-256-gcm

安装报错:

  [plaintext]
1
2
[Error] Failed to install python Please visit: https://teddysun.com/486.html and contact.

作者本人解释是暂时不支持高于 centeros 7 的环境,可以尝试 docker: https://teddysun.com/536.html

为了简单,我们把服务器的版本回滚到 centos7 重新尝试。

  [plaintext]
1
2
[root@vultr ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)

再来一次。

安装成功,日志如下:

  [plaintext]
1
2
3
4
5
Congratulations, Shadowsocks-Python server install completed! Your Server IP : xx.xxx.xx.xxx Your Server Port : 13465 Your Password : xxx Your Encryption Method: aes-256-gcm

可以把二维码信息直接导入,更加便捷。

  • 卸载方法
  [plaintext]
1
./shadowsocks-all.sh uninstall
  • 启动脚本

启动脚本后面的参数含义,从左至右依次为:启动,停止,重启,查看状态。

Shadowsocks-Python 版:

  [plaintext]
1
/etc/init.d/shadowsocks-python start | stop | restart | status

/etc/init.d/shadowsocks-python restart

  • 默认配置

Shadowsocks-Python 版:

  [plaintext]
1
/etc/shadowsocks-python/config.json

无法使用

发现无法使用。

国内 telnet 没问题

国外:https://www.yougetsignal.com/tools/open-ports/ 发现国外是可以的。

建议安装 https://github.com/shadowsocks/shadowsocks-windows/releases,记得设置系统代理。

BBR

  • force update
  [plaintext]
1
rpm -ivh http://soft.91yun.org/ISO/Linux/CentOS/kernel/kernel-3.10.0-229.1.2.el7.x86_64.rpm --force

restart the server

  • bbr
  [plaintext]
1
wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/serverspeeder/master/serverspeeder-all.sh && bash serverspeeder-all.sh

较为传统的方式

安装 ss

  [sh]
1
$ pip install shadowsocks

日志如下:

  [plaintext]
1
2
3
4
5
6
7
Collecting shadowsocks Downloading https://files.pythonhosted.org/packages/02/1e/e3a5135255d06813aca6631da31768d44f63692480af3a1621818008eb4a/shadowsocks-2.8.2.tar.gz Installing collected packages: shadowsocks Running setup.py install for shadowsocks ... done Successfully installed shadowsocks-2.8.2 You are using pip version 8.1.2, however version 10.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
  • 升级下 pip
  [plaintext]
1
2
3
4
5
6
7
8
9
10
# pip install --upgrade pip Collecting pip Downloading https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl (1.3MB) 100% |████████████████████████████████| 1.3MB 977kB/s Installing collected packages: pip Found existing installation: pip 8.1.2 Uninstalling pip-8.1.2: Successfully uninstalled pip-8.1.2 Successfully installed pip-10.0.1

配置

/etc/shadowsocks.json

  [plaintext]
1
$ vi /etc/shadowsocks.json

此处使用单一用户配置

  [json]
1
2
3
4
5
6
7
8
9
10
{ "server": "0.0.0.0", "server_port": 2333, "local_address": "127.0.0.1", "local_port": 1080, "password": "密码", "timeout": 300, "method": "aes-256-cfb", "fast_open": false }

保存退出

属性说明

  • server_port

可以是 8848/11383 或其他。

  • 密码

只需要根据自己需要修改【密码】即可

运行 ss

执行命令

  [sh]
1
$ ssserver -c /etc/shadowsocks.json -d start

日志:

  [sh]
1
2
3
4
[root@vultr ~]# ssserver -c /etc/shadowsocks.json -d start INFO: loading config from /etc/shadowsocks.json 2018-07-18 01:36:06 INFO loading libcrypto from libcrypto.so.10 started

当显示 started,则说明启动成功。

每次开机启动 ss

添加开启启动项目

  [plaintext]
1
$ vi /etc/rc.local

添加如下内容:

  [plaintext]
1
ssserver -c /etc/shadowsocks.json -d start
  • 为了保证 reboot 会执行脚本
  [sh]
1
2
$ chmod +x /etc/rc.local $ chmod +x /etc/rc.d/rc.local

开放配置的端口

  • 开放 2333
  [sh]
1
$ firewall-cmd --zone=public --add-port=2333/tcp --permanent
  • 重新载入
  [plaintext]
1
$ firewall-cmd --reload
  • 查看
  [sh]
1
$ firewall-cmd --zone=public --query-port=2333/tcp

如果为 yes 则说明开启成功

客户端配置

到这里,服务端搞定。开始客户端。

此处,以 Mac 为例子。

ShadowsocksX

  • 下载

我下载的是,Shadowsocks-X

当然,也可以尝试下 ShadowsocksX-NG

  • 使用

解压后直接打开即可。最上方会出现一个小飞机。

  • 设置

模式,建议使用【自动模式】

【服务器】=》【编辑服务器】=>【添加】

填写对应的信息:

  [plaintext]
1
2
3
服务器地址:xxx.xxx.xxx.xxx 端口: 8848 密码: xxxx
  • 测试

google

测试通过。

Windows

shadowsocks-windows

BBR 加速

首先我们要知道,添加 BBR 加速支持的最关键的一点是升级我们Linux的内核,只有内核支持这个加速算法,才能使用BBR,步骤如下(按顺序输入命令行即可)

升级内核

  • 查看内核版本
  [sh]
1
2
$ cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)

内核应该是3.x,先升级成4.9或者4.12最新的,支持BBR

  [sh]
1
2
3
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml -y

设置内核版本

  • 查看可用内核
  [sh]
1
cat /boot/grub2/grub.cfg |grep menuentry
  • 设置为 4.9 以上版本
  [sh]
1
grub2-set-default 'CentOS Linux (4.17.9-1.el7.elrepo.x86_64) 7 (Core)'
  • 重启服务器

设置成功则: reboot 重启,接下来就是安装 BBR 了

安装 bbr

  [sh]
1
2
3
4
5
6
7
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 sysctl -p sysctl net.ipv4.tcp_available_congestion_control sysctl -n net.ipv4.tcp_congestion_control lsmod | grep bbr

如果安装成功,则可以看到:

  [sh]
1
2
[root@vultr ~]# lsmod | grep bbr tcp_bbr 20480 1
  • bbr.sh
  [plaintext]
1
2
3
4
5
6
7
8
9
10
11
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml -y 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 sysctl -p sysctl net.ipv4.tcp_available_congestion_control sysctl -n net.ipv4.tcp_congestion_control lsmod | grep bbr

端口开放

CentOS7使用firewalld打开关闭防火墙与端口

1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 : systemctl enable firewalld

2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。 启动一个服务:systemctl start firewalld.service 关闭一个服务:systemctl stop firewalld.service 重启一个服务:systemctl restart firewalld.service 显示一个服务的状态:systemctl status firewalld.service 在开机时启用一个服务:systemctl enable firewalld.service 在开机时禁用一个服务:systemctl disable firewalld.service 查看服务是否开机启动:systemctl is-enabled firewalld.service 查看已启动的服务列表:systemctl list-unit-files|grep enabled 查看启动失败的服务列表:systemctl –failed

3.配置firewalld-cmd

查看版本: firewall-cmd –version 查看帮助: firewall-cmd –help 显示状态: firewall-cmd –state 查看所有打开的端口: firewall-cmd –zone=public –list-ports 更新防火墙规则: firewall-cmd –reload 查看区域信息: firewall-cmd –get-active-zones 查看指定接口所属区域: firewall-cmd –get-zone-of-interface=eth0 拒绝所有包:firewall-cmd –panic-on 取消拒绝状态: firewall-cmd –panic-off 查看是否拒绝: firewall-cmd –query-panic

那怎么开启一个端口呢 添加 firewall-cmd –zone=public –add-port=2333/tcp –permanent (–permanent永久生效,没有此参数重启后失效) 重新载入 firewall-cmd –reload 查看 firewall-cmd –zone=public –query-port=2333/tcp 删除 firewall-cmd –zone=public –remove-port=8848/tcp –permanent

firewall-cmd –zone=public –add-port=22/tcp –permanent

  • open.sh
  [sh]
1
2
3
firewall-cmd --zone=public --add-port=2333/tcp --permanent firewall-cmd --reload firewall-cmd --zone=public --query-port=2333/tcp

参考

教你一步一步自己搭梯子—— SS篇

vultr 搭建&配置ssh + Google bbr 加速

  • 端口

https://www.cnblogs.com/justuntil/p/7767783.html

https://www.cnblogs.com/mliudong/p/4529612.html

端口扫描工具

拓展阅读

WireGuard