欢迎光临
我们一直在努力

Debian11安装WARP并配置Xray按域名分流

在今年6月份的时候,cloudflare官方发布了一个支持linux的warp客户端,具体看这里:

https://blog.cloudflare.com/announcing-warp-for-linux-and-proxy-mode/

这个客户端有一个非常大的亮点就是支持本地代理模式,用这个模式可以指定某一个程序是否走warp。

再说详细一点就是,开启了warp的本地代理模式后,warp客户端会在本地启一个http/socks5服务,对于要走warp代理的程序我们就给这个程序配置连接warp提供的socks5即可。

在这个基础上,我们就可以配置xray的outbounds来连接warp提供的socks5,再利用xray的路由功能实现按域名分流。

整个连接的流程就是:本地电脑上的xray—>服务器上的xray—>服务器上的warp—>外部网络。

首先安装warp客户端,这里把需要用到的基本工具装一下:

apt -y update
apt -y install gnupg curl wget nginx python3-certbot-nginx
systemctl enable --now nginx

导入cloudflare存储库的gpg密钥:

curl https://pkg.cloudflareclient.com/pubkey.gpg | gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg

添加cloudflare存储库:

echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ bullseye main' | tee /etc/apt/sources.list.d/cloudflare-client.list

安装warp客户端:

apt -y install cloudflare-warp

检查客户端是否正常运行:

systemctl status warp-svc

注册warp,只有注册了之后才能使用:

warp-cli register

把模式改为代理:

warp-cli set-mode proxy

默认情况下socks5是监听在本地的40000端口上,如果要修改这个端口,可以使用下面的命令:

warp-cli set-proxy-port 30000

检查warp的配置,查看当前的代理模式:

warp-cli settings

如果正常的话会有如下回显:

Mode: WarpProxy
Proxy listening on: 127.0.0.1:40000

现在就可以连接了:

warp-cli connect

查看连接是否成功:

warp-cli warp-stats

正常会有类似如下回显:

Endpoints: 162.159.xxx.xxx, 2606:4700:d0::xxxx:xxxx
Time since last handshake: 31s
Sent: 480.7kB; Received: 5.0MB
Estimated latency: 2ms
Estimated loss: 0.00%;

建议开启永久连接功能:

warp-cli enable-always-on

关于warp的设置就到这里,下面列出一些常用的warp客户端命令:

warp-cli disconnect // 断开连接
warp-cli disable-always-on // 关闭永久连接
warp-cli delete // 删除注册

接下来安装xray:

bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install -u root --version v1.5.0

生成一个uuid复制下来:

xray uuid

编辑xray的配置文件:

nano /usr/local/etc/xray/config.json

写入如下配置:

{
    "log": {
        "loglevel": "warning"
    },
    "inbounds": [
        {
            "listen": "127.0.0.1",
            "port": 50000,
            "protocol": "vless",
            "settings": {
                "clients": [
                    {
                        "id": "9a3ac31c-6d39-4d0e-a71d-e5bdd49867e6" # 填写你的uuid
                    }
                ],
                "decryption": "none"
            },
            "streamSettings": {
                "network": "grpc",
                "grpcSettings": {
                    "serviceName": "debian",
                    "multiMode": true
                }
            }
        }
    ],
    "outbounds": [
        {
            "tag": "warp",
            "protocol": "socks",
            "settings": {
                "servers": [
                    {
                        "address": "127.0.0.1", // warp代理模式提供的socks服务
                        "port": 40000, // warp的socks端口
                        "users": []
                    }
                ]
            }
        },
        {
            "tag": "direct",
            "protocol": "freedom"
        }
    ],
    "routing": {
        "rules": [
            {
                "type": "field",
                "outboundTag": "warp",
                "domain": [
                    "geosite:netflix"
                ]
            }
        ]
    }
}

在这个配置示例中分流了netflix的流量,只要访问netflix就走warp,其他网站还是走服务器自己的网络。

关于geosite的更多可用配置名,可以看这里:https://github.com/v2fly/domain-list-community/tree/master/data

至于协议用什么都无所谓,这个示例中我用的是vless+grpc。你也可以直接用vmess,这样配置起来会简单一些。

由于用到了grpc,现在新建nginx站点配置文件:

nano /etc/nginx/conf.d/grpc.conf

写入如下配置:

server {
        listen 80;
        server_name debian.example.com;
        root /var/www/html;
        index index.nginx-debian.html;

        location /debian/TunMulti {
                client_max_body_size 0;
                grpc_set_header X-Real-IP $remote_addr;
                grpc_pass grpc://127.0.0.1:50000;
        }
}

注意nginx配置里面location的path,在xray中设置的serviceName是debian,并且开启了multimode,那么在nginx中的path就是/debian/TunMulti。

使用certbot签发ssl证书:

certbot --nginx

在证书签发完成之后,重新编辑刚新建的nginx站点配置文件:

nano /etc/nginx/conf.d/grpc.conf

在这一行加入http2的设置:

listen 443 ssl http2; # managed by Certbot

重载nginx使其生效:

systemctl reload nginx

客户端的配置:

额外补充一点和这没多大关系的内容。

如果不使用warp客户端的本地代理模式,直接代理服务器全部流量的话肯定会导致服务器无法连接。

有时候是需要用到这个模式的,因为开了这个模式后可以很方便的检查连接的ip是否能够解锁一些内容,比如netflix。

在使用这个模式之前,你可以先找一台跳板机登录,或者在xshell里面设置一个代理,用代理来登录服务器。

之后使用如下命令把你的跳板机ip或者代理的ip添加到排除路由:

warp-cli add-excluded-route 1.2.3.4

这样你的ssh连接不会断开,接着再把模式改为代理全部流量:

warp-cli set-mode warp

切换模式后,需要重新连接:

warp-cli disconnect
warp-cli connect

现在你可以使用工具或者脚本来检查连接的ip是否能够解锁一些内容,比如说netflix:

wget https://github.com/sjlleo/netflix-verify/releases/download/2.61/nf_2.61_linux_amd64
chmod +x nf_2.61_linux_amd64
./nf_2.61_linux_amd64

赞(0)
未经允许不得转载:拆东墙 » Debian11安装WARP并配置Xray按域名分流

评论 抢沙发

登录

找回密码

注册