参考链接 Rolling out your own private VPN server on AWS cloud in 10 minutes
注:以上教程使用脚本(CloudFormation堆栈)自动创建亚马逊ec2实例,并根据预设参数安装启动PPTP或L2TP服务器程序;脚本不含ssh服务,所以不能用于远程连接;也可手动创建ec2实例,并参考脚本自行搭设所需的服务程序,具体步骤见下。
警告:Amazon已于2026年前修改了免费套餐,由之前的免费一年修改为半年,并且增加了限制,由之前的可以重新注册账号改为了疑似一张银行卡只能参加一次。
参考链接 玩转云服务:Oracle Cloud甲骨文永久免费云服务器注册及配置指南
注:以上教程执行到“远程登陆”步骤即可,之后的步骤用于部署web服务,按需参考;注册甲骨文账号时需要验证码,找个加速器(如Watt Toolkit、KO加速器等);填银行卡信息时不要开加速器不要挂代理(保证使用的银行卡的银行所属国家跟IP一致,否则可能会被拒)。
假设你已经配置好一个远程主机,并可以通过ssh远程登陆。(如果你没有主机,可以参考上面的链接申请一个aws账号或Oracle账号,但是不要使用自动化脚本,只需手动创建一个云主机实例即可。)
本地如果是Windows环境,推荐使用git-bash作为终端。
-
使用 ssh tunnel 建立socks5服务
ssh -TND socks5_port -i /path/to/private_key user_name@server_address
该命令在使用密钥private_key以user_name登陆地址为server_address主机的同时,在本地(127.0.0.1)的socks5_port端口建立一个socks5代理服务。至此,使用支持socks5代理的浏览器(如火狐)并将代理配置为上述socks5服务后,即可访问境外网络。
-
socks5 代理转 http 代理
若使用的浏览器不支持socks5代理,可以使用工具将socks5代理转为http代理,这里使用polipo为例。
polipo socksParentProxy=127.0.0.1:socks5_port proxyAddress=0.0.0.0 proxyPort=http_port
该命令将本地socks5_port端口的socks5代理转换为http代理,http代理的端口号为http_port。之后即可为浏览器配置http代理或将系统代理配置为127.0.0.1:http_port。proxyAddress=0.0.0.0中的0.0.0.0的意思是代理服务在本机所有可用的IP地址上监听,以接受来自本机以及局域网内其他设备的请求,可为局域网内的其他设备提供代理服务(注意配置防火墙放行端口);如仅希望本机访问,也可替换为proxyAddress=127.0.0.1。
注:
polipo需要自行编译,下载源码,在源码目录下用gcc/mingw作为编译器直接make很容易编过。
Windows 环境下 Makefile 文件需适当修改,参考:
找到Makefile中以下几行
# CC = gcc # EXE=.exe # LDLIBS = -lws2_32
将井号去掉,改为
CC = gcc EXE=.exe LDLIBS = -lws2_32
即可。
另外,Makefile中定义的PREFIX,LOCAL_ROOT,DISK_CACHE_ROOT几个变量用于指定安装位置和运行时缓存目录,可改可不改,不影响程序运行。如有需要自行修改。
-
其他应用
如有其他不支持http或socks5代理的应用需要通过代理访问网络,可以使用 proxifier, proxycap, proxychains 等软件将应用的数据包截获并转发至代理服务。使用方法请自行搜索或查阅文档。
附:手动配置L2TP服务
已将L2TP服务配置脚本提取至vpnsetup.sh,可参考以下步骤在任意服务器上配置L2TP服务:
-
修改脚本vpnsetup.sh 27-29行,填写用于L2TP客户端登陆的用户名密码。(如果不修改,将默认使用随机密码进行配置,在脚本最后会打印出来,注意记录即可。)
-
将脚本vpnsetup.sh拷贝到服务器上。
scp -i /path/to/your_private_key.pem vpnsetup.sh your_user_name@your_server_ip:~/注:your_user_name 跟使用的操作系统镜像有关,如Ubuntu系统默认一般是ubuntu,不知道的话查询云服务提供商的文档。
-
ssh登陆服务器。
ssh -i /path/to/your_private_key.pem your_user_name@your_server_ip
-
在服务器上以管理员权限执行脚本vpnsetup.sh。
sudo ./vpnsetup.sh
注:如果文件存在且有可执行权限,执行时却出现报错"No such file or directory",在vim中打开,输入指令":set ff"查看文件格式,若显示"fileformat=dos",则说明是文件格式错误,输入指令":set ff=unix",并保存退出":wq"即可解决。
-
云服务控制台配置网络入站规则,对UDP协议放行1701、500、4500三个端口。
-
客户端登陆时选择“预共享密钥(Pre-Shared Key/PSK)的L2TP/IPSec”类型,须填写IPSec预共享密钥、用户名、密码三项(与第1步填写的对应)。