如何用一台网络好的VPS来中转另一台网络差的VPS的流量

先举个栗子:博主有一台新加坡VPS,姑且称之为VPS2号,博主本地电信与VPS2号之间去程和回程都绕路,直连效果很差,但是VPS2号是当地原生IP,可以解锁Netflix非自制剧,可以看绝命毒师(带中文字幕)呀。那怎么办呢?诶呀,巧了,博主还有一台香港VPS,名为VPS1号,这VPS1号网络超级好,博主本地电信和VPS1号之间去程和回程都是CN2 GIA线路,根本不惧晚高峰,拿来上网太合适了;但是这VPS1号不是原生IP,不能解锁Netflix非自制剧,看不了绝命毒师呀。这可如何是好呢?问题来了:能不能用VPS1号直接转发流量到VPS2号上去呢?能不能通过VPS1连接到VPS2上看Netflix呢?答案是当然可以呀,只要VPS1号跟VPS2之间的网络传输质量没问题就行。

栗子举完了。介绍一下两台VPS情况:VPS1号为香港电信CN2 GIA线路,VPS2号为新加坡非国内直连线路;VPS1号和VPS2号之间延迟35ms左右,从VPS1号直接iperf3测试到VPS2号的上传与下载都可以跑满VPS1号的带宽(这个很重要);VPS2号连接Netflix的时候是直接在新加坡本地CDN上获取数据(这个更重要)。

先总结一下:在VPS1号上搭建宝塔面板+v2ray+VMess+Websocket(ws)+TLS,在VPS2号上搭建v2ray+VMess+TCP;使用搭建在VPS1号上的v2ray充当客户端连接到VPS2号,这种中转方法是将所有需要从VPS1上走的流量通过VPS2落地,达到解锁VPS2号当地流媒体或者需要当地IP落地的目的。网上中转教程很多,中转工具也很多,这只是其中一种,也是比较通用的方法,兼容包括梅林固件科学上网插件在内的所有客户端。本文为纯新手教程,大神请按Alt + F4。

高速VPS以及落地解锁VPS请移步到 香港VPS 去查看。

准备工作:确保两台VPS均为新安装的Debian 10系统。

步骤如下:
1、首先在VPS1上安装宝塔面板,并安装Nginx。详请查看下面这篇文章:
新手专用VPS安装宝塔BT面板及使用最新教程 – Debian 10

2、将域名解析到VPS1的IP地址,打开VPS1的宝塔面板,添加网站。

3、给网站加上HTTPS证书,


4、在VPS1和VPS2都安装v2ray,通过v2fly官方的v2ray一键脚本安装,命令如下:
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
4.1、如下图所示,v2ray安装好了。

5、编辑VPS2上的v2ray config.json配置文件,以nano编辑为例。
nano /usr/local/etc/v2ray/config.json
5.1、nano编辑首次使用的时候有个编辑器选项,选第1个就行了,config.json打开之后里面只有”{}”,删掉,将下面代码全部复制粘贴进去。

{
    "log": {
        "loglevel": "warning"
    },
    "routing": {
        "domainStrategy": "AsIs",
        "rules": [
            {
                "type": "field",
                "ip": [
                    "geoip:private"
                ],
                "outboundTag": "block"
            }
        ]
    },
    "inbounds": [
        {
            "port": 10086,
            "protocol": "vmess",
            "settings": {
                "clients": [
                    {
                        "id": "9efb0601-54d8-4eac-a43a-662fa51fca1a"
                    }
                ]
            },
            "streamSettings": {
                "network": "tcp"
            }
        }
    ],
    "outbounds": [
        {
            "protocol": "freedom",
            "tag": "direct"
        },
        {
            "protocol": "blackhole",
            "tag": "block"
        }
    ]
}

5.2、如下图所示,里面的port和id是可以自己改的,如果不懂的话就别改了。

5.3、VPS2号上的v2ray config.json配置文件编辑完成之后,按一下Ctrl+O,再敲回车保存,之后按Ctrl+X退出nano编辑。

5.4、启动VPS2号上的v2ray,命令如下:
systemctl start v2ray
5.5、查看VPS2号上的v2ray是否为成功启动状态,命令如下:
systemctl status v2ray
5.6、如果显示如下图所示,则v2ray启动成功。(按Ctrl+C可退出状态查看)

6、在宝塔面板编辑VPS1号上的v2ray config.json配置文件,文件位置如下图所示。

6.1、将下方命令复制粘贴进去。

{
    "log": {
        "loglevel": "warning",
        "access": "/var/log/v2ray/access.log",
        "error": "/var/log/v2ray/error.log"
    },
    "routing": {
        "domainStrategy": "AsIs",
        "rules": [
            {
                "type": "field",
                "ip": ["geoip:private"],
                "outboundTag": "block"
            }
        ]
    },
    "inbound": {
        "streamSettings": {
            "network": "ws",
            "wsSettings": {
                "path": "/ws/",
                "headers": {
                    "Host": "hk-sg.eveaz.com"
                }
            }
        },
        "protocol": "vmess",
        "port": 10085,
        "settings": {
            "clients": [
                {
                    "alterId": 0,
                    "id": "8bd3d957-626a-4d62-be7a-5bc272557f00"
                }
            ]
        }
    },
    "outbounds": [
        {
            "protocol": "vmess",
            "settings": {
                "vnext": [
                    {
                        "address": "sg1.eveaz.com",
                        "port": 10086,
                        "users": [
                            {"id": "9efb0601-54d8-4eac-a43a-662fa51fca1a"}
                        ]
                    }
                ]
            }
        },
        {
            "protocol": "freedom",
            "tag": "direct"
        },
        {
            "protocol": "blackhole",
            "tag": "block"
        }
    ]
}

