科学上网,自建VPS-SS应用

最近因为需求想自己搭建一个VPS加SS应用。用的是Vultr这个平台。

唉…这东西的教程已经是满大街都是了,我就不重复造轮子了,现在的轮子还没有失效。

具体的服务器租建过程可参考:

关于在TCP Fast Open过程中命令行增加的一些补充(我自己加上的):

每一次的…ipv4…之外我都加上了…ipv6…的一样的命令行。

如:echo 3 > /proc/sys/net/ipv4/tcp_fastopen
另外加上了:echo 3 > /proc/sys/net/ipv6/tcp_fastopen

如:net.ipv4.tcp_fastopen = 3
另外加上了:net.ipv6.tcp_fastopen = 3

其中注意的细节是:

  1. 开通服务器时,当出现了ip,不要立马去ping或者用xshell去连接,再等5分钟之后,有个缓冲时间。

  2. 注意加密算法的对齐填写。

  3. 后续补充…

简单说说体验吧,用的是在日本的服务器,经过上面的参考之后,换了好几台服务器才有了现在的暂时稳定…另外要补充一下:如果在使用命令行ssh root@<ip>不通时(即没有提示要求输入密码登陆的出现的其他情况,比如超时),直接重新另外开一台就是了,不用再花多余的时间去测试了。

我一共换了好几台才有3台是可以用的…心累…可能是我太急了??有可能。

补充:目前上YouTube测试最高连接可以达到25M/s…超级快的哈哈哈哈~~估计还可以上升~~~美滋滋~~

补充说明

最近添加了多个用户的设置,即添加了多个独立端口以及独立密码,均需要将端口添加至服务器端口列表才行,并且还要注意添加tcp/udp协议,这很重要。

SS的以及BBR的相关的命令记录

  • SS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#下载安装命令
wget --no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh
chmod +x shadowsocks.sh
./shadowsocks.sh 2>&1 | tee shadowsocks.log
#查看当前ss服务器所开放的端口
ss -lntp | grep ssserver
#查看当前ss服务器的密码,通过以下命令可见ss的配置文件,配置文件中自然有密码
ps aux | grep ssserver
#用cat查看下配置文件即可看见密码了
cat /etc/shadowsocks.json
#修改ss密码:
vi /etc/shadowsocks.json
按i键进入编辑模式,修改密码为123456
"password":"123456",
然后按ESC,再输入:wq保存退出
重启ss即可
service shadowsocks restart
附:ss启动停止方法
启动:service shadowsocks start
停止:service shadowsocks stop
重启:service shadowsocks restart
状态:service shadowsocks status

关于更多的命令操作以及下载SSR可查看:如何查看修改ss服务器的端口密码自建ss服务器教程

1
2
3
4
5
6
7
8
9
10
11
#下载命令
yum -y install wget
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
chmod +x bbr.sh
./bbr.sh
#安装查看命令
lsmod | grep bbr

在系统CentOS 8中已经自带BBR了!!可用命令lsmod | grep bbr查看。

另外在测试下,其实只要本地的网络速度快,用不用BBR的情况下都是可接受的,都是不影响正常使用的,而且发现最近安装完BBR之后,SS全部不能正常使用了…无奈之下只能重新开一台又一台,难受…所以索性不用了。

关于ss搭建Socks5代理

可参考:

一般来说,在VPS上搭建完SS应用之后,就能直接使用Socks5代理了,一般的账号和端口即为:127.0.0.11080(在ss打开并且行得通的情况下)。当然这些均可修改,具体可查看上方的两个链接。

关于Vutrl里的Snapshot功能

这个可以保存某个VPS服务器在此时此刻的状态,在之后创建的新的服务器之后可直接恢复即可。

具体可参考链接:轻松在 VPS 搭建 Shadowsocks 翻墙 ($5/月 支付宝)

更新

新型墙的阻断方式:ICMP阻断和TCP阻断

ping得通(ICMP协议),但是ssh不通(TCP协议),即为TCP阻断。

解决方案:重新开一台主机…

另外,若是ssh可行,而ping不通,则可选择重新选择端口号试试。

添加福利网址

添加BBRplus链接

1
2
3
4
5
yum -y install wget
wget "https://github.com/cx9208/bbrplus/raw/master/ok_bbrplus_centos.sh" && chmod +x ok_bbrplus_centos.sh && ./ok_bbrplus_centos.sh
#安装成功之后查看端口命令
lsmod | grep bbr

