使用Terraform构建Shadowsocks服务器,以便从中国国内访问Google和Twitter
背景 – 叙述所在的环境、条件或上下文的部分。
我最近有计划去中国待大约一个月。在这期间,我需要继续进行在线会议,但是在中国我无法直接访问谷歌、推特等网站。换句话说,我无法通过谷歌 Meet 进行在线会议,真是麻烦。
使用Shadowsocks这个工具,可以绕过网络限制,为了避免困扰,事先搭建一个服务器。
因为不想进行手动操作的基础设施管理,所以我会使用 Terraform 进行定义。
首先由结论开始
以下是 Terraform 的定义。只需更改配置即可部署。
影子套索?
Shadowsocks 是一种快速的隧道代理工具,可以帮助您绕过防火墙。
简单来说,它是用于绕过防火墙的代理服务器。
根据官方网站的说明,具有如下特点。
-
- とても高速
-
- 様々な暗号化アルゴリズムを選択できる
-
- CPU&帯域の使用量が低い
- クロスプラットフォーム
用法(服务器构建)
前提是一个必要的条件。
假设已经安装了 Terraform 命令,并已经设置了身份验证信息。
获得代码
首先从GitHub获取代码。
$ git clone https://github.com/MOCA-ORG/shadowsocks.git
编辑设置文件
请按照README.md的说明准备配置文件。
cp sample.tfbackend ./terraform/production.tfbackend
cp sample.tfvars ./terraform/production.tfvars
production.tfbackend是一个指定Terraform状态文件保存位置的文件。
请根据以下形式,指定适当的区域和存储桶名称,并指定具有写入权限的S3存储桶。
bucket = "name-of-bucket"
key = "shadowsocks.tfstate"
region = "ap-northeast-1"
production.tfvars 是设置基础设施配置的文件。
# EC2にSSH接続するために普段使用しているキーペアの名前を指定します。
key_name=""
# サーバーを配置するVPCのIDを指定します。
vpc_id=""
# サーバーを配置するパブリックサブネットのIDを指定します。
subnet_id=""
# SSH接続を許可する信頼できるIPのリストを指定します。
# 1.1.1.1 のIPが自身の信頼できるIPである場合は trusted_ips=["1.1.1.1/32"] を設定します。
trusted_ips=[]
# サーバーにドメインを割り当てるため、Route53のゾーンネームを指定します。
# 実際にRoute53上にゾーンが存在している必要があります。
# example.com を設定した場合、サーバーは shadowsocks.example.com のドメインを使用します。
route53_zone=""
部署
进入Terraform目录。
cd ./terraform
Terraform 的初始化
terraform init -reconfigure -backend-config=production.tfbackend
部署
terraform apply -var-file production.tfvars
执行部署命令时,将要求输入密码,请输入任意密码。(此密码将用于Shadowsocks服务器连接)
客户使用方法
客户端的安装 de
在官方网站上介绍了几个开源的客户端。如果在其他地方搜索Shadowsocks,还可以找到各种不同的客户端应用。
一个客户端设置示例(Mac: shadowsocksX-NG)
只要设置正确的连接信息,任何客户端都可以连接。
首先,打开服务器的设置。
接下来,我们要进行连接信息的设置。
-
- Address:
shadowsocks + サーバーの設定ファイルに記載したRoute53のゾーンネーム
Port:
デフォルトは 1480
Encryption:
aes-256-gcm
Password:
サーバーデプロイ時に入力したパスワード
在设定了认证信息之后,启用Shadowsocks客户端,您可以通过一个能够检查自己IP地址变动的网站来确认IP地址已经改变。
如果处于这种状态,即使在中国国内,也可以访问Google、Twitter等网站。
最后
如果一次性使用Terraform进行定义,无论何时需要都可以使用,确实非常方便。
如果使用 user_data 在服务器内进行系统构建,就可以像处理 Docker 中的 EC2 一样轻松。