Ubuntu 22节点下如何实现OpenVPN客户端流量通过Cloudflare WARP隧道转发
Ubuntu 22节点下如何实现OpenVPN客户端流量通过Cloudflare WARP隧道转发
嘿,我之前刚好折腾过类似的场景,给你分享两个可行的方案,分别对应WARP原生模式和代理模式,你可以按需尝试:
方案一:基于WARP原生模式(推荐,稳定性更好)
你之前说WARP模式下能正常SSH但OpenVPN流量不走隧道,核心问题是路由规则没把客户端子网纳入WARP的转发范围,调整下路由和iptables就行:
先确保基础配置到位
- 开启系统IP转发:
先检查当前状态:sysctl net.ipv4.ip_forward,如果输出是net.ipv4.ip_forward = 0,就执行:echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p - 确认OpenVPN服务器配置里推了默认路由,在
/etc/openvpn/server.conf里加一行:
重启OpenVPN服务生效:push "redirect-gateway def1 bypass-dhcp"systemctl restart openvpn-server@server
- 开启系统IP转发:
调整WARP路由规则
- 先找到WARP的策略路由表编号,执行
ip rule show | grep warp,一般会输出类似0: from all lookup 51820,这里的51820就是WARP的路由表ID(如果不一样就用你看到的编号) - 添加规则,让OpenVPN客户端子网(默认是
10.8.0.0/24,如果你的子网不同就替换)的流量强制走WARP路由表:ip rule add from 10.8.0.0/24 lookup 51820
- 先找到WARP的策略路由表编号,执行
配置NAT让客户端流量正常出WARP
执行这条iptables命令,给客户端流量做地址转换:iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o warp0 -j MASQUERADE保存规则避免重启失效
- 保存iptables规则:
apt install -y iptables-persistent iptables-save > /etc/iptables/rules.v4 - 保存路由规则,编辑
/etc/rc.local(如果没有就创建),在exit 0前添加:
然后给文件加执行权限:ip rule add from 10.8.0.0/24 lookup 51820chmod +x /etc/rc.local
- 保存iptables规则:
方案二:基于WARP代理模式
如果你想走代理模式,之前失败大概率是没配置透明代理转发,让客户端流量导向WARP的本地代理端口:
开启WARP代理模式
warp-cli set-mode proxy warp-cli connect可以用
warp-cli settings proxy port确认代理端口,默认是40000配置透明代理的iptables规则
- 先开启本地路由访问:
echo "net.ipv4.conf.all.route_localnet=1" >> /etc/sysctl.conf sysctl -p - 创建并配置WARP代理链:
# 创建自定义链 iptables -t nat -N WARP_PROXY # 排除本地流量和你的公网IP(方便SSH),替换[你的公网IP]为实际地址 iptables -t nat -A WARP_PROXY -d 127.0.0.0/8 -j RETURN iptables -t nat -A WARP_PROXY -d [你的公网IP]/32 -j RETURN # 把TCP和UDP流量转发到WARP代理端口 iptables -t nat -A WARP_PROXY -p tcp -j REDIRECT --to-ports 40000 iptables -t nat -A WARP_PROXY -p udp -j REDIRECT --to-ports 40000 # 让OpenVPN客户端子网的流量走这个代理链 iptables -t nat -A PREROUTING -s 10.8.0.0/24 -j WARP_PROXY
- 先开启本地路由访问:
同样要保存规则
参考方案一的步骤,用iptables-persistent保存规则,避免重启失效。
测试验证
连接OpenVPN客户端后,访问https://www.cloudflare.com/cdn-cgi/trace,看输出里的warp字段是否为on,如果是就说明流量已经通过WARP隧道了。
备注:内容来源于stack exchange,提问作者nightlover
相关产品推荐
相关产品推荐

