记录Linux使用Warp+及ZeroTrust的两种方法
Warp是什么?
Warp诞生于2018年4月1日,也就是愚人节。
WARP是建立在Cloudflare 1.1.1.1的免费DNS服务器上。从技术上讲,Warp本质上就是一款VPN服务,Warp使用来自1.1.1.1的DNS服务器,并对它们之间的所有流量进行加密。
通常,当你访问Baidu.com时,URL会被翻译成网站所在服务器的IP地址,由ISP的DNS服务器托管。当你使用Warp时,Warp将手机上的DNS服务器固定为1.1.1.1。因此,所有请求都转到Cloudflare的安全服务器。
Warp在此基础上增加了一个额外的流程,使得设备和Cloudflare服务器之间的所有流量都是加密流量。
但Warp是基于WireGuard隧道的UDP协议,中国大陆绝大部分运营商都会对这类流量进行惩罚式、限速式的限制策略,导致Warp在大陆使用上突发很高,但均速很低。再加上Cloudflare的许多IP被国内Block,使得Warp在大陆接近一个不可用的状态。
如何安装Warp?
Warp服务在Linux下有以下三种实现方式
- 使用Warp-cli(CloudFlare官方客户端)进行实现
- 使用WireGuard进行实现
- 使用WireGuard-go进行实现
以上三种仅推荐第一种和第二种,第三种由于是基于用户空间的WireGuard,因此性能方面并不占优,故不过多介绍了。
安装前准备
apt update
apt upgrade -y
apt install sudo
使用Warp-cli实现Warp代理
首先进行安装Warp-cli前的准备
apt install gpg lsb-release -y
接下来安装Warp-cli;官方安装流程:https://pkg.cloudflareclient.com/install
# 安装Warp-cli GPG密钥:
curl https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
# 添加Warp-cli源:
echo "deb [arch=amd64 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
# 更新APT缓存:
apt update
# 安装Warp-cli:
apt install cloudflare-warp
# 注册WARP:
warp-cli register
# 设置为Socks代理模式(十分重要,如果直接连接会导致shell失联):
warp-cli set-mode proxy
# 连接Warp-cli:
warp-cli connect
# 查询代理后的IP地址:
curl ifconfig.me --proxy socks5://127.0.0.1:40000
上方设置Socks代理模式如果无法完成,则需要去到CloudFlare的ZeroTrust设置中的设备管理进行代理模式的修改。
如果要加入ZeroTrust网络,则需要进行如下操作:
1.通过登录团队域将 WARP 转换为ZeroTrust
warp-cli teams-enroll [你的团队域]
2.将Shell中的域名复制到浏览器,按照流程登录
A browser window should open at the following URL:
https://[你的团队域].cloudflareaccess.com/warp
If the browser fails to open, please visit the URL above directly in your browser.
3.按照以下步骤获取Token并返回给Warp-cli
warp-cli teams-enroll [team-domain]
Token需要在刚刚在浏览器登录的页面中提取,有效时间很短。在已登陆的页面右键—检查,以下部分的内容是你需要获取的Token。
将其提取并在Shell中导入
warp-cli teams-enroll-token com.cloudflare.warp://[team-domain].cloudflareaccess.com/auth?token=[token]
如果时间超时导致Token失效,则会返回以下
Error: Invalid JWT provided.
操作完成后,可以连接Warp客户端进行使用了。
warp-cli connect
warp-cli status -> Must show "Status update: Connected"
warp-cli account -> will show if connecting to account was successful
最后附Warp-cli常用的部分命令
warp-cli register //注册warp账户
warp-cli delete //删除warp账户
warp-cli account //查看当前warp账户
warp-cli set-license //使用warp+ key登入
warp-cli status //warp状态
warp-cli connect //连接warp网络
warp-cli set-custom-endpoint //设置warp接入点(优选IP)
使用WireGuard实现Warp代理
首先进行安装WireGuard前的准备
apt install lsb-release -y
#添加backports源
echo "deb http://deb.debian.org/debian $(lsb_release -sc)-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
apt update
安装WireGuard前,先执行uname -r
查看内核版本,5.6及以上的内核已经集成了WireGuard,因此无需再重复安装了。
安装WireGuard
sudo apt install wireguard-dkms -y
安装完成后reboot
进行重启,随后执行命令将WireGuard加载到内核
modprobe wireguard
最后检查WireGuard是否被加载
lsmod | grep wireguard
当WireGuard安装完成后,会在/etc/wireguard
创建一个用于存放WireGuard配置文件的目录,我们在启用WireGuard前需要将配置文件导入进WireGuard。
不过,在导入前,我们需要先对配置文件进行修改,以防止WireGuard全接管流量导致机器失联。
[Interface]
PrivateKey = [Warp 私钥]
Address = 172.16.0.2/32
Address = [Warp ipv6]
DNS = 1.1.1.1
MTU = 1280
PostUp = ip rule add from [本机 IP] lookup main
PostDown = ip rule delete from [本机 IP] lookup main
[Peer]
PublicKey = [Warp 公钥]
AllowedIPs = 0.0.0.0/0
AllowedIPs = ::/0
Endpoint = engage.cloudflareclient.com:2408
以上的PustUp
、PostDown
十分重要,请务必根据ifconfig中的本机ip来进行填写。
文件配置完成后,即可保存并将名称修改为 *.conf
,这里以 wgcf.conf
为示例;并将其导入/etc/wireguard
# 启动wireguard
wg-quick up wgcf
如果没有报错,我们接下来输入ip a
就可以看到wgcf的网络接口了。接下来我们需要为WireGuard创建守护进程,确保WireGuard保持运行并开机启动。
# 停止wireguard
wg-quick down wgcf
# 设置守护进程
systemctl start wg-quick@wgcf
# 设置开机启动
systemctl enable wg-quick@wgcf
# 查看守护状态
systemctl status wg-quick@wgcf
# 停止
systemctl stop wg-quick@wgcf
# 重启
systemctl restart wg-quick@wgcf
当WireGuard运行后,我们也可以通过以下命令查看Warp的ipv4/6地址
# IPv4
wget -qO- ip.gs
# IPv6 Only VPS
wget -qO- -6 ip.gs
最后再来说一下关于WireGuard的配置文件。默认配置应该如下:
[Interface]
PrivateKey = [Warp 私钥]
Address = 172.16.0.2/32
Address = [Warp ipv6]
DNS = 1.1.1.1
MTU = 1280
[Peer]
PublicKey = [Warp 公钥]
AllowedIPs = 0.0.0.0/0
AllowedIPs = ::/0
Endpoint = engage.cloudflareclient.com:2408
可以根据需求自行修改
[Interface]
PrivateKey = [Warp 私钥]
Address = 172.16.0.2/32
Address = [Warp ipv6]
DNS = 1.1.1.1
# MTU可以修改成1420
MTU = 1280
PostUp = ip rule add from [本机 IP] lookup main
PostDown = ip rule delete from [本机 IP] lookup main
[Peer]
PublicKey = [Warp 公钥]
# AllowedIPs 这里如果两个都保留,那么就是使用ipv4和ipv6;如果删除 AllowedIPs = 0.0.0.0/0,那么就是仅使用warp的ipv6地址,并保留本机ipv4;删除 AllowedIPs = ::/0,那么就是使用warp的ipv4
AllowedIPs = 0.0.0.0/0
AllowedIPs = ::/0
# 这里的对端可以使用优选IP工具进行筛选,可以替换成筛选到的最优IP地址
Endpoint = engage.cloudflareclient.com:2408
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
请问linux服务器用这个方法注册了team之后,我在warp-cli account能够看到公钥,那么私钥请问要在哪里或通过什么方式查询?谢谢