家庭数据中心系列 云主机上部署cloudflare warp来提高网络访问速度(Linux cli版)

前言

对于如何让我为了备案而不得不斥巨资购买的2核2G4兆带宽的腾讯云轻量服务器充分的发光发热,我一直在不停的思考和实践,将一些重要的、需要24小时运行的应用或者一些关键应用的热备系统(为了防止家庭数据中心断电)都放在了上面,目前在上面已经搭建的有:备案域名的www的热备源、tailscale的derp中继服务器、uptime-kuma健康监测、bark-server报警系统、博客的镜像站点、bitwarden密码管理系统。

不过我昨天忽然想到,如果家里忽然断电,那我的腾讯云服务器不就不能使用魔法了?(毕竟手机、平板、电脑都能直接使用warp或者直接使用魔法,就只有腾讯云服务器是使用proxychains,通过tailscale来使用家里的魔法)这个漏洞太大了,一定要弥补,所以要让云服务器不能完全依赖家里的魔法,要自己也能独挡一面才行。

只不过采用哪种方式好呢?docker版openwrt然后使用openclash?我本来就不喜欢openwrt的docker版部署,觉得折腾,还要把网卡设置为混杂模式,还要创建macvlan,还要改容器内部的网卡配置。。。最后还要安装配置openclash…..云服务器上稳定为准,就不想这么折腾了;要不直接clash for linux?这个倒是不复杂,但是也有一个问题,如果上面一级出了问题(不得不防),云服务器就和家里一起废了…;所以按照业界的说法,最好能找个”异构”的,最后还是选择了linux下的warp,这样就算上面一级出现了问题,也不影响云服务器对外的正常访问,毕竟warp走的可不是寻常路。

部署warp

安装相关工具和依赖(可选)

这一步不是必须的,如果已经提前安装好相关工具和依赖的可以跳过

apt update
apt install curl wget gnupg dpkg apt-transport-https lsb-release ca-certificates

根据官网步骤安装warp

添加 cloudflare gpg 密钥:

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

将此软件仓库添加到你的 apt 软件仓库中:

echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list

安装warp-cli:

sudo apt-get update && sudo apt-get install cloudflare-warp

检查warp服务是否正常运行:

systemctl status warp-svc

如果正常,则显示如下:
image.png

注:如果是root账号安装请自行去掉sudo。

注册并开启warp连接

注册warp

warp-cli register #命令提示说以后的版本里命令会变成warp-cli registration new,建议我用这个,不过诡异的是我用这个命令连不上~

这个时候已经完成了本机warp客户端和cloudflare的初始化通信,只是还没有进行连接,使用命令warp-cli status可以看到如下显示:
image.png

2种常用的使用方式

因为默认warp会接管主机所有的出向流量(基于目标IP,而不是基于session),导致的结果,就是只要一连接,所有通过远程方式(非局域网内)访问主机的连接都会中断(因为主机的响应都被warp拦截并根据自身的策略处理,处理的结果就是”正常范围的IP”以nat的方式发送出去),对正常的本地使用的终端而言,这没太大影响(当然,非局域网范围的远程访问一样洗白),但是对云主机而言就很蛋痛了:一连接直接就断线了。。然后只能通过云主机厂商提供的vnc访问方式才能访问。

注:warp默认也有不处理的目标IP和Fallback domains,可惜对正常的公网通讯都没什么用处,所以我上面才说”正常范围的IP”~。可以使用命令warp-cli settings查看:
image.png

warp模式(默认模式,不推荐,除非有特殊需求)

这是warp的默认模式,直接拦截所有除了默认排除的目标地址以外的所有外向流量,一般本地使用的终端影响不大,vps的话正常的远程访问会直接中断,无法访问(不幸中断的话,可以在云主机提供的vnc里断掉warp连接来恢复)。
添加排除的目标IP地址(可选):

warp-cli tunnel ip add #给warp添加排除IP、网段,这样即使warp连接以后,添加的网段也可以正常访问主机

连接warp:

warp-cli connect #相当于拨号,如果需要断掉wapr连接,使用warp-cli disconnect

注1:为什么我说不推荐呢?这种方式的唯一的优点在于简单,啥都不用设置,简单粗暴:全部出向流量都从warp出去,而缺点却很突出:
1、对vps来说,主要就是提供入向的访问,而warp方式会使正常通过公网来的远程访问全部失效,毕竟绝大部分访问用户都是动态IP地址,没法用添加排除目标IP的方式来允许访问
2、对一般的linux终端机而言,主要是出向的访问,而warp没有clash提供的分流功能,所以会导致访问国内网站非常慢,当然,如果没有使用warp同时,还要访问国内网站的需求就无所谓了

注2:其实本质上warp是使用的wireguard技术,且只是考虑了正常的出向访问请求(毕竟wall什么的在网络世界中就那么1,2个国家在用),所以如果真想更灵活的使用warp,可以直接采用wireguard客户端来替代warp,不过这种方法需要先读取warp中wireguard的信息并生成配置文件,这个网上有相应的脚本可以做,大家如果有需求可以自己搜,只不过我有某些技术上的洁癖,不想随便用非官方的脚本,所以关于这些脚本的稳定性到底如何,我也不清楚,大家只能自己试试了。

注3:所谓特殊需求是纯IPv4的设备想获得IPv6的出向访问能力;或者纯IPv6的设备想获得IPv4的出现向访问能力,这种就适合使用warp模式(其实proxy模式下系统全局走warp的socks5 proxy也行,只是说还是有少量应用不支持全局代理这种方式)。

proxy模式(推荐模式)

