本人的公司网络分为办公网和测试网,平常经常需要从办公网连接到测试网络进行一些调试工作。但无奈拓扑没有额外配置交换机也就没有路由,只能通过一台双网卡的服务器远程桌面到测试网,非常之不便。
所以想在服务器上做一个vpn,将指定的出站流量通过vpn发送到测试网段。
Linux服务端选用v2-ui控制面板,内核为v2ray,客户端选用v2rayN。
环境:
- CentOS Linux release 7.6.1810 (Core)
- v2-ui 5.4.1
- v2ray内核 4.27.0
- v2rayN V3.5
首先我们配置一台双网卡的CentOS的服务器,将外网网段(办公网)的网卡配置配置上网关,内网(测试网)网卡不要配置网关。否则无法连接外网下载资源。
以下为我的网卡配置:
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
UUID=dc92b30a-f59f-4b6e-8b3e-a33ea383daf5
DEVICE=ens160
ONBOOT=yes
IPADDR=10.101.53.69
GATEWAY=10.101.53.1 #在下载好相关资源后,请注释掉该行
NETMASK=255.255.255.0
TYPE=Ethernet
BOOTPROTO=static
NAME=ens192
UUID=25b5cf14-3b7c-4c27-9b40-c5db4b359482
DEVICE=ens192
ONBOOT=yes
IPADDR=10.2.94.200
GATEWAY=10.2.94.254
NETMASK=255.255.255.0
ens160为外网网卡,ens192为内网网卡。当双网卡都配置了网关时,数字编号小的网卡网关生效。
为服务器安装v2-ui:https://blog.sprov.xyz/v2-ui/
v2-ui中某些依赖因为墙的原因可能会下载缓慢,请自行科学上网。
也可根据文档中离线下载安装,但是离线版没有自带v2ray内核,需要自行下载。
安装完v2-ui后,将网关切换回内网,将外网网关配置注释掉
# GATEWAY=10.101.53.1
然后重启network服务
[root@localhost ~]# systemctl restart network
进入v2-ui控制台
[root@localhost ~]# v2-ui
v2-ui 面板管理脚本
--- https://blog.sprov.xyz/v2-ui ---
0. 退出脚本
————————————————
1. 安装 v2-ui
2. 更新 v2-ui
3. 卸载 v2-ui
————————————————
4. 重置用户名密码
5. 重置面板设置
6. 设置面板端口
————————————————
7. 启动 v2-ui
8. 停止 v2-ui
9. 重启 v2-ui
10. 查看 v2-ui 状态
11. 查看 v2-ui 日志
————————————————
12. 设置 v2-ui 开机自启
13. 取消 v2-ui 开机自启
————————————————
14. 一键安装 bbr (最新内核)
面板状态: 已运行
是否开机自启: 是
v2ray 状态: 运行
请输入选择 [0-14]:
这里建议修改一下端口号和初始账户密码,初始账户密码为admin。修改好后重启v2-ui服务,然后直接在浏览器中输入ip+端口访问v2-ui的web。
进入web后点击左侧导航栏的账号列表,新建一个账号。如无特殊加密等需求,采用默认配置就可使用。
配置好账户之后,接下来要给v2ray内核配置路由功能,现在我们想将10.101.53.0/24网段所有的入站数据,转发至10.2.0.0/16网段。并且还要配置一下默认的出站使用的ip,不然会默认将出站流量发送到第一块网卡。
大家可以参考v2ray官网的说明文档,我这里直接将我的配置贴上来。
在面板可直接编辑v2ray的配置档,配置档采用json格式。
我们需要修改的配置项有"outbounds"和"routing"
"outbounds": [
{
"sendThrough": "10.2.94.200",//本机出站ip,由于是双网卡双ip,需要手动指定出站ip
"protocol": "freedom",
"settings": {},
"tag": "local"//与routing中的tag保持一致
}
]
"routing": {
"domainStrategy": "IPOnDemand",//当匹配时碰到任何基于 IP 的规则,将域名立即解析为 IP 进行匹配
"rules": [
{
"source":["10.101.53.0/24"],//接受入站的ip段,这里是我外网的网段
"outboundTag": "local",//与outbounds的tag保持一致
"type": "field"
}
]
}
至此服务端的配置就完成了,通过以下命令重启一下v2-ui服务。[root@localhost ~]# service v2-ui restart
下面我们开始客户端的配置,我这里的客户端是win10的,选用的是v2rayN。
https://github.com/2dust/v2rayN/releases
我们先从服务器的v2-ui复制一下服务器配置,点击复制链接。
然后打开v2rayN,选择从剪贴板导入url。
然后就自动为我们添加vpn服务器配置了,现在我们设置一下用户pac,使目标网段10.2.0.0/16的流量才发往vpn服务器。
至此客户端配置也完成了,这种代理是被动的,当应用主动请求代理才会走v2rayN,比如我们的浏览器。如果想要xshell之类的软件也走代理,需要在xshell内设置代理。如果一些应用没有自带代理功能,大家可以下载SocksCap64来主动代理。