You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22节点下如何实现OpenVPN客户端流量通过Cloudflare WARP隧道转发

Ubuntu 22节点下如何实现OpenVPN客户端流量通过Cloudflare WARP隧道转发

嘿,我之前刚好折腾过类似的场景,给你分享两个可行的方案,分别对应WARP原生模式和代理模式,你可以按需尝试:


方案一:基于WARP原生模式(推荐,稳定性更好)

你之前说WARP模式下能正常SSH但OpenVPN流量不走隧道,核心问题是路由规则没把客户端子网纳入WARP的转发范围,调整下路由和iptables就行:

  1. 先确保基础配置到位

    • 开启系统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里加一行:
      push "redirect-gateway def1 bypass-dhcp"
      
      重启OpenVPN服务生效:systemctl restart openvpn-server@server
  2. 调整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
      
  3. 配置NAT让客户端流量正常出WARP
    执行这条iptables命令,给客户端流量做地址转换:

    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o warp0 -j MASQUERADE
    
  4. 保存规则避免重启失效

    • 保存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 51820
      
      然后给文件加执行权限:chmod +x /etc/rc.local

方案二:基于WARP代理模式

如果你想走代理模式,之前失败大概率是没配置透明代理转发,让客户端流量导向WARP的本地代理端口:

  1. 开启WARP代理模式

    warp-cli set-mode proxy
    warp-cli connect
    

    可以用warp-cli settings proxy port确认代理端口,默认是40000

  2. 配置透明代理的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
      
  3. 同样要保存规则
    参考方案一的步骤,用iptables-persistent保存规则,避免重启失效。


测试验证

连接OpenVPN客户端后,访问https://www.cloudflare.com/cdn-cgi/trace,看输出里的warp字段是否为on,如果是就说明流量已经通过WARP隧道了。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 08:32:58