最稳妥的方式,就是不采用默认的warp接管所有外向通讯的使用方式,而是将warp作为一个proxy来使用。这样的话,只需要在系统里将warp的proxy设置为代理即可,云主机尤其推荐这种模式,安全、灵活。
设置warp的模式为proxy以及设置proxy的port:

warp-cli mode proxy #设置warp工作模式为proxy模式
warp-cli proxy port 56789 #如果需要指定代理端口,则使用该命令指定,不指定默认40000

连接warp:

warp-cli connect #如果需要断掉wapr连接,使用warp-cli disconnect

然后查看连接状态:

warp-cli status

image.png

然后查看本机连接状态:

netstat -ntpl

image.png

上图红框中就是warp生成的代理服务的地址和端口了,让我们对比测试一下:
正常访问https://ip.gs,结果如下:
image.png

可以看到测试出来的IP地址就是我的云服务器的公网IP地址。
通过warp生成的socks5代理访问:

image.png

可以看到测试出来的IP地址已经变成了warp nat之后的地址。


还可以测试一下我上面提到的ipv6访问能力。

正常访问时测试ipv6的可达性(腾讯轻量服务器不提供ipv6地址,估计得加钱):

image.png

使用warp生成的socks5代理测试ipv6的可达性:
image.png

所以嘛,proxy模式和warp模式都可以让单栈主机变成双栈的出向访问能力,当然,最终用哪种访问就要看系统本身v4和v6的优先级设置以及dns解析是否同时支持A记录和AAAA记录了。

具体debian 如何设置代理我这里就不多说了,网上教程很多,不过要注意的是,一些应用只支持http或者https代理,比如apt和wget,使用socks5代理会报错,所以最好还是部署gost,将warp的socks5代理转一个http代理出来,让那些不支持socks5代理而只支持http代理的应用使用。

其实,warp还有其他的模式,可以使用以下命令查看:

warp-cli mode -h

显示内容如下:

image.png

只不过,对于一般人而言,只有warp模式和proxy是最常用的,其他模式大家有兴趣可以自行研究一下。

进阶使用:通过zero trust使用warp+(可选)

正常使用的warp只是普通的warp,如果是通过zero trust的teams来使用,则会是warp+,当然,前提是已经正常设置了cloudflare的zero trust以及其中的warp client(参见文章:家庭数据中心系列 合理利用cloudflare WARP来提高自己访问网站的速度(桌面版))。


可选:删掉已有的注册信息(强迫症患者的福音)

warp-cli registration delete

在cli下将warp注册到zero trust的teams比桌面版麻烦一些,有2种方法:
1、直接使用teams名称注册(不推荐)

warp-cli teams-enroll teams-id

这种方式麻烦的地方在于:
a、root用户不能用,为了这样用还必须添加一个一般权限的用户
b、这种方式需要使用url的认证,而cli下访问url很折腾,比如我用w3m:

image.png

image.png

image.png

折腾死我了。
2、使用token注册(推荐)

这种方式需要先获取teams注册的token(注意,这个是有时效的),在有浏览器的主机上访问如下链接:

https://[teams-id].cloudflareaccess.com/warp 

列如使用chrome浏览器,打开开发者工具,访问上面的链接,当出现如下界面的时候:

image.png

在开发者工具的元素菜单,下图body部分”中的红框部分就是token:
image.png

warp-cli registration token xxxx

结果如下:

image.png

这时候运行命令:

warp-cli settings list

可以看到你在cloudflare的zero trust里配置的warp client的内容都过来了,并且也能看到已经加入了teams:

image.png

然后和前面的思路一样,需要将warp设置为proxy模式,不过嘛,你现在已经是组织的人了,不可以为所欲为了,所以需要在zero trust里设置。
在”Settings”-“WARP Client”:
image.png

image.png

然后添加操作系统的要求,我是设置的linux都使用proxy模式,而其他的使用warp模式,这里操作系统还可以设置具体的版本(不过一般没啥必要设这么细,这个是大型组织才用得到的):
image.png

这里最关键,选择Proxy mode”
image.png

最后点击最下方红框中的按钮创建配置文件:
image.png

当然,你还可以对按这种方式给其他的系统配置策略,我是linux使用proxy,其他桌面系统都使用warp:
image.png

这样一来,不同的操作系统使用warp client通过zero trust方式连接,就会根据事先设定的策略采取不同的模式了,非常方便。
最后使用命令warp-cli connect连接,并验证效果:
image.png

image.png

另:以前有个命令warp-cli enable-always-on ,可以一直保持warp的连接,不过现在已经取消了,但是如果你的warp已经connect,重启主机以后依然会自动connect,所以也没啥影响

后话

其实,在轻量服务器上启用warp的proxy模式只是第一步,后续还有很多灵活的使用方式,比如通过轻量服务器上部署的gost使用-F参数将warp的socks5代理设置为上级代理(详细gost的配置参见:家庭数据中心系列 使用gost搭建自己的代理服务器及转发代理链),然后其他同一个tailscale账号下的设备可以通过轻量服务器上的tailscale地址来使用gost提供的代理(当然,受限于云服务器的4兆带宽,只能当应个急,不过用来运行一些聊天软件、访问下网页倒是勉强够了),也可以让gost启用认证及加密并通过通过公网IP发布代理服务(只要你胆子够大),所谓运用之妙,存乎一心,就看大家想达成什么效果了。

本文为Linux cli版部署warp,桌面版部署warp参见:家庭数据中心系列 合理利用cloudflare WARP来提高自己访问网站的速度(桌面版)

博客内容均系原创,转载请注明出处!更多博客文章,可以移步至网站地图了解。博客的RSS地址为:https://blog.tangwudi.com/feed,欢迎订阅;如有需要,可以加入Telegram群一起讨论问题。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
       
error:
zh_CN
春节
快乐