用VPN节点做梯子落地解锁

前言

海外vpn的节点地区非常多,有的解锁还做的很好

但是传统协议过墙比较差,我们可以用vpn的节点来落地,实现二者结合

本方法只要是支持openvpn使用vpn的都可以用,这里用expressvpn为例说明

安装openvpn

debian可以直接安装

1
apt install openvpn resolvconf

装完了查看服务是否正常启动

1
systemctl status openvpn

安装vpn节点

注册下expressvpn,然后打开这个页面

https://www.expressvpn.com/setup#manual

Setup这里的账号和密码要保存好,等下会用到

下面这里有它所有的节点,选择一个你要用到的,直接点击就可以下载openvpn文件了

我们下载到配置文件以后,添加以下内容

1
2
route-nopull
route 0.0.0.0 128.0.0.0 net_gateway

然后我们重命名一下文件,把文件格式从.ovpn格式改成.conf格式

改好后上传到/etc/openvpn这个目录下

我们使用以下命令启动openvpn节点

1
systemctl start openvpn@exaple

用这个命令查看运行情况

1
systemctl status openvpn@example.service

用这个命令可以看到虚拟网卡的ip是不是已经变了

1
curl --interface tun0 ip.sb

封装vpn节点

如果直接让vpn接管全局,那我们以后管理很麻烦

所以这里我们使用xray,把vpn的虚拟网卡做成一个socks代理,这样就可以方便的对接了

使用官方脚本安装xray

1
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

然后我们编辑配置文件 /usr/local/etc/xray/config.json

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
31
32
33
{
"inbounds": [
{
"listen": "0.0.0.0",
"port": 8888, // 端口号
"protocol": "socks",
"settings": {
"auth": "password",
"accounts": [
{
"user": "username", // 用户名
"pass": "password" // 密码
}
],
"udp": false
}
}
],
"outbounds": [
{
"protocol":"freedom",
"settings":{
"domainStrategy":"UseIPv4"
},
"streamSettings":{
"sockopt":{
"interface":"tun0", // 接口名称
"tcpFastOpen":true
}
}
}
]
}

为防止xray挂掉我们给他加个进程守护

安装进程守护

1
apt install supervisor

添加配置文件 /etc/supervisor/conf.d/xray.conf

1
2
3
4
5
6
7
8
9
[program:xray]
command=/usr/local/bin/xray run -config /usr/local/etc/xray/config.json
autostart=true
startsecs=5
stopasgroup=true
killasgroup=true
user=root
stdout_logfile=/var/log/xray.log
stderr_logfile=/var/log/xray.err.log

启动守护

1
2
3
supervisorctl reread
supervisorctl update
supervisorctl restart xray

对接梯子

这样一来我们的vpn节点就变成了一个socks服务了

我们只需使用服务器的ip和刚才设置的xray接口就可以把他当一个socks5去对接到梯子里来使用了

以机场的soga服务端为例

如果我们要把一个节点完全变成VPN节点

只需要在soga的分流文件 /etc/soga/routes.toml 中加入这些内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 出站路由配置,默认本机出站,无需配置
# 是否启用路由,若关闭则默认直连
enable=true

# 路由 N,最后一个路由兜底,否则无法匹配剩余的域名/IP
[[routes]]
# "*" 表示匹配任何域名/IP
rules=["*"]

# 配置直连出口
[[routes.Outs]]
listen=""
type="socks"
server="1.2.3.4"
port=8888
username="username"
password="password"

然后重启soga即可

1
soga restart