You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将Cloudflare Warp与Ubuntu服务器上现有SSH及Nekoray代理集成以隐藏服务器IP

如何将Cloudflare Warp与Ubuntu服务器上现有SSH及Nekoray代理集成以隐藏服务器IP

我之前帮朋友搞定过几乎一模一样的场景,核心逻辑就是让Ubuntu服务器上所有通过SSH代理转发的流量,先经过Cloudflare Warp再对外请求,这样最终暴露的就是Cloudflare的IP而非你的服务器IP。下面是一步步的实操步骤:

第一步:在Ubuntu服务器上安装并激活Cloudflare Warp

首先得把Warp装到服务器上,用官方提供的脚本最稳妥:

# 添加Cloudflare的软件源密钥
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
# 添加软件源
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
sudo apt update && sudo apt install cloudflare-warp -y

安装完成后,注册并连接Warp:

# 注册Warp账号(按提示输入邮箱即可,也支持匿名注册)
warp-cli register
# 连接到Warp网络
warp-cli connect
# 验证连接状态,输出显示"Connected"就没问题
warp-cli status

别忘了设置Warp开机自启,避免服务器重启后需要手动连接:

sudo systemctl enable --now warp-svc

第二步:确保SSH连接不受Warp影响(关键!)

如果直接让Warp接管所有流量,可能会导致你的SSH连接突然断开(因为服务器的SSH响应会走Warp路由,可能和本地连接冲突)。所以要先添加例外规则,让SSH相关的流量绕过Warp:

# 添加你的客户端IP到Warp的排除列表,这样服务器和你本地的SSH通信不走Warp
warp-cli add-exclude 你的本地IP地址
# 或者如果你经常换IP,可以排除整个SSH端口的流量(更通用)
warp-cli add-exclude tcp://0.0.0.0:22

第三步:让代理流量强制走Warp

现在需要确保所有通过Nekoray SSH代理转发的流量都经过Warp,这里分两种简单的实现方式:

方式1:切换Warp到全局模式(最省心)

如果你不想折腾复杂的路由规则,直接让Warp接管服务器所有出站流量,只保留之前设置的SSH例外即可:

# 设置Warp为全局模式
warp-cli set-mode global
# 重新连接使配置生效
warp-cli disconnect && warp-cli connect

方式2:用iptables强制路由(更灵活)

假设你Nekoray通过SSH转发的是SOCKS5端口(默认一般是1080),可以用iptables规则把从这个端口产生的出站流量导向Warp的tun0接口:

# 先确认Warp的接口是否存在,输出里能看到tun0就没问题
ip addr show tun0

# 添加iptables规则
# 允许本地回环流量(避免代理自身出问题)
sudo iptables -A OUTPUT -o lo -j ACCEPT
# 允许SSH相关流量绕过Warp
sudo iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
# 将所有非本地、非SSH的出站流量导向tun0(Warp接口)
sudo iptables -A OUTPUT -o eth0 -j DROP
sudo iptables -A OUTPUT -o tun0 -j ACCEPT

注意:eth0是服务器的主网卡,如果你服务器用的是其他网卡名(比如ens33),要替换成对应的名字,可以用ip addr查看。

第四步:验证配置是否生效

用Nekoray连接你的SSH代理,然后打开浏览器访问https://www.cloudflare.com/cdn-cgi/trace,查看返回结果里的ip字段——如果显示的是Cloudflare的IP(一般是104.x.x.x、172.x.x.x这类段),就说明配置成功了,你的服务器IP已经被隐藏。

如果遇到SSH断开的情况,直接在服务器控制台(比如VPS的网页控制台)重新执行warp-cli add-exclude 你的本地IP,然后重启Warp服务sudo systemctl restart warp-svc就能恢复。

备注:内容来源于stack exchange,提问作者Mohammad Fanni

火山引擎 最新活动