[TOC]
本文仅仅供学习参考使用,无任何盈利性质,单纯技术分享,不承担任何法律责任,所有使用该技术的人员引发的后果自行承担相应后果
本文仅分享科学上网技术,用来学习计算机知识,查询资料,比如医学、计算机、绘画等各领域学习使用
请勿私自搭建进行违法犯罪活动
一、准备工作
1、vps厂商选择
搭建一个科学上网服务器,那么必然是需要一个云服务器作为物理基础,才能进行搭建,这里就应用Github上mmhunter3515大佬整理的VPS厂商,整理的很详细,在这里就列举几个
- Vultr:https://www.vultr.com/
- Lightnode:ttps://www.lightnode.com/
- Google:https://cloud.google.com/
- AWS:https://aws.amazon.com/
2、注册账号与充值
本文选择vultr厂商,这个厂商的数据中心较多,于是使用的人也就很多,很多人选择这个厂商的服务器搭建网站之类,于是出现一个就封锁一个ip,就造成了vultr厂商的很多ip被封了,所以,在创建实例的时候,就会出现很有可能无法连接,因为被封了。本文只是为了演示技术,就还是选择vultr厂商(其实是没有钱去其他网站充值了,也就这个网站还有几刀可以嚯嚯)
下面是vultr的主界面

首先需要一个账号,点击右上角的Sign up
自行注册一个账户,推荐使用Gmail邮箱
注:关于注册账号和充值部分,厂家可能会不定期给一些优惠券或者是返还之类,这个就需要大家执行去翻阅查找资料了

注册完成后,需要充值,最低需要$10
,支持支付宝
充值

二、开始创建ECS实例
1、部署服务器
选择Products
的Compute
界面,可以看到Deploy Server

创建实例

关闭自动备份后,价格就降低几美元(一方面省钱,另外一方面其实也没有那个必要)

然后点击Configure Software
进入到镜像选择的界面,系统镜像选择,一般选择CentOS
,版本的话,选择最新版本就好


点击开始部署后,稍等两秒就会自动跳转到实例列表界面,创建实力耗时约1min

2、测试ip连通性
当实例创建完成后,会自动分配一个ip,点击实例名称,进入详细界面,就可以看到当前实例的root账户和密码

复制ip地址,如果是macos
电脑或者是linux
打开终端,如果是windows电脑,就打开cmd
,使用ping
命令测试一下能否ping的通,如下图,就表示ping的通,可以ssh连接

如果你创建的实例,分配的ip地址,无法ping通,那么就销毁当前实例,再重新创建一个实例,更换国家或者地区,多尝试几次,总归是可以创建成功的。
3、ssh登陆实例
如果你的电脑是macos
或者是linux
,那么直接使用终端就可以直接进行ssh登陆了。如果你的电脑是windows
,那么也能够使用cmd进行ssh登陆,或者是安装像xshell
、PuTTY
、SecureCRT
、MobaXterm
这样的ssh工具(请自行下载和安装)
4、安装必要软件和镜像库
执行以下命令,安装相关软件,以及epel库
1
2
3
4
5
6
|
sudo yum install -y epel-release
sudo yum clean all
sudo yum makecache
sudo yum update -y
sudo yum upgrade
sudo yum install -y wget vim git curl zlib* gcc gcc-c++ automake autoconf libtool make
|
三、一键部署脚本
1、下载并执行管理脚本
CentOS/Debian/Ubuntu ShadowsocksR一键部署管理脚本,执行命令
1
2
3
4
5
6
|
# 下载一键安装脚本
wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocksR.sh
# 增加可执行权限
chmod +x shadowsocksR.sh
# 开始执行
./shadowsocksR.sh 2>&1 | tee shadowsocksR.log
|
设置密码,直接回车,默认密码即可

设置端口,直接回车,默认端口即可

加密方式,直接回车,使用默认的加密协议即可

设置协议,直接回车,默认协议即可

设定混淆方式,default 为默认混淆,直接回车,默认即可

安装成功,按任意键,自动启动

然后会自动安装一些脚本

最终,安装完成,会显示刚才所配置的信息,将下面的配置信息保存好,以便客户端使用。

安装过后如果想要修改,运行如下相关命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# 启动
/etc/init.d/shadowsocks start
# 停止
/etc/init.d/shadowsocks stop
# 重启
/etc/init.d/shadowsocks restart
# 状态
/etc/init.d/shadowsocks status
# 配置文件路径
/etc/shadowsocks.json # 修改文件用vi 或者 vim命令,使用方法百度
# 日志文件路径
/var/log/shadowsocks.log
# 安装路径
/usr/local/shadowsocks/shadowsoks
# 卸载
./shadowsocksR.sh uninstall
|
2、查看状态并启动
执行命令/etc/init.d/shadowsocks status
查看状态
1
2
|
root@vultr:~# /etc/init.d/shadowsocks status
ShadowsocksR is stopped
|
执行命令/etc/init.d/shadowsocks start
启动服务
1
2
3
4
5
6
7
8
9
10
11
12
13
|
root@vultr:~# /etc/init.d/shadowsocks start
Traceback (most recent call last):
File "/usr/local/shadowsocks/server.py", line 32, in <module>
from shadowsocks import shell, daemon, eventloop, tcprelay, udprelay, \
File "/usr/local/shadowsocks/../shadowsocks/shell.py", line 26, in <module>
from shadowsocks.common import to_bytes, to_str, IPNetwork, PortRange
File "/usr/local/shadowsocks/../shadowsocks/common.py", line 27, in <module>
from shadowsocks import lru_cache
File "/usr/local/shadowsocks/../shadowsocks/lru_cache.py", line 44, in <module>
class LRUCache(collections.MutableMapping):
^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'collections' has no attribute 'MutableMapping'
Starting ShadowsocksR failed
|
在启动时候出现报错,根据报错信息查看,是由于python的collections库没有MutableMapping属性,这是由于在python3中collections的模块有所变动,需要把
1
|
collections.MutableMapping
|
变成
1
|
collections.abc.MutableMapping
|
根据报错信息可以明确看到,是由于/usr/local/shadowsocks/lru_cache.py
文件中,第44行报错,那么就修改这个位置,增加abc
,修改后如下图,然后保存并退出

再次执行命令/etc/init.d/shadowsocks start
启动服务,此时启动成功,报错信息消失
1
2
3
4
5
6
|
root@vultr:~# /etc/init.d/shadowsocks start
IPv6 support
2025-02-17 08:31:52 INFO util.py:94 loading libcrypto from libcrypto.so.3
2025-02-17 08:31:52 INFO shell.py:74 ShadowsocksR SSRR 3.2.2 2018-05-22
started
Starting ShadowsocksR success
|
再次执行命令/etc/init.d/shadowsocks status
查看状态,状态正常
1
2
|
root@vultr:~# /etc/init.d/shadowsocks status
ShadowsocksR (pid 50662) is running...
|
3、关闭/放行防火墙
在服务启动之后,系统防火墙是启动的状态,并未放行其对应的端口号,需要关闭防火墙,或者是在防火墙中放行端口,这样客户端才能够访问,否则无法使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# 查看防火墙状态
root@vultr:~# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
Active: active (running) since Mon 2025-02-17 09:06:05 UTC; 16s ago
Invocation: 80def4cc4c7442b0b4209d49a4a12d4b
Docs: man:firewalld(1)
Main PID: 50936 (firewalld)
Tasks: 2 (limit: 10802)
Memory: 25.4M (peak: 27M)
CPU: 211ms
CGroup: /system.slice/firewalld.service
└─50936 /usr/bin/python3 -sP /usr/sbin/firewalld --nofork --nopid
Feb 17 09:06:05 vultr.guest systemd[1]: Starting firewalld.service - firewalld - dynamic firewall daemon...
Feb 17 09:06:05 vultr.guest systemd[1]: Started firewalld.service - firewalld - dynamic firewall daemon.
|
1
2
|
# 查看防火墙已放行的端口,这里是空的
root@vultr:~# firewall-cmd --list-ports
|
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
|
# 方法一
# 安装服务管理脚本时,创建的端口是16782,这里在防火墙中为该端口永久放行
root@vultr:~# firewall-cmd --zone=public --add-port=16782/tcp --permanent
success
# 防火墙配置完成后,重新加载
root@vultr:~# sudo firewall-cmd --reload
success
# 再次查看防火墙放行端口
root@vultr:~# sudo firewall-cmd --list-all
public (default, active)
target: default
ingress-priority: 0
egress-priority: 0
icmp-block-inversion: no
interfaces: enp1s0
sources:
services: cockpit dhcpv6-client ssh
ports: 16782/tcp # 已放行的端口
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 方法二
# 关闭防火墙
root@vultr:~# systemctl stop firewalld
root@vultr:~#
# 查看防火墙状态
root@vultr:~# systemctl status firewalld
○ firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
Active: inactive (dead) since Mon 2025-02-17 09:14:30 UTC; 33s ago
Duration: 8min 25.285s
Invocation: 80def4cc4c7442b0b4209d49a4a12d4b
Docs: man:firewalld(1)
Process: 50936 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 50936 (code=exited, status=0/SUCCESS)
Mem peak: 29.3M
CPU: 390ms
Feb 17 09:06:05 vultr.guest systemd[1]: Starting firewalld.service - firewalld - dynamic firewall daemon...
Feb 17 09:06:05 vultr.guest systemd[1]: Started firewalld.service - firewalld - dynamic firewall daemon.
Feb 17 09:14:30 vultr.guest systemd[1]: Stopping firewalld.service - firewalld - dynamic firewall daemon...
Feb 17 09:14:30 vultr.guest systemd[1]: firewalld.service: Deactivated successfully.
Feb 17 09:14:30 vultr.guest systemd[1]: Stopped firewalld.service - firewalld - dynamic firewall daemon.
|
4、下载客户端
Mac:https://github.com/shadowsocksr-backup/ShadowsocksX-NG/releases
Win:https://github.com/shadowsocksr-backup/shadowsocksr-csharp/releases
iPhone:到商店里安装FirstWingy、potatso lite。(搞一个美国appleID)
本人电脑是MacOS,就以Mac为例,下载ShadowsocksX-NG-R8.dmg
,打开,然后双击绿色的ShadowsocksX-NG-R8

双击完后,会提示当前软件不安全,此时需要打开电脑设置-Privacy & Scurity,在最下面会出现这个软件的信息,然后点击Open Anyway
,输入电脑密码就可以打开

打开完成后,电脑的右上角图标就会出现一个小飞机图标,这个就是shadowsocks

然后点击小飞机–Servers–Server Preferences



啟動成功後,這裡以訪問Google和Youtube為例,


使用搜索一個世界上最受歡迎的網站

訪問全球最大同性交友網站Github