6.2、如下图所示,标色的地方是需要按自身实际参数修改的,有几个需要注意的地方:

"Host": "hk-sg.eveaz.com" 这个域名需要改成你在VPS1上添加网站时候绑定的域名。
"address": "sg1.eveaz.com", 这个域名需要修改成你VPS2IP地址。

7、编辑VPS1上搭建的网站的配置文件,添加如下代码:

    location /ws {
      proxy_redirect off;
      proxy_pass http://127.0.0.1:10085;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $host;
      # Show real IP in v2ray access.log
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

7.1、编辑后的网站配置文件如下图所示:

8、重启VPS1的Nginx服务,参照本文5.4~5.6步骤启动并查看VPS1上的v2ray是否启动成功;若启动成功,则在本地相应的客户端上添加VPS1的v2ray相关参数即可愉快的玩耍了。

9、确定科学上网正常,并且在相关外网的IP查看上看到的是VPS2的IP,那么本文基本上就结束了;在两台VPS上输入下方命令,让两台VPS上的v2ray随VPS系统启动。
systemctl enable v2ray

9.1、另外几个v2ray命令如下:
重启
systemctl restart v2ray
停止
systemctl stop v2ray
禁用开机启动
systemctl disable v2ray
生成新uuidid
v2ctl uuid

本文完。

10、博主非要凑够10条,如果文章内容有错误或者遗漏的地方,还望指正,谢谢。

以下内容为进阶篇


上文讲到有一台新加坡VPS(名为VPS2号)是当地原生IP,可以解锁Netflix非自制剧也适合用来当当地落地IP使用,但是VPS2号与国内之间网络不是直连的,网速不太好;这时候使用一台香港VPS(名为VPS1号)将所有流量中转到VPS2号上,这样既可以看新加坡Netflix,也可以通过新加坡IP访问特定网站。这样的优势是访问某些网站的时候始终是使用新加坡IP,以应对网站限定IP的硬性要求;劣势是,所有中转的流量会在两台VPS上都过一遍,如果只是想通过VPS2号看Netflix,那么这种全中转会耗费VPS2号不必要的流量。那么在VPS1号中转VPS2号的时候,能不能指定只有Netflix流量需要通过VPS2出站,而其它流量直接通过VPS1出站呢?答案是可以的,在上文的基础上做一个指定分流即可。

跟上文相同,在VPS1号上搭建宝塔面板+Nginx+v2ray(VMess)+Websocket(ws)+TLS,在VPS2号上搭建v2ray(VMess)+TCP;跟上文不同的是,在VPS1号搭建v2ray环境的时候,额外设置v2ray内置路由规则以及通过路由规则指定只有Netflix流量走VPS2号出站,其它所有流量都直接在VPS1号上出站。举个栗子:访问Netflix的时候是VPS1号中转到VPS2号,但访问Google/Youtube等之类的直接在VPS1号上就访问到了,这部分流量不需要经过VPS2号。

博主啰嗦两句:如果需要用VPS2号访问所有境外网站,也就是把VPS1号当全中转,这种情况直接参考上文步骤实施就可以了;如果只是想通过VPS2号看Netflix,参考本文步骤实施即可,博主称之为半中转。

高速VPS以及落地解锁VPS请参考本站的 香港VPS 去查看。

步骤如下:
1、准备工作请参考上文;

2、搭建两台VPS1上的环境,参考上文步骤 1 ~ 5.6 步骤;

3、在VPS1号宝塔面板的文件管理编辑v2ray config.json配置文件,见上文 6步骤;将下方代码复制进去。

{
    "inbound": {
        "streamSettings": {
            "network": "ws",
            "wsSettings": {
                "path": "/ws/",
                "headers": {
                    "Host": "hk-sg.eveaz.com"
                }
            }
        },
        "protocol": "vmess",
        "port": 10085,
        "settings": {
            "clients": [
                {
                    "alterId": 0,
                    "id": "8bd3d957-626a-4d62-be7a-5bc272557f00"
                }
            ]
        },
        "sniffing": {
            "enabled": true,
            "destOverride": ["http", "tls"]
        }
    },
    "log": {
        "loglevel": "warning",
        "access": "/var/log/v2ray/access.log",
        "error": "/var/log/v2ray/error.log"
    },
    "routing": {
        "domainStrategy": "AsIs",
        "rules": [
            {
                "type": "field",
                "ip": ["geoip:private"],
                "outboundTag": "block"
            },
            {
                "type": "field",
                "outboundTag": "VPS2",
                "domain": ["geosite:netflix"]
            }
        ]
    },
    "outbounds": [
        {
            "protocol": "freedom",
            "tag": "direct"
        },
        {
            "protocol": "blackhole",
            "tag": "block"
        },
        {
            "tag": "VPS2",
            "protocol": "vmess",
            "settings": {
                "vnext": [
                    {
                        "address": "sg1.eveaz.com",
                        "port": 10086,
                        "users": [
                            {"id": "9efb0601-54d8-4eac-a43a-662fa51fca1a"}
                        ]
                    }
                ]
            }
        }
    ]
}

3.1、有几处需要修改的地方如下:
"Host": "hk-sg.eveaz.com" 这个域名需要改成你在VPS1上添加网站时候绑定的域名。
"address": "sg1.eveaz.com", 这个域名需要修改成你VPS2IP地址。

4、剩余步骤参考 上文 7 ~ 9 步骤。

5、搞定,收工!(写完才发现这篇文章这么短,太省事了。)

6、如果文章内容有错误或者遗漏的地方,还望指正,谢谢。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注