bbrplus在原版bbr加速的基础上进行了一些改进,但是效果因人而异,根据大部分群友的测试bbrplus是要优于bbr加速的,不过目前这个bbrplus一键脚本只支持Centos7。

另外关于更多的Vultr加速链接

关于多种加速的软件选择

另外,我认为有必要需要说明的:

以下文字来源于:https://groups.google.com/forum/#!msg/ustc_lug/Ka-vrTWcSOg/TK0TuV8d5GgJ

不要使用锐速此类软件,它会破坏与你共享网络链路者的公平性。TCP 是有拥塞控制的,也就是它感受到网络拥塞的时候就会减慢发送速率。在 Internet 上感受到拥塞的方法有两种,一是丢包(假定丢包都是拥塞导致的),二是往返延迟(RTT)增大。如果把拥塞控制去掉(例如像某些下载软件一样采用 UDP + 丢包重传),自然能挤掉链路上其他的 TCP 流,表现出很快的下载速度。

锐速宣称是基于 Zeta TCP,它是有拥塞控制的,不过会把其他常见的 TCP 实现(如经典的 TCP Reno,Windows Vista+ 的 CTCP,Linux/BSD 的 Cubic TCP)挤掉,也就是不公平。由于 Internet 不可能在一夜间更换 TCP 实现,任何会导致不公平的 TCP 拥塞控制算法都不能大规模使用。

至于 Wikipedia Zeta TCP 词条宣称的 “不论对方是 Zeta TCP 还是其他 TCP 都能加速”,事实上是任何有实用价值的 TCP 改进算法的必要条件(总不能要求客户端和服务器同时升级系统吧)。词条中的 Congestion Avoidance 提出把基于丢包的和基于往返延迟的拥塞控制相结合,这也不是什么新思路,事实上 Windows Vista 至今的 Compound TCP 就是这样做的,这里的关键是“结合”的细节。词条中还提到 Loss Detection,也就是早些发现丢包的可能并予以重传,算法细节没有公布,但似乎比较拙劣,事实上 RFC 5827 已经定义了新的丢包检测与重传算法,并由 Google 实现在了 Linux 3.5 中。

设计快速的 TCP 拥塞控制算法不难,难点是要与常见的 TCP 实现保证公平。感兴趣的可以看我老板的回忆文章:
http://blog.sina.com.cn/s/blog_4caedc7a0100gd8f.html

像 Zeta TCP 这样的适用于小规模的部署,所有机器都要部署 Zeta TCP。如果你只是想尽快下载,不在乎别人抱怨,那就用 UDP + 应用层丢包重传吧。

  • 另外关于锐速与BBR的原理简单解析可参考:

锐速与BBR的原理简单解析

最终我还是选择了原版的BBR加速。第一,是因为它是经过Google多次验证调试才得以公开示众的,可信度及可靠性高,减少了许多的不确定性,所以较稳定;第二,关于那些魔改的,和plus之类的还只是属于那些“小打小闹”的层面,并且达不到严格验证,而且有些有失共享TCP的公平性,意义上有些损人利已的意味,这点我做不到能够完全接受。以上。

Host key verification failed.认证失败解决方法

当新开了一台服务器使用ssh root@108.xx.xxx.248时出现以下错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:mmjlETFOCngnf0Qmwtb68wIJJ3VKHJc2LSAjWPuA9zE.
Please contact your system administrator.
Add correct host key in /Users/junjieliu/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/junjieliu/.ssh/known_hosts:11
ECDSA host key for 108.xx.xxx.248 has changed and you have requested strict checking.
Host key verification failed.

解决方法:使用ssh-keygen -R 108.xx.xxx.248命令重叠ssh中文件数据。之后再使用ssh root@108.xx.xxx.248一般就没什么问题了。

电子设备使用Wi-Fi连不上SS

今天刚刚遇到了,具体情况为Wi-Fi下开或者是不开SS连国内网站都也不进去了,以前都是好好的,但是现在只有使用数据流量才能继续连上了。之后我试着用终端SSH连接服务器,发现居然失败了…

最简单的解决方法:换一台服务器….

最近还发现了一个可能导致这个问题的原因:DNS污染。即可通过修改网络“高级”设置(我用的是Mac),修改/删除当前DNS即可恢复正常!!

另外Mac下的防止DNS污染的配置可参考:在Mac OSX 上配置 DNSCrypt+dnsmasq 防止污染

关于错误[Error] libsodium-1.0.16 install failed.

其中的测试环境为:CentOS 8

关于将系统从CentOS7迁移到CentOS8的变动

