用aws搭建一个VPN
回国之后,自己一个搭建一个VPN的计划提上日程。我尝试了好几个自行搭建VPN的方法,其中包括:
- 利用aws的vps建立一个vpn网络。🔗 aws官网
这个解决方案的问题是太贵了。根据aws的网站,VPN在美东部署的价格在一小时0.15 - 0.25美元(因为我有时候有好几个client需要连接vpn)。 假设一天连VPN5个小时,一个月就要花费30美元。事实上的花费也确实差不多,我一个月的账单在40美元左右。用了两个月之后觉得太贵放弃了。
- 在aws ec2上部署shadowsocks服务器。
搭建比较简单,每个月花费几美元。问题是访问很多网站会检测到VPN。比如reddit和chatgpt,就不让访问。
- 基于wireguard的vpn服务器。
这个VPN非常稳定,因为是需要在美国家里的Wi-Fi上物理安装wireguard router。因为不需要租服务器,所以费用就是router大概100刀。 缺点就是维护起来非常不方便。事实上也是因为有一次家里断网,wireguard就出现了没办法继续连接的问题。找朋友修复也失败了。从此放弃。
- 在aws ec2上部署openVPN服务器。
本文将记录这一解决方案的步骤。
aws ec2服务器
Go to EC2 in your AWS Console.
在oregon(亲测oregon的服务器比japan的稳定,但是我个人喜欢用japan服务器搜索谷歌的结果。。。)开一个小的服务器instance。我用的是t2.micro.
Application and OS Image选择Amazon Linux 2
Edit: (2025/07/12)
Select Amazon Linux 2023 kernel-6.1 AMI.
Architecture: 64-bit (Arm)
Instance Type: t4g.small
Configure Storage: 30GB. Allow storage for docker installation.
This has been proved to be stable for OpenVPN.
Create a security group that allows SSH, HTTPS and HTTP.
给新建的服务器的security group加两个inbound rules。一个是UDP 1194 0.0.0.0/0 (IPV4),一个是UDP 1194 ::/0 (IPV6)。
Edit: (2025/08/12)
To support IPV6 on your EC2 instance:
1. 确保 VPC 和子网支持 IPv6
AWS 默认创建的 VPC 和子网通常仅支持 IPv4,需手动启用 IPv6。
1.1 为 VPC 分配 IPv6 CIDR 块
进入 AWS VPC 控制台 → Your VPCs。
选择目标 VPC,点击 Actions → Edit CIDRs → Add IPv6 CIDR。
AWS 会自动分配一个 /56的 IPv6 地址范围(如 2001:db8:1234:1a00::/56)。
1.2 为子网分配 IPv6 CIDR
进入 Subnets,选择目标子网。
点击 Actions → Edit IPv6 CIDRs → Add IPv6 CIDR。
AWS 会从 VPC 的 /56块中分配一个 /64子网(如 2001:db8:1234:1a00::/64)。
注意:如果子网没有 "Add IPv6 CIDR" 选项,说明 VPC 未分配 IPv6 CIDR,需先完成 1.1。
2. 配置 EC2 实例以支持 IPv6
2.1 启动新实例时启用 IPv6
在 Launch Instance 时:
在 Network Settings 部分,确保选择 已启用 IPv6 的子网。
勾选 "Auto-assign IPv6 address"(自动分配 IPv6 地址)。
或者手动指定 IPv6 地址(需在子网范围内)。
2.2 为现有实例添加 IPv6 地址
如果实例已运行但未启用 IPv6:
停止实例(部分实例类型支持热添加,但建议先停止)。
进入 EC2 控制台 → Instances → 选择实例 → Actions → Networking → Manage IP Addresses。
在 IPv6 Addresses 部分,点击 Assign new IP,AWS 会自动分配一个 IPv6 地址。
启动实例。
Important! Ensure IPV6 route exists:
检查 VPC 路由表:
进入 VPC 控制台 → Route Tables,找到关联子网的路由表。
确认存在一条 IPv6 默认路由:
目标:::/0
目标类型:igw-xxxxxx(IPv6 互联网网关)
在服务器上install openVPN
ssh into the instance, and install OpenVPN.
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
openVPN client的安装
从官网下载ovpn connect的app
Troubeshooting
两个device同时共享同一个profile的时候出现卡顿。
这是因为ovpn只支持同一个profile同时在线支持一个device的连接。我们需要在ovpn config里面enable duplicate-cn选项。
see
No longer an issue since the above installation script supports adding separate clients.
You just need to run script again to add new client.
Intermittent VPN disconnection
Gemini认为可能需要disable EC2 instance的Source/Destination Check:
Networking tab -> Network Interfaces -> Actions -> Change source/dest.check -> Disable
Optional
Install docker
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker