最近因为需求想自己搭建一个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
…
其中注意的细节是:
开通服务器时,当出现了ip,不要立马去ping或者用xshell去连接,再等5分钟之后,有个缓冲时间。
注意加密算法的对齐填写。
后续补充…
简单说说体验吧,用的是在日本的服务器,经过上面的参考之后,换了好几台服务器才有了现在的暂时稳定…另外要补充一下:如果在使用命令行ssh root@<ip>
不通时(即没有提示要求输入密码登陆的出现的其他情况,比如超时),直接重新另外开一台就是了,不用再花多余的时间去测试了。
我一共换了好几台才有3台是可以用的…心累…可能是我太急了??有可能。
补充:目前上YouTube测试最高连接可以达到25M/s…超级快的哈哈哈哈~~估计还可以上升~~~美滋滋~~
补充说明
最近添加了多个用户的设置,即添加了多个独立端口以及独立密码,均需要将端口添加至服务器端口列表才行,并且还要注意添加tcp/udp协议,这很重要。
SS的以及BBR的相关的命令记录
- SS:
|
|
关于更多的命令操作以及下载SSR可查看:如何查看修改ss服务器的端口密码、自建ss服务器教程
更多的SS版本选择:Shadowsocks SS一键4合一安装包(SS搭建架设)
BBR:
|
|
在系统
CentOS 8
中已经自带BBR了!!可用命令lsmod | grep bbr
查看。
另外在测试下,其实只要本地的网络速度快,用不用BBR的情况下都是可接受的,都是不影响正常使用的,而且发现最近安装完BBR之后,SS全部不能正常使用了…无奈之下只能重新开一台又一台,难受…所以索性不用了。
关于ss搭建Socks5代理
可参考:
一般来说,在VPS上搭建完SS应用之后,就能直接使用Socks5代理了,一般的账号和端口即为:
127.0.0.1
、1080
(在ss打开并且行得通的情况下)。当然这些均可修改,具体可查看上方的两个链接。
关于Vutrl里的Snapshot功能
这个可以保存某个VPS服务器在此时此刻的状态,在之后创建的新的服务器之后可直接恢复即可。
更新
新型墙的阻断方式:ICMP阻断和TCP阻断
ping
得通(ICMP协议),但是ssh
不通(TCP协议),即为TCP阻断。
解决方案:重新开一台主机…
另外,若是ssh
可行,而ping
不通,则可选择重新选择端口号试试。
添加福利网址
- 具体可见:https://freeid.xyz/
添加BBRplus链接
|
|
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
加速。第一,是因为它是经过Google多次验证调试才得以公开示众的,可信度及可靠性高,减少了许多的不确定性,所以较稳定;第二,关于那些魔改的,和plus之类的还只是属于那些“小打小闹”的层面,并且达不到严格验证,而且有些有失共享TCP
的公平性,意义上有些损人利已的意味,这点我做不到能够完全接受。以上。
Host key verification failed.认证失败解决方法
当新开了一台服务器使用ssh root@108.xx.xxx.248
时出现以下错误:
|
|
解决方法:使用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
中使用上方的命令已经失效了。下方是新的命令(亲测有效):
|
|
具体的图文教程可参考: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
上。命令如下:
|
|
具体的图文链接来源: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攻击。首先生成一个随机端口号,如下所示:
|
|
shell
函数 RANDOM
提供了一个介于 0 和 32767 之间的伪随机整数,因此在计算算术表达式后,将得到一个介于 1024 和 33791 之间的端口号。另外,根据如何部署一台抗封锁的Shadowsocks-libev服务器中的说法可以考虑将server_port
的值改为 1024 到 65535 之间的任意整数。在以下其余部分的示例中,将使用以下端口为例:
|
|
同时生成一个随机密码,用以下命令在终端生成一个强密码:
|
|
该openssl rand -base64
函数提供一个随机数,以base-64
表示法表示。由于参数24,它将基于 24 字节或 192 位。结果将有 32 个 base-64
字符。在本页其余部分的示例中,将使用以下密码为例:
|
|
通过Snap
安装的Shadowsocks-libev
默认的配置文件:
|
|
将上方替换过密码的配置信息复制粘贴到配置文件后,按Ctrl + x
退出。 退出时,文本编辑器将问你"Save modified buffer?"
,请输入y
然后按回车键。
打开防火墙
使用ufw
来管理Shadowsocks
服务器的防火墙。
在基于Debian
的服务器上,可以通过如下命令安装ufw
:
|
|
然后开放有关ssh
和Shadowsocks-libev
的端口。请注意,以下命令假设在/var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json
中的server_port
的值为8388。 如果你的server_port
用了其他的值,请对以下命令作相应的修改:
|
|
现在我启动ufw
:
|
|
启动时如果弹出Command may disrupt existing ssh connections. Proceed with operation (y|n)?
,请输入y
并按回车键。
最后,请用sudo ufw status
检查一下你的配置是否和下面的一样:
|
|
在How to Install, Configure, and Run Shadowsocks-Libev中的翻译内容来看,如果在服务器上安装了防火墙,则需要打开一个端口以允许Shadowsocks-Libev
接收客户端输入。选择Shadowsocks-Libev
将侦听的端口。为TCP和可选的UDP打开该端口。
如果使用firewalld,打开端口的命令将如下所示:
|
|
以下是nftables
用户的相同命令模板,假设您正在使用该表inet filter
并且端口是5405:
|
|
可以为iptables
用户创建类似的规则。同样,假设有一个删除输入的策略,除非它被明确接受,并且假设之前已经安装并配置了iptables-persistent
包。
|
|
对于ufwfor
前端的用户iptables
,等效的命令是:
|
|
使用 Teddysun 脚本安装
一步安装、配置和运行Shadowsocks-Libev
的简单方法是使用Teddysun
脚本。在 CentOS
平台上,通常必须先安装wget
,然后下载并运行脚本shadowsocks-libev.sh
:
|
|
在Debian
和Ubuntu
上,该wget
实用程序通常已经安装,因此只需下载并运行脚本shadowsocks-libev-debian.sh
:
|
|
运行脚本将会提示一些问题:
|
|
该脚本下载、编译、配置和运行软件。编译将需要 10 分钟左右。在脚本结束时,会显示一些确认消息:
|
|
该脚本将配置放在/etc/shadowsocks-libev/config.json. Shadowsocks
可执行文件位于/usr/local/bin
. 可执行文件ss-server
在后台运行并侦听指定端口(5405在的示例中)。编辑配置文件:
|
|
根据最新建议,将模式更改为仅TCP:(之前使用tcp_only
模式是为了缓解Partitioning Oracle攻击。但正如Vinicius所指出的,如果你使用了长的随机密码,那么partitioning oracle攻击就不能成功。因此也就不需要禁用UDP代理模式。开启UDP代理模式可能会让经过Shadowsocks代理的视频通话质量更佳。)
|
|
用
chacha20-ietf-poly1305
作为加密方式。因为它是其中一种AEAD ciphers
。而AEAD ciphers
可以抵御来自GFW的主动探测。它同时也是Shadowsocks-libev
及OutlineVPN
的默认加密方式。
将文件写入磁盘,然后退出编辑器。重启程序:
|
|
应将看到的结果如下:
|
|
从存储库安装
从常规存储库安装是最简单的方法。在Debian
或Ubuntu
上,发出命令:
|
|
在Ubuntu 20.04
上,这将安装Shadowsocks-Libev
版本3.3.4
。该服务shadowsocks-libev
已经在运行程序ss-server
,基于/etc/shadowsocks-libev/config.json
. 编辑配置文件:
|
|
插入推荐值,更改端口号和密码以匹配选择的值:
|
|
将文件写入磁盘,然后退出编辑器。使用新配置重新启动服务:
|
|
安装Snap应用商店的方式安装Shadowsocks-Libev
(官方推荐安装方式)
服务器运行
Ubuntu 16.04 LTS
及以上的版本,Snap
已经默认安装好了。Snap
已经安装在Ubuntu 20.04
上。服务器运行了其他的Linux
发行版,你只需跟着对应的发行版安装Snap core。
在Debian
上,必须首先安装Snap
守护程序:
|
|
检测服务器已经安装了需要的Snapd
和Snap core
:
|
|
安装最新的Shadowsocks-libev
:
|
|
对于
CentOS
,详细过程可参阅https://snapcraft.io/docs/installing-snap-on-centos。另外`Snap`的使用文档亦可参考其链接。
在CentOS
上,在CentOS
上安装Snap
:Snap
可用于CentOS 8
和CentOS 7
,从7.6版本开始。它也可用于 Red Hat Enterprise Linux (RHEL) 7.6+
。
CentOS 8
和CentOS 7
的软件包位于每个发行版各自的Extra Packages for Enterprise Linux (EPEL)
存储库中。CentOS 8
和CentOS 7
之间添加此存储库的说明略有不同,这就是为什么它们在下面单独列出的原因。如果需要知道运行的是哪个版本的CentOS
,请输入:
|
|
如果还没有将CentOS
存储库添加到发行版中,可以按如下方式添加它:
将EPEL
添加到CentOS 8
可以使用以下命令将EPEL
存储库添加到 CentOS 8
系统:
|
|
在CentOS 7
中添加EPEL
,可以使用以下命令将EPEL
存储库添加到 CentOS 7
系统:
|
|
EPEL
缺少软件包,EPEL
存储库中的软件包是根据当前RHEL
版本的依赖项构建的,这些软件包由CentOS
项目定期从RHEL
导入。然而有时,用于构建snapd RPM
的特定软件包的确切版本尚未导入到基本CentOS
存储库中。这可能会导致类似于以下的丢失包错误:
|
|
在这种情况下,可以启用持续发布 (CR)存储库,而不是等待更新EPEL
包。此储存库包含用于CentOS
下一个版本的组件,并应满足任何缺失的版本不匹配依赖项。
CentOS
安装Snapd
,将EPEL
存储库添加到CentOS
安装后,只需安装Snapd
软件包:
|
|
安装后,需要启用管理主 snap 通信套接字的systemd单元:
|
|
要启用经典/var/lib/snapd/snap快照支持,请输入以下内容以在和之间创建符号链接/snap:
|
|
注销并重新登录或重新启动系统以确保正确更新 snap 的路径。
Snap
现已安装并准备就绪!如果使用的是台式机,下一步是安装Snap Store
应用程序。
安装snap
守护程序后,安装Shadowsocks-Libev
的最新稳定snap
,如下所示:
|
|
编辑配置文件:
|
|
插入推荐值,更改端口号和密码以匹配您选择的值:
|
|
将文件写入磁盘,然后退出编辑器。使用您的配置启动服务:
|
|
以上主要摘抄内容翻译至:How to Install, Configure, and Run Shadowsocks-Libev
其中还涉及到其他关于Shadowsocks-Libev
的安装方式,以及各种平台下的可运行Shadowsocks-Libev
的应用软件的内容,可自行查看。
基于Snap
安装运行Shadowsocks-libev
以下来自根据如何部署一台抗封锁的Shadowsocks-libev服务器中的说法。以下内容均为其中内容的摘抄。
|
|
维护检查运行状态和日志,以下命令可以查看Shadowsocks-libev的运行状态:
|
|
如果你看到绿色的
Active: active (running)
,那么你的Shadowsocks-libev
服务器就在正常的运行; 如果你看到红色的Active: failed
,请用跳至如下命令journalctl -u snap.shadowsocks-libev.ss-server-daemon.service
的尾部查看问题出在哪里了。
重新加载配置文件。每当你修改过配置文件后,请用如下命令重启Shadowsocks-libev
以加载修改后的文件:
|
|
另外配置备用端口来缓解端口封锁,截止2021年11月7日,我们收到零星的用户报告按此教程配置的服务器仍遭到了端口封锁。因为报告的封锁方式均为端口封锁,而非IP封锁,我们在此分享一个用备用端口来缓解端口括封锁的方法。
你可以在服务器上使用以下命令来将服务器从12000到12010端口接收到的TCP
和UDP
流量全部转发到8388端口:
|
|
记得将12000:12010替换成一个只有你自己知道的端口号,或者端口区间(我们建议从1024到65535之间任选几个端口或一个区间)。将8388端口替换成你的Shadowsocks
服务端实际使用的端口。这样一来,如果你使用的12000端口遭到了封锁,那么你无须更换IP,或者登录服务器修改配置文件。而是只需要在客户端(电脑或者手机上)将端口从12000改为12001就可以继续使用了。
如果你配置正确,那么以下命令的输出应该类似于:
|
|
注意任何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-gcm
、chacha20-ietf-poly1305
,支持AES
就用aes-256-gcm
,不支持就用chacha20-ietf-poly1305
,其他加密方式自行修改配置文件。想长久稳定使用,请务必使用UFW防火墙添加客户端使用的IP,和SS服务的端口,选择5会安装UFW防火墙,安装后默认只开放22端口。
|
|
防火墙添加放行IP和端口:
|
|
如何部署一台抗封锁的Shadowsocks-libev服务器
本段文字内容基于如何部署一台抗封锁的Shadowsocks-libev服务器 。若是在下方的配置当中出现问题,可在此篇文章中查看评论区或者是解答区寻求帮助。
本次内容基于Debian
的服务器上。因为以上的一键加BBR
的形式已经不管用了,经常性失效,没办法只好使用新的方式了。
|
|
各系统下载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 GitHub: GitHub地址
……..
关于trojan翻墙工具备用(必要时用于取代SS)
- trojan GitHub:trojan GitHub地址
………