Shadowsocks

购买国外服务器

vultr 购买服务器

支持 alipay 付款

环境搭建

访问

$   ssh root@XXX.XXX.XXX.XXX

安装命令

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

安装

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

安装 pip

$   yum -y install python-pip

安装完成日志:

已安装:
  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 安装报错:

[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无法使用。最后根据多个教程整理了一份命令,测试成功,安装使用完全没有问题。

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

yum install python3 python3-devel -y
ln -sf /usr/bin/python3 /usr/bin/python

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

pip3 install --upgrade pip 

测试

[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
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

卸载:

/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 客户端

简单说明:

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

root 命令:

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

日志如下:

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

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

安装报错:

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

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

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

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

再来一次。

安装成功,日志如下:

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 

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

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

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

Shadowsocks-Python 版:

/etc/init.d/shadowsocks-python start | stop | restart | status

/etc/init.d/shadowsocks-python restart

  • 默认配置

Shadowsocks-Python 版:

/etc/shadowsocks-python/config.json

无法使用

发现无法使用。

国内 telnet 没问题

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

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

BBR

  • force update
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
wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/serverspeeder/master/serverspeeder-all.sh && bash serverspeeder-all.sh

较为传统的方式

安装 ss

$   pip install shadowsocks

日志如下:

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
#   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

$   vi /etc/shadowsocks.json

此处使用单一用户配置

{
"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

执行命令

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

日志:

[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

添加开启启动项目

$   vi /etc/rc.local

添加如下内容:

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

开放配置的端口

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

如果为 yes 则说明开启成功

客户端配置

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

此处,以 Mac 为例子。

ShadowsocksX

  • 下载

我下载的是,Shadowsocks-X

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

  • 使用

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

  • 设置

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

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

填写对应的信息:

服务器地址:xxx.xxx.xxx.xxx
端口: 8848
密码: xxxx
  • 测试

google

测试通过。

Windows

shadowsocks-windows

BBR 加速

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

升级内核

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

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

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

设置内核版本

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

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

安装 bbr

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

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

[root@vultr ~]# lsmod | grep bbr
tcp_bbr                20480  1 
  • bbr.sh
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
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