之前一直使用的搬瓦工: https://bandwagonhost.com/, 使用上感觉还不错,但是当vps IPf被封了之后, 需要等待180天才能更换一次IP。 而且其速度并没有非常的快(当然也是因为买的是最便宜的19$/year的套餐)。
听闻Amazon的云服务AWS(Amazon Web Service)可以试用,第一年免费,今天便拿来尝试了一把。 本篇记录了使用Amazon的服务建立一个自用VPS的过程。
Preparation
- 信用卡一张(国内的银联就可以)
- 一个可用的Email账户
虽然是免费的,然是要求绑定一张信用卡,当我们使用量超出免费服务的限制后它会从信用卡上按月扣钱。
Apply a Instance/Virtual Machine (VM)
- 进入AWS官网: http://aws.amazon.com/
- 右上角->
Create an AWS Account
- Sign up注册一个新账号 (如果已有账号Sign In),跳过注册
- 需要注意的是信用卡绑定国内的信用卡就可以了,我试着绑Visa还失败了..
- 密码需要还有大写字母和数字/符号
- 登陆进去后进入的就是我们的控制台界面: https://console.aws.amazon.com/console/home
- 右上角分别是通知、账户、区域、和支持(Support),在区域里面选择自己服务器想要申请的区域。
听说国内用
Tokyo
东京的比较快。 - 在页面中
Build a solution
中选择Launch a virtual machine
在给出的选项里面,找一个带有
Free tier eligible
的就行,常见的几个:- Amazon Linux 2 AMI(HVM): 属于Selinux, 使用Yum包管理器,只安装了最基本的工具
- Amazon Linux AMI: 还安装了常用工具: python, perl, Java, Ruby, Docker, MySQL等等
- Microsoft Windows Server 2019 Base: Windows的直接跳过不看
- Red Hat Enterprise Linux 7.6: Red Hat的企业Linux
- Ubuntu Server 18.04 LTS (HVM): Ubuntu, 使用apt包管理器
如果是习惯了使用Ubuntu的,装Ubuntu Server这个就行;如果仅仅只是想弄个代理服务器什么的, 考虑到我们的VM空间也不大,可以像我一样申个最简单的Amazon Linux 2 AMI。(2023年Amazon出了新的AMI, 可以用新的) 这几个VM类型除了Windows家的, 都是HVM类型(全虚拟化), 所以使用上没什么差别。这里我们选第一个
Amazon Linux 2 AMI(HVM)
选择instance type
在给出的免费选项里面,只有t2.micro, 1个vcpu, 1GB内存,Low to Moderate的网络能选了…
选择配置
大部分用户可以直接选择右下角的
Review and Launch
,如果想修改详细配置,在最上方的选项卡里面可以选。 需要注意的是,Add Storage
里面,免费的磁盘最大可以选到30GB的SSD,默认是8GB。 在Configure Security Group
选项卡里,可以给我们的安全策略组起个容易理解的名字。Generate Key Pair
熟悉ssh Key使用的也可以跳过这一步,如果跳过这一步那在服务器端没配置好
authorized_keys
之前就不能通过ssh访问了之后就可以点Launch来启动我们的VM了。这个时候会弹出一个配置Key Pair的页面,这个页面只会出现一次。 我们选择
Create a new key pair
来生成一组新的RSA密钥组。其中的公钥会被放到我们的VM里, 私钥我们要下载下来保存起来之后用ssh连接VM的时候使用。Key Pair的名字随便起。点击
Download Key Pair
下载私钥文件,这个可别弄丢了哦, 在.ssh/config
里面指定为这个密钥就可以了, 具体的可以在Aws Instances 那边点Connect,照着ssh的方式配置就可以。Launch VM
点击Launch (Instances/VM)后,我们的VM就会启动了。启动后我们可以选择最上面的菜单
Services->EC2
进入 EC2 Dashboard:当我们看到有一个Running Instances时,说明我们的VM启动成功了。
Configure VM
这里我们看到右上角的Tokyo表明了当前的DashBoard显示的是哪个区域的VM, 如果我们继续Launch Instance的话, 还会在相同的区域中起VM。如果我们在右上角切换了Region, 那么我们就可以在其他区域中起VM。
常用的选项我已经用红框标记了出来:
Instances
: 里面会显示我们启动的VM的状况Security Group
: 显示我们的安全策略组,这个会有一个默认的策略,我们在配置VM时设置的安全策略会作为一个新的Group。Elastic IP
: 这个允许我们的VM对外显示为另一个IP, 可以在我们的IP被封后换掉。Key Pairs
: 显示了我们目前设置的Key, 如果我们之后想换密钥了可以在这里操作。
Associate
Elastic IP
这里我们选择
Elastic IP
选项卡,点击左上角的Allocate new address
分配一个IP, 分配好了后在旁边的Actions
里面选择Associate Address
。在新的页面里面选择我们的Instance, Private IP不要动(Private IP)是我们VM真正的IP。 勾上
Allow Elastic IP to be reassociated if already attached
,然后点Associate
。再回到
Elastic IP
选项卡,就能看到我们刚刚申请的IP已经和Instance关联了, 之后就可以通过这个Elastic IP来访问我们的VM。Configure Security Group
选择
Security Groups
选项卡,点击我们自己的Security Group, 最下面会显示Description
,Inbound
,Outbound
,Tags
。我们需要修改Inbound
的安全策略:Inbound默认只允许ssh协议的链接通过22号端口访问我们的VM,如果我们想用它作为代理服务器的话, 还需要添加一个规则, 比如我想用shadowsocks, shadowsocks的链接用的TCP协议: Edit, 选择
Custom TCP Rule
, Port Range 我填一个22334, Source 选择Anywhere。 这样我们的VM就允许来自任何地方,连接Port 22334的TCP协议包。
这些都弄完了后,我们的VM就可以开始使用了。
Setup Proxy Server
这里简单介绍一下如何搭代理服务(以Shadowsocks为例)。
Connect to Instance
选择
Instances
选项卡,在上方有Launch Instance
,Connect
,Actions
。 我们点击Connect
,它会告诉我们如何访问我们的VM。最简单的方式就是用ssh, 里面会直接给一个Example:1
ssh -i "keypair.pem" [email protected]
找一个shell照着敲就OK.
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$uname -a
Linux ip-xxx-xxx-xxx-xxx.ap-northeast-1.compute.internal 4.14.97-90.72.amzn2.x86_64 #1 SMP Tue Feb 5 20:46:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
$lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Model name: Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
Stepping: 2
CPU MHz: 2400.224
BogoMIPS: 4800.04
Hypervisor vendor: Xen
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 30720K
NUMA node0 CPU(s): 0
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp
lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer
aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt可以看到亚马逊的AWS用的是基于Xen的虚拟机监控器,
Virtualization type:full
, 表明我们是全虚拟化。
Install ssserver
简单瞄两眼后,我们就着手安装自己要的工具吧。
1 | $ sudo yum install m2crypto python-setuptools |
这里pip可能因为更新导致Amazon的pip版本过老出现错误,我们重新装一个就行~:
1 | $ sudo yum install python37 |
这样我们就安好了shadowsocks服务。建立一个配置文件:
1 | sudo vi /etc/shadowsocks.json |
里面password
是连接代理服务时需要输入的密码。里面的server_port
记得和
我们AWS上Security Group里面Inbound配置的内容一致,不然会被AWS拦截下来。
启动shadowsocks server
1 | sudo ssserver -c /etc/shadowsocks.json -d start |
设置我们的IP table, 不要屏蔽掉22334的包:
1 | sudo iptables -I INPUT -p tcp --dport 22334 -j ACCEPT |
大功造成,剩下的就是常规操作了(Client端的就省略了,相信看到这里的你不可能不会用的)
Install V2ray
V2ray的使用参考: http://silentming.net/blog/2023/03/26/v2ray/
Delete Instance
如果需要删掉Instane, 需要Terminate Instance, 并解除与释放Elastic IP,处于Terminated
状态的Instance经过一段时间就会被Amazon回收
End
代理服务有很多种,比如我之前介绍过的cntlm
也可以用,shadowsocks的好处是对包进行了加密,
你可以用自己设计的协议= =。
AWS的Free Tier一个月的上下行流量总和为15GB, 超了会扣钱钱,可以在左上方Services->CloudWatch
里面看看Bill相关的统计,也可以研究下怎么设置Budgets, 在用超的时候发警告。
使用使用上,感觉连接速度比搬瓦工的更快一些,但是流量上限就没有那么高了, 而且一个月15GB的流量限制也确实不能干太多事情。 不过能看出来AWS的易用性非常的高,无论是后续切换Region, 还是更换Key Pair、换IP等等, 在EC2 Dashboard上面非常显眼的就列出了所有的常用功能。再一次深刻意识到Amazon作为公有云领域的老大, 其技术能力的深厚与用户体验的优化都铸就了它现在巨大的成功。
Note
- 20230325: Update Delete Instance
- 20210405: Update V2ray configuration