科学上网
1. 创建实例
登录AWS控住台,创建EC2实例,设置实例
- 定制服务器类型: Ubuntu Server
- 选择实例类型: 默认免费即可
- 配置实例:默认
- 添加存储:默认
- 配置安全组:先配置所有流量和端口开放
- 生成密钥对:创建新密钥对,填写密钥对名称(如
ufresh2011
),下载密钥对。(下载下来是 私有密钥文件 .pem文件)。连接远程服务器时,需要再密钥文件下的文件目录里操作。 - 创建账单警报:接受账单警报,自动监控免费套餐是否超额,将要超额会向你的邮箱发邮件。
- 编辑入站规则,开通22端口(ssh)和8388端口(ssserver)
网络与安全 -> 安全组 -> 操作 -> 编辑入站规则1
2
3类型 协议 端口范围 来源
SSH TCP 22 自定义 0.0.0.0/0
自定义TCP规则 TCP 8388 自定义 0.0.0.0/0
2. 登录服务器
定制完成后,可以远程登录,在实例上右击,点击连接1
2chomd 400 xxx.pem
ssh -i "xxx.pem" xxx.com
3. 安装ss
1 | 获取root权限 |
配置shadowsocks1
2
3
4
5
6
7
8
9
10
11
12
13
14
15mkdir /etc/shadowsocks
vim /etc/shadowsocks/config.json
config.json文件内容
{
"server":"0.0.0.0",
"server_port":8388,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"///",
"timeout":300,
"method":"aes-256-cfb",
"fast_open":false,
"workers": 1
}
4. 启动shadowsocks
1 | 启动 |
启动时候会有报错
- 升级openssl导致无法使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25INFO: loading config from /etc/shadowsocks/config.json
2019-11-16 12:49:16 INFO loading libcrypto from libcrypto.so.1.1
Traceback (most recent call last):
File "/usr/local/bin/ssserver", line 11, in <module>
load_entry_point('shadowsocks==2.8.2', 'console_scripts', 'ssserver')()
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/server.py", line 34, in main
config = shell.get_config(False)
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/shell.py", line 262, in get_config
check_config(config, is_local)
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/shell.py", line 124, in check_config
encrypt.try_cipher(config['password'], config['method'])
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/encrypt.py", line 44, in try_cipher
Encryptor(key, method)
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/encrypt.py", line 83, in __init__
random_string(self._method_info[1]))
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/encrypt.py", line 109, in get_cipher
return m[2](method, key, iv, op)
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/crypto/openssl.py", line 76, in __init__
load_openssl()
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/crypto/openssl.py", line 52, in load_openssl
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
File "/usr/lib/python3.6/ctypes/__init__.py", line 361, in __getattr__
func = self.__getitem__(name)
File "/usr/lib/python3.6/ctypes/__init__.py", line 366, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
定位到/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py文件:
修改52,111行处的EVP_CIPHER_CTX_cleanup为EVP_CIPHER_CTX_reset 重启服务
5. 电脑上安装shadowsock
服务器地址:查看正在运行中的实例,找到公有ip
服务器端口:8388
密码:///
加密: aes-2560-cfb
结束!
6. 原理
在很久以前,访问各种网站都是简单而直接的,用户的请求发送到服务器,服务器直接将信息反馈给用户。有一天,GFW出现了,每当用户获取信息,都经过GFW,GFW将一些内容过滤掉,当用户触发GFW的过滤规则时,就会收到Connection Reset这样的响应内容,而无法接收到正常的内容,
ss利用境外服务器代理的方法绕过GFW的过滤。
- 首先用户和境外服务器基于ssh建立起一条加密的通道
- 用户通过建立起的隧道进行代理,通过ssh server向真实的服务发起请求
- 返回内容再通过创建好的隧道返回给用户。