从 Client VPN endpoint 迁移到 EC2 上的 OpenVPN
缘起
原本有一个 Client VPN endpoint 在 AWS 新加坡。有几个原因导致要迁移:
- 没几天就不能用了,具体原因不足为外人道也,懂的都懂。
- Client VPN endpoint 太贵了。
现有环境
- 免费的 EC2 一台,跑的是 Amazon Linux 2023
具体步骤
安装 OpenVPN
由于 Amazon Linux 2023 里没有 OpenVPN 的包,也考察过 Fedora 36 的包,但思来想去,还是源代码编译安装吧,所以 OpenVPN 最后还是源代码编译安装的。
登录 EC2 后,开始操作:
1 | wget https://swupdate.openvpn.org/community/releases/openvpn-2.6.6.tar.gz |
配置 OpenVPN 服务器
还是在 EC2 上,/usr/local/openvpn/etc
目录下
1 | sudo vim /usr/local/openvpn/etc/server.conf |
有几个地方需要改:
- cipher 这一行改成
cipher AES-256-GCM
- dh 这一行改成
dh none
- user 这一行改成
user nobody
- group 这一行改成
group nobody
- port 这一行是端口号,自己看着改,缺省 1194 也可以
- proto 这一行建议改成
proto tcp
- explicit-exit-notify 这一行如果 proto 设成 tcp 的话要改成
explicit-exit-notify 0
- cert 这一行改成
cert /usr/local/openvpn/etc/server.crt
- key 这一行改成
key /usr/local/openvpn/etc/server.key
- ca 这一行改成
ca /usr/local/openvpn/etc/ca.crt
- push “route 这一行需要按需写上要推送的路由(每行写一段),比如
push "route 172.16.0.0 255.240.0.0"
Linux 上打开包转发
EC2 上
1 | echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/10-OpenVPN.conf |
启动服务
EC2 上
1 | sudo /usr/local/openvpn/sbin/openvpn \ |
AWS 上修改 EC2 的设置
所有做包转发的 EC2,都需要强制关掉 AWS 官方的 source/destination check。方法是:
Actions
->Networking
->change source/destination check
,然后点“stop”
至此,VPN 从 AWS 的 Client VPN endpoint
已经迁移到我们自己的 EC2 上了,以前的客户端,只需要改下 remote 那一行的服务器地址为 EC2 的公网地址,以及将 proto 改成 tcp(Client VPN endpoint 缺省是 udp,而且不能改)即可继续使用,连新的 VPN 服务器。