第一在CentOS8中使用上方的命令已经失效了。下方是新的命令(亲测有效):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1、下载脚本
一键脚本已集成TCP优化、自动开启Google BBR(限 4.9 或更高版本内核)、自动安装 shadowsocks-libev
wget https://down.24kplus.com/linux/shadowsocks/centos-shadowsocks-libev.sh
2、执行脚本进行安装
chmod +x centos-shadowsocks-libev.sh && ./centos-shadowsocks-libev.sh
3、根据shell脚本提示输入相关信息
1、提示设置SS密码,输入自定义密码后按回车,也可以直接按回车使用默认密码
2、接下来选择SS要使用的服务器端口,输入自己喜欢的端口, 也可以直接按回车使用默认端口
3、然后选择加密方式(仅保留相对安全的加密方式)
4、安装完成后,记住各项信息,在客户端连接时需要用到
4、查看配置
cat /etc/shadowsocks-libev/config.json

具体的图文教程可参考:https://www.24kplus.com/linux/1371.html

关于对shadowsocks-libev的介绍及其他具体使用可见其GitHub地址。另外,关于如何部署一台抗封锁的Shadowsocks-libev服务器。如上。

关于CentOS8在Vultr的变动方案

众所周知,CentOS8已经在Vultr找不到了,已经变成了CentOS8 Steam/CentOS9 Steam,其中也相关联到一些变动,具体就不多说了。在此主要讲讲继续如何搭建以正常使用VPS-SS的过程。

因为CentOS8 Steam/CentOS9 Steam无法使用以上的命令了,但是还好以上命令还可以套用在CentOS7上。命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
脚本安装:
一键脚本已集成TCP优化、自动开启Google BBR(限 4.9 或更高版本内核)、自动安装 shadowsocks-libev:
wget https://down.24kplus.com/linux/shadowsocks/centos-shadowsocks-libev.sh
执行脚本进行安装:
chmod +x centos-shadowsocks-libev.sh && ./centos-shadowsocks-libev.sh
由于 Google BBR 需要内核版本 4.9 以上,如果安装时内核版本低于 4.9 建议先升级内核版本。
提示:CentOS 7 自带内核版本为 3.10,CentOS 8 自带内核版本为 4.18。
1、查看内核版本命令:
uname -r
2、升级内核
升级内核需要先导入elrepo的key,然后安装elrepo的yum源:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install -y https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
如果要安装ml内核,使用如下命令:
yum --enablerepo=elrepo-kernel -y install kernel-ml-devel kernel-ml
如果要安装lt内核,使用如下命令:
yum --enablerepo=elrepo-kernel -y install kernel-lt-devel kernel-lt
关于内核版本的定义:
版本性质:主分支ml(mainline),稳定版(stable),长期维护版lt(longterm)
版本命名格式为 “A.B.C”:
数字 A 是内核版本号:版本号只有在代码和内核的概念有重大改变的时候才会改变,历史上有两次变化:
数字 B 是内核主版本号:主版本号根据传统的奇-偶系统版本编号来分配:奇数为开发版,偶数为稳定版
数字 C 是内核次版本号:次版本号是无论在内核增加安全补丁、修复bug、实现新的特性或者驱动时都会改变
3、设置为默认内核
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
4、删除旧的内核
查看已安装的内核
rpm -qa | grep kernel
删除旧内核
yum remove 内核名称
5、reboot重启机器,然后查看内核版本
uname -r
接下来的过程跟上面的命令所进行的过程一致。

具体的图文链接来源:CentOS 一键安装 shadowsocks-libev 升级/更新 Centos 7 内核

关于Shadowsocks-Libev在其他Linux系统中的应用

详细相关内容可见Shadowsocks-Libev的GitHub地址:Shadowsocks-Libev GitHub,其中有其详细介绍以及官方建议使用的说明。以下主要内容摘抄于:如何部署一台抗封锁的Shadowsocks-libev服务器。并且在下方有说明的翻译文章链接。我主要是将两者之间的相关内容相互整合了。

服务器

生成端口号和密码

为了配置并维护一台Shadowsocks-libev服务器。 按照这里的配置建议,Shadowsocks-libev服务器可以抵御各种已知的攻击, 包括来自GFW的主动探测和封锁以及partitioning oracle攻击Shadowsocks-libev服务器需要一个不寻常的端口号和一个强密码。强密码有助缓解最新发现的针对Shadowsocks服务器的Partitioning Oracle攻击。首先生成一个随机端口号,如下所示:

1
echo $((1024 + $RANDOM))

shell函数 RANDOM提供了一个介于 0 和 32767 之间的伪随机整数,因此在计算算术表达式后,将得到一个介于 1024 和 33791 之间的端口号。另外,根据如何部署一台抗封锁的Shadowsocks-libev服务器中的说法可以考虑将server_port的值改为 1024 到 65535 之间的任意整数。在以下其余部分的示例中,将使用以下端口为例:

1
5405

同时生成一个随机密码,用以下命令在终端生成一个强密码:

1
openssl rand -base64 24

openssl rand -base64函数提供一个随机数,以base-64表示法表示。由于参数24,它将基于 24 字节或 192 位。结果将有 32 个 base-64字符。在本页其余部分的示例中,将使用以下密码为例:

1
vJYEKOgxcZsgPRA4zT3L5Sdu/NCo3KWY

通过Snap安装的Shadowsocks-libev默认的配置文件:

1
sudo nano /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json

将上方替换过密码的配置信息复制粘贴到配置文件后,按Ctrl + x退出。 退出时,文本编辑器将问你"Save modified buffer?",请输入y然后按回车键。

打开防火墙

使用ufw来管理Shadowsocks服务器的防火墙。

在基于Debian的服务器上,可以通过如下命令安装ufw

1
sudo apt update && sudo apt install -y ufw

然后开放有关sshShadowsocks-libev的端口。请注意,以下命令假设在/var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json中的server_port的值为8388。 如果你的server_port用了其他的值,请对以下命令作相应的修改:

1
2
sudo ufw allow ssh
sudo ufw allow 8388

现在我启动ufw:

1
sudo ufw enable

启动时如果弹出Command may disrupt existing ssh connections. Proceed with operation (y|n)?,请输入y并按回车键。

最后,请用sudo ufw status检查一下你的配置是否和下面的一样:

1
2
3
4
5
6
7
8
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
8388 ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
8388 (v6) ALLOW Anywhere (v6)

How to Install, Configure, and Run Shadowsocks-Libev中的翻译内容来看,如果在服务器上安装了防火墙,则需要打开一个端口以允许Shadowsocks-Libev接收客户端输入。选择Shadowsocks-Libev将侦听的端口。为TCP和可选的UDP打开该端口。

如果使用firewalld,打开端口的命令将如下所示:

1
2
firewall-cmd --permanent --add-port=5405/tcp
firewall-cmd --reload

以下是nftables用户的相同命令模板,假设您正在使用该表inet filter并且端口是5405:

1
2
nft add rule inet filter input tcp dport 5405 counter accept
nft list ruleset > /etc/nftables.conf

可以为iptables用户创建类似的规则。同样,假设有一个删除输入的策略,除非它被明确接受,并且假设之前已经安装并配置了iptables-persistent包。

1
2
iptables -A INPUT -p tcp --dport 5405 -j ACCEPT
dpkg-reconfigure iptables-persistent

对于ufwfor前端的用户iptables,等效的命令是:

1
ufw allow 5405/tcp

使用 Teddysun 脚本安装

一步安装、配置和运行Shadowsocks-Libev的简单方法是使用Teddysun脚本。在 CentOS平台上,通常必须先安装wget,然后下载并运行脚本shadowsocks-libev.sh

1
2
3
4
yum install wget -y
wget https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev.sh
chmod +x shadowsocks-libev.sh
./shadowsocks-libev.sh

DebianUbuntu上,该wget实用程序通常已经安装,因此只需下载并运行脚本shadowsocks-libev-debian.sh

1
2
3
wget https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev-debian.sh
chmod +x shadowsocks-libev-debian.sh
./shadowsocks-libev-debian.sh

运行脚本将会提示一些问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#############################################################
# Install Shadowsocks-libev server for Debian or Ubuntu #
# Intro: https://teddysun.com/358.html #
# Author: Teddysun <i@teddysun.com> #
# Github: https://github.com/shadowsocks/shadowsocks-libev #
#############################################################
[Info] Latest version: shadowsocks-libev-3.3.4
Please input password for shadowsocks-libev:
(Default password: teddysun.com): vJYEKOgxcZsgPRA4zT3L5Sdu/NCo3KWY
Please enter a port for shadowsocks-libev [1-65535]
(Default port: 18122):5405
Please select stream cipher for shadowsocks-libev:
1) aes-256-gcm
2) aes-192-gcm
3) aes-128-gcm
4) aes-256-ctr
5) aes-192-ctr
6) aes-128-ctr
7) aes-256-cfb
8) aes-192-cfb
9) aes-128-cfb
10) camellia-128-cfb
11) camellia-192-cfb
12) camellia-256-cfb
13) xchacha20-ietf-poly1305
14) chacha20-ietf-poly1305
15) chacha20-ietf
16) chacha20
17) salsa20
18) rc4-md5
Which cipher you'd select(Default: aes-256-gcm):14
---------------------------
cipher = chacha20-ietf-poly1305
---------------------------
Press any key to start...or press Ctrl+C to cancel

该脚本下载、编译、配置和运行软件。编译将需要 10 分钟左右。在脚本结束时,会显示一些确认消息:

1
2
3
4
5
Congratulations, Shadowsocks-libev server install completed!
Your Server IP : YY.YY.YY.YY
Your Server Port : 5405
Your Password : vJYEKOgxcZsgPRA4zT3L5Sdu/NCo3KWY
Your Encryption Method: chacha20-ietf-poly1305

该脚本将配置放在/etc/shadowsocks-libev/config.json. Shadowsocks可执行文件位于/usr/local/bin. 可执行文件ss-server在后台运行并侦听指定端口(5405在的示例中)。编辑配置文件:

1
vi /etc/shadowsocks-libev/config.json

根据最新建议,将模式更改为仅TCP:(之前使用tcp_only模式是为了缓解Partitioning Oracle攻击。但正如Vinicius所指出的,如果你使用了长的随机密码,那么partitioning oracle攻击就不能成功。因此也就不需要禁用UDP代理模式。开启UDP代理模式可能会让经过Shadowsocks代理的视频通话质量更佳。)

1
2
3
4
5
6
7
8
9
10
11
{
"server":"0.0.0.0",
"server_port":5405,
"password":"vJYEKOgxcZsgPRA4zT3L5Sdu/NCo3KWY",
"timeout":300,
"user":"nobody",
"method":"chacha20-ietf-poly1305",
"fast_open":false,
"nameserver":"1.0.0.1",
"mode":"tcp_only"
}

chacha20-ietf-poly1305作为加密方式。因为它是其中一种AEAD ciphers。而AEAD ciphers可以抵御来自GFW的主动探测。它同时也是Shadowsocks-libevOutlineVPN的默认加密方式。

将文件写入磁盘,然后退出编辑器。重启程序:

1
/etc/init.d/shadowsocks restart

应将看到的结果如下:

1
2
Stopping Shadowsocks-libev success
Starting Shadowsocks-libev success

从存储库安装

从常规存储库安装是最简单的方法。在DebianUbuntu上,发出命令:

1
2
apt update && apt upgrade -y
apt install shadowsocks-libev -y

Ubuntu 20.04上,这将安装Shadowsocks-Libev版本3.3.4。该服务shadowsocks-libev已经在运行程序ss-server,基于/etc/shadowsocks-libev/config.json. 编辑配置文件:

1
vi /etc/shadowsocks-libev/config.json

插入推荐值,更改端口号和密码以匹配选择的值:

1
2
3
4
5
6
7
8
{
"server":["::0","0.0.0.0"],
"server_port":5405,
"encryption_method":"chacha20-ietf-poly1305",
"password":"vJYEKOgxcZsgPRA4zT3L5Sdu/NCo3KWY",
"mode":"tcp_only",
"fast_open":false
}

将文件写入磁盘,然后退出编辑器。使用新配置重新启动服务:

1
systemctl restart shadowsocks-libev

安装Snap应用商店的方式安装Shadowsocks-Libev(官方推荐安装方式)

服务器运行Ubuntu 16.04 LTS及以上的版本,Snap已经默认安装好了。Snap已经安装在Ubuntu 20.04上。服务器运行了其他的Linux发行版,你只需跟着对应的发行版安装Snap core

Debian上,必须首先安装Snap守护程序:

1
2
apt update && apt upgrade -y
apt install snapd -y

检测服务器已经安装了需要的SnapdSnap core:

1
sudo snap install core

安装最新的Shadowsocks-libev:

1
sudo snap install shadowsocks-libev --edge

对于CentOS,详细过程可参阅https://snapcraft.io/docs/installing-snap-on-centos。另外`Snap`的使用文档亦可参考其链接。

CentOS上,在CentOS上安装Snap
Snap可用于CentOS 8CentOS 7,从7.6版本开始。它也可用于 Red Hat Enterprise Linux (RHEL) 7.6+

CentOS 8CentOS 7的软件包位于每个发行版各自的Extra Packages for Enterprise Linux (EPEL)存储库中。CentOS 8CentOS 7之间添加此存储库的说明略有不同,这就是为什么它们在下面单独列出的原因。如果需要知道运行的是哪个版本的CentOS,请输入:

1
cat /etc/centos-release.

如果还没有将CentOS存储库添加到发行版中,可以按如下方式添加它:
EPEL添加到CentOS 8可以使用以下命令将EPEL存储库添加到 CentOS 8系统:

1
2
$ sudo dnf install epel-release
$ sudo dnf upgrade

CentOS 7中添加EPEL,可以使用以下命令将EPEL存储库添加到 CentOS 7系统:

1
$ sudo yum install epel-release

EPEL缺少软件包,EPEL存储库中的软件包是根据当前RHEL版本的依赖项构建的,这些软件包由CentOS项目定期从RHEL导入。然而有时,用于构建snapd RPM的特定软件包的确切版本尚未导入到基本CentOS存储库中。这可能会导致类似于以下的丢失包错误:

1
2
Problem: package snapd-2.42.1-1.el8.x86_64 requires snapd-selinux = 2.42.1-1.el8,
but none of the providers can be installed.

在这种情况下,可以启用持续发布 (CR)存储库,而不是等待更新EPEL包。此储存库包含用于CentOS下一个版本的组件,并应满足任何缺失的版本不匹配依赖项。

CentOS安装Snapd,将EPEL存储库添加到CentOS安装后,只需安装Snapd软件包:

1
$ sudo yum install snapd

安装后,需要启用管理主 snap 通信套接字的systemd单元:

1
$ sudo systemctl enable --now snapd.socket

要启用经典/var/lib/snapd/snap快照支持,请输入以下内容以在和之间创建符号链接/snap:

1
$ sudo ln -s /var/lib/snapd/snap /snap

注销并重新登录或重新启动系统以确保正确更新 snap 的路径。

Snap现已安装并准备就绪!如果使用的是台式机,下一步是安装Snap Store应用程序。

安装snap守护程序后,安装Shadowsocks-Libev的最新稳定snap,如下所示:

1
2
snap install core
snap install shadowsocks-libev --edge

编辑配置文件:

1
vi /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json

插入推荐值,更改端口号和密码以匹配您选择的值:

1
2
3
4
5
6
7
8
{
"server":["::0","0.0.0.0"],
"server_port":5405,
"encryption_method":"chacha20-ietf-poly1305",
"password":"vJYEKOgxcZsgPRA4zT3L5Sdu/NCo3KWY",
"mode":"tcp_only",
"fast_open":false
}

将文件写入磁盘,然后退出编辑器。使用您的配置启动服务:

1
systemctl start snap.shadowsocks-libev.ss-server-daemon

以上主要摘抄内容翻译至:How to Install, Configure, and Run Shadowsocks-Libev

其中还涉及到其他关于Shadowsocks-Libev的安装方式,以及各种平台下的可运行Shadowsocks-Libev的应用软件的内容,可自行查看。

基于Snap安装运行Shadowsocks-libev

以下来自根据如何部署一台抗封锁的Shadowsocks-libev服务器中的说法。以下内容均为其中内容的摘抄。

1
2
3
4
5
启动Shadowsocks-libev:
sudo systemctl start snap.shadowsocks-libev.ss-server-daemon.service
设置`Shadowsocks-libev`开机自启动:
sudo systemctl enable snap.shadowsocks-libev.ss-server-daemon.service

维护检查运行状态和日志,以下命令可以查看Shadowsocks-libev的运行状态:

1
sudo systemctl status snap.shadowsocks-libev.ss-server-daemon.service

如果你看到绿色的Active: active (running),那么你的Shadowsocks-libev服务器就在正常的运行; 如果你看到红色的Active: failed,请用跳至如下命令journalctl -u snap.shadowsocks-libev.ss-server-daemon.service的尾部查看问题出在哪里了。

重新加载配置文件。每当你修改过配置文件后,请用如下命令重启Shadowsocks-libev以加载修改后的文件:

1
sudo systemctl restart snap.shadowsocks-libev.ss-server-daemon.service

另外配置备用端口来缓解端口封锁,截止2021年11月7日,我们收到零星的用户报告按此教程配置的服务器仍遭到了端口封锁。因为报告的封锁方式均为端口封锁,而非IP封锁,我们在此分享一个用备用端口来缓解端口括封锁的方法。

你可以在服务器上使用以下命令来将服务器从12000到12010端口接收到的TCPUDP流量全部转发到8388端口:

1
2
sudo iptables -t nat -A PREROUTING -p tcp --dport 12000:12010 -j REDIRECT --to-port 8388
sudo iptables -t nat -A PREROUTING -p udp --dport 12000:12010 -j REDIRECT --to-port 8388

记得将12000:12010替换成一个只有你自己知道的端口号,或者端口区间(我们建议从1024到65535之间任选几个端口或一个区间)。将8388端口替换成你的Shadowsocks服务端实际使用的端口。这样一来,如果你使用的12000端口遭到了封锁,那么你无须更换IP,或者登录服务器修改配置文件。而是只需要在客户端(电脑或者手机上)将端口从12000改为12001就可以继续使用了。

如果你配置正确,那么以下命令的输出应该类似于:

1
2
3
4
5
6
sudo iptables -t nat -L PREROUTING -nv --line-number
>>>
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REDIRECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpts:12000:12010 redir ports 8388
2 0 0 REDIRECT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpts:12000:12010 redir ports 8388

注意任何1024到65535的端口都可以作为备用端口。即使使用ephermeral端口(/proc/sys/net/ipv4/ip_local_port_range)作为配用端口也不会干扰服务器正常的向外连接。

在此篇关于如何部署一台抗封锁的Shadowsocks-libev服务器的文章中,有许多当下值得探究的问题以及许多道友一同困惑的问题可在此讨论获取一定解答。

目前使用的还是基于一键命令式的Shadowsocks-libev应用在CentOS 7上,其中通过升级内核到4.9以上以配合BBR的使用。若是这个方法失效并且不可再稳定使用,会启用以上积累的知识:安装Snap应用商店安装配置Shadowsocks-libev用别的加密方式(chacha20-ietf-poly1305)以及强密码(命令行openssl rand -base64 16生成)配置防火墙通过改端口检查被封的原因通过更换IP检查被封的原因

备份一键安装脚本专用

shadowsocks-libev snap一键安装脚本,使用的UFW防火墙

来源摘抄地址:lanlandezei/shadowsocks-libev

支持系统: debian9+ ubuntu16+ centos7.5+ fedora

只支持这两种加密协议aes-256-gcmchacha20-ietf-poly1305,支持AES就用aes-256-gcm,不支持就用chacha20-ietf-poly1305,其他加密方式自行修改配置文件。想长久稳定使用,请务必使用UFW防火墙添加客户端使用的IP,和SS服务的端口,选择5会安装UFW防火墙,安装后默认只开放22端口。

1
2
3
4
5
6
7
8
9
10
11
12
安装脚本
wget https://raw.githubusercontent.com/lanlandezei/shadowsocks-libev/main/install.sh && chmod +x install.sh && bash install.sh
请选择执行的操作
1.选择安装的加密协议:aes-256-gcm
2.选择安装的加密协议:chacha20-ietf-poly1305
3.检查SS运行状态
4.重启SS
5.防火墙添加放行IP和端口(重要)
—————————————————————————
配置文件路径:/var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json
修改配置文件请重启SS
选择执行的操作1-5:

防火墙添加放行IP和端口:

1
2
3
4
5
6
7
8
9
打开ip138.com或者百度显示的IP填入
只能填入以下3种格式,<<示例>>
--------------------------
单个IP:114.114.114.114
IP段:114.114.114.0/24
更大范围:114.114.0.0/16
--------------------------
请输入添加放行防火墙的IP或IP段: #客户端公网IP
请输入放行端口: #SS服务端的端口

如何部署一台抗封锁的Shadowsocks-libev服务器

本段文字内容基于如何部署一台抗封锁的Shadowsocks-libev服务器 。若是在下方的配置当中出现问题,可在此篇文章中查看评论区或者是解答区寻求帮助。

本次内容基于Debian的服务器上。因为以上的一键加BBR的形式已经不管用了,经常性失效,没办法只好使用新的方式了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
安装snapd,Debian 9及以上,使用命令:
sudo apt update
sudo apt install snapd
sudo snap install core
下载Core命令:
sudo snap install core
安装Shadowsocks-libev:
sudo snap install shadowsocks-libev --edge
配置文件,复制以下内容,粘贴到终端即可:
{
"server":["::0","0.0.0.0"],
"server_port":8388,
"method":"chacha20-ietf-poly1305",
"password":"ExamplePassword",
"mode":"tcp_and_udp",
"fast_open":false
}
其中,可用的命令:
"server_port":echo $((1024 + $RANDOM))
"password":openssl rand -base64 16
注意:一定要记好端口号和密码!
打开Shadowsocks-libev默认的配置文件:
sudo nano /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json
注意:将上方替换过密码的配置信息复制粘贴到配置文件后, 按Ctrl + x退出。 退出时,文本编辑器将问你"Save modified buffer?",请输入y然后按回车键。
使用ufw来管理Shadowsocks服务器的防火墙。
在基于Debian的服务器上,可以通过如下命令安装ufw:
sudo apt update && sudo apt install -y ufw
如果你的server_port用了其他的值,请对以下命令作相应的修改:
sudo ufw allow ssh
sudo ufw allow 8388
现在我们启动ufw:
sudo ufw enable
注意:启动时如果弹出Command may disrupt existing ssh connections. Proceed with operation (y|n)?,请输入y并按回车键。
最后,用:
sudo ufw status
检查一下你的配置是否和下面的一样:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
8388 ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
8388 (v6) ALLOW Anywhere (v6)
运行启动Shadowsocks-libev:
sudo systemctl start snap.shadowsocks-libev.ss-server-daemon.service
并且设置Shadowsocks-libev开机自启动:
sudo systemctl enable snap.shadowsocks-libev.ss-server-daemon.service
维护检查运行状态和日志,以下命令可以查看Shadowsocks-libev的运行状态:
sudo systemctl status snap.shadowsocks-libev.ss-server-daemon.service
注意:如果你看到绿色的Active: active (running),那么你的Shadowsocks-libev服务器就在正常的运行; 如果你看到红色的Active: failed,请用跳至如下命令journalctl -u snap.shadowsocks-libev.ss-server-daemon.service的尾部查看问题出在哪里了!
重新加载配置文件,每当你修改过配置文件后,请用如下命令重启Shadowsocks-libev以加载修改后的文件:
sudo systemctl restart snap.shadowsocks-libev.ss-server-daemon.service
配置备用端口来缓解端口封锁,按此教程配置的服务器仍遭到了端口封锁,
而非IP封锁,在此分享一个用备用端口来缓解端口括封锁的方法。可以在服务器上使用以下命令来将服务器从12000到12010端口接收到的TCP和UDP流量全部转发到8388端口:
sudo iptables -t nat -A PREROUTING -p tcp --dport 12000:12010 -j REDIRECT --to-port 8388
sudo iptables -t nat -A PREROUTING -p udp --dport 12000:12010 -j REDIRECT --to-port 8388
记得:
将12000:12010替换成一个只有你自己知道的端口号,或者端口区间(建议从1024到65535之间任选几个端口或一个区间)。将8388端口替换成你的Shadowsocks服务端实际使用的端口。这样一来,如果使用的12000端口遭到了封锁,那么无须更换IP,或者登录服务器修改配置文件。而是只需要在客户端(电脑或者手机上)将端口从12000改为12001就可以继续使用了。如果你配置正确,那么以下命令的输出应该类似于:
sudo iptables -t nat -L PREROUTING -nv --line-number
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REDIRECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpts:12000:12010 redir ports 8388
2 0 0 REDIRECT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpts:12000:12010 redir ports 8388
注意:任何1024到65535的端口都可以作为备用端口。即使使用ephermeral端口(/proc/sys/net/ipv4/ip_local_port_range)作为配用端口也不会干扰服务器正常的向外连接。

各系统下载snapcore地址

若是这个方式也失效了,只好启用伪装nginx+ws+tls之类的方式了。可参考文章2021最新在Debian系统基于nginx搭建v2ray服务端配置vmess+tls+websocket详细教程(图文)

如今遇到的新问题是:在用到一定时候可在流量状态下正常使用,但是在Wi-Fi状态下不能使用了。除了本身网络波动的原因之外,经过在网上得到的一些解答估计是与运营商的一些策略有关。另外,平时将Shadowsocks更新到最新版本或许是个不错的选择,能够避免一些现存的问题。

若使用这个脚本期间遇到PC端在Wi-Fi情况下无法正常使用的问题:先使用移动端的流量运行(一般都是可以在移动端流量下正常使用的),继而再在PC端的Wi-Fi状态下尝试使用,会发现此时已经可以正常使用了。

关于V2Ray的收藏链接(备用取代SS)

V2RayU GitHub:https://github.com/yanue/V2rayU/releases

V2Ray高级技巧:流量伪装

V2Ray GitHub: GitHub地址

……..

关于trojan翻墙工具备用(必要时用于取代SS)

………

---------------本文终---------------

文章作者:刘俊

最后更新:2022年05月31日 - 15:05

许可协议: 转载请保留原文链接及作者。