一种利用机场搭建wireguard VPN的方法
原因
- 机场可以更大程度上的保证连接的稳定性(不会被乱掐)
- v2ray中支持的socks、websocket、http等代理方式均是5层的代理,而wireguard是一个三层的代理。在搭建一些必须要在一个子网内的服务时,三层代理便是一个必不可少的选项了。
声明
我使用这种方式的原因只是为了使得跨境的vps位于同一子网中通信。请在使用任何方法时注意法律法规及公序良俗,对于任意基于此方法的行为请自行斟酌。
前期准备
安装必要软件
以下均以Debian-bullseye为例
首先,在需要连接的两台机器上安装wireguard与v2ray
(v2ray仅需要在主动连接到机场的机器上进行安装)
1 | apt update |
(v2ray已经被Debian官方收录进了源内。若您采用的系统没有收录,请参考v2ray官方的教程)
确定机场的配置
对于大多数的机场,都并不会给v2ray-core的配置文件。对此的解决方式是:用v2rayN来转换
- 打开v2rayN并配置订阅源
- 在你想使用的节点上右键,并选择导出为客户端配置
- 复制配置文件中,outbounds下tag为proxy的部分
进行配置
编写v2ray-core的文件
仅需要对主动连接到机场的机器进行编写
v2ray的默认配置在/etc/v2ray/config.json
直接复制以下配置即可。记得将本机端口、服务器地址、端口和机场配置进行替换。
(解释在配置之后)
1 | { |
这里其实是使用了v2ray的docodemo-door协议进行了转发。docodemo-door的效果是:将你本机的指定端口,通过代理直接发送到目标服务器的指定端口。也就是说,建立了一个端口映射。
wireguard配置
以下将主动连接到机场的机器称为A,目标服务器称为B
A的配置
1 | [Interface] |
其中,A的端口是上方v2ray配置中指明的本机端口。
为什么endpoint的地址会是127.0.0.1
这里我画一幅图来解释一下:
B的配置
1 | ```conf |
这里注意到并没有配置endpoint。
这是因为B机器并不知道机场服务器的出口在哪(而且哪怕你知道机场也不会让你连的啊kora),所以这里只进行监听,由A主动建立udp连接。
启动连接
A
1 | systemctl start v2ray |
可能出现的错误:
v2ray报错:找不到log文件
创建相应文件:/var/log/v2ray/error.log
v2ray报错:没有权限访问log文件/log文件为只读
删除/lib/systemd/system/v2ray.service
中dynamicuser=true这一项(我真的不会用呜呜呜)
将log文件权限改为755
B
1 | wg-quick up 配置文件名字 |
end
老实说……挺水的(
所以,接下来你可以往上面再套一层GRE,你就获得了2层代理
或者你可以继续套下去以获得更大的安全裕度
你甚至可以尝试v2ray套娃…………毕竟docodemo-door协议支持所有tcp/udp连接的转发
awa