使用免费的亚马逊云服务(AWS)

之前一直使用的搬瓦工: 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
2
3
$ sudo yum install m2crypto python-setuptools
$ sudo easy_install pip
$ sudo pip install shadowsocks

这里pip可能因为更新导致Amazon的pip版本过老出现错误,我们重新装一个就行~:

1
2
$ sudo yum install python37
$ sudo pip3 install shadowsocks

这样我们就安好了shadowsocks服务。建立一个配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
sudo vi /etc/shadowsocks.json

# Write following contents

{
"server":"0.0.0.0",
"server_port":22334,
"password":"your_passwd",
"timeout":300,
"method":"aes-256-cfb",
"fast_open":true
}

里面password是连接代理服务时需要输入的密码。里面的server_port记得和 我们AWS上Security Group里面Inbound配置的内容一致,不然会被AWS拦截下来。

启动shadowsocks server

1
2
3
4
sudo ssserver -c /etc/shadowsocks.json -d start
# Stop service: sudo ssserver -d stop
# Restart service: sudo ssserver -c /etc/shadowsocks.json -d restart
# View logs: less /var/log/shadowsocks.log

设置我们的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