本人的公司网络分为办公网和测试网,平常经常需要从办公网连接到测试网络进行一些调试工作。但无奈拓扑没有额外配置交换机也就没有路由,只能通过一台双网卡的服务器远程桌面到测试网,非常之不便。

所以想在服务器上做一个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来主动代理。

Last modification:August 26th, 2020 at 09:59 am
If you think my article is useful to you, please feel free to appreciate