
要实现通过 LXC 里的 Docker WARP 为其他虚拟机提供网络,最稳定且侵入性最小的方案是 SOCKS5 代理模式。这种方案不需要修改你现有的宿主机 PVE 网络配置文件,完全依赖你已经配置好的 vmbr1 内网。
现在是 2025 年底 Debian 13 (Trixie) 已经是稳定版,使用它是最明智的选择。以下是基于 PVE 9.x + Debian 13 LXC + Docker + Cloudflare WARP 的完整保姆级操作手册。
此方案的目标:
- ⭕1.创建一个极轻量的 Debian 13 容器。
- ⭕2.在容器内运行 Docker 版 WARP。
- ⭕3.对外暴露 SOCKS5 代理端口(1080)。
- ⭕4.你的 Windows 虚拟机通过这个代理上网,保护宿主机 IP。
1. 网络拓扑设计
在这个架构中 WARP 容器充当一个旁路网关或代理服务器,LXC 通常不直接挂在公网口,除非你有额外公网IP。挂在 vmbr1 可以利用宿主机已经配好的 NAT 也就是 iptables ... MASQUERADE 规则上网。
1.1 网络架构设置
#宿主机两个网卡 vmbr0 公网和 vmbr1 内网 #PVE 宿主机 (Host) ,挂载在 vmbr1 #作用:作为所有虚拟机的出口网关 NAT IP: 192.168.100.1 #LXC 容器 (运行 Docker WARP),挂载在 vmbr1 #作用:运行 WARP,暴露 1080 端口 IP: 192.168.100.10 网关: 192.168.100.1 #目标虚拟机 (Client VM),挂载在 vmbr1 #配置:通过软件或系统代理设置,将流量指向 192.168.100.10:1080 IP: 192.168.100.2 网关: 192.168.100.1
1.2 宿主机网络配置示例:
玩机大学在《为 OVH 服务器 Proxmox VE 配置 IPv4 和 IPv6》一文详细讲解了网络配置的设计,如下是示例:
# ---系统默认网卡设置 ---
auto vmbr0
iface vmbr0 inet static
# 你的宿主机 IPv4 (保持默认)
address 54.38.122.125/24
# 你的宿主机 IPv4 网关 (保持默认)
gateway 54.38.122.254
bridge-ports eno1
bridge-stp off
bridge-fd 0
# 物理网卡 MAC 地址 (保持默认)
hwaddress AA:BB:CC:DD:EE:FF
# [新增] 强制开启 IPv4 转发,确保 NAT 100% 可用
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
iface vmbr0 inet6 static
# 宿主机自用 IPv6,默认为 128 改为 64
address 2607:5300:313:3d22::1/64
# OVH 官方 IPv6 网关 (保持默认)
gateway 2607:5300:0203:3dff:00ff:00ff:00ff:00ff
# [Forwarding: 确保宿主机能转发包]
# all: 覆盖当前所有接口
post-up echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
# default: 确保未来新建的接口(如 tap/veth)也默认开启
post-up echo 1 > /proc/sys/net/ipv6/conf/default/forwarding
# [NDP Proxy: 确保宿主机能代答]
# all: 确保内核全局允许该行为
post-up echo 1 > /proc/sys/net/ipv6/conf/all/proxy_ndp
# default: 确保未来接口继承该行为
post-up echo 1 > /proc/sys/net/ipv6/conf/default/proxy_ndp
# vmbr0: 明确在外网口开启(最重要的一行)
post-up echo 1 > /proc/sys/net/ipv6/conf/vmbr0/proxy_ndp
# --- LAN 接口 (虚拟机专用内网) ---
auto vmbr1
iface vmbr1 inet static
# 内网网关 IPv4
address 192.168.100.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
# [IPv4 NAT] 开启伪装上网,把来自 192.168.100.0/24 的流量,伪装成 vmbr0 的公网 IP 发出去
post-up iptables -t nat -A POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADE
# 关机清理,删除规则
post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADE
# IPv4 端口映射示例,宿主机 3389 -> Windows 3389 (建议仅在需要远程桌面时开启,同时为了安全,建议更改默认的3389端口)
# post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.100.2:3389
# post-up iptables -t nat -A PREROUTING -i vmbr0 -p udp --dport 3389 -j DNAT --to-destination 192.168.100.2:3389
# --- IPv6 路由与白名单管理区域 ---
iface vmbr1 inet6 static
# [修改] 虚拟机用的 IPv6 网关地址
address 2607:5300:313:3d22::2/64
# ================= 虚拟机列表 (在此处添加) =================
# [虚拟机 A - Windows]
# IP: 2607:5300:313:3d22::3
# 1. 告诉 OVH:该 IP 在我这 (NDP Proxy)
post-up ip -6 neigh add proxy 2607:5300:313:3d22::3 dev vmbr0
# 2. 告诉 内核:该 IP 往 vmbr1 走 (Routing)
post-up ip -6 route add 2607:5300:313:3d22::3/128 dev vmbr1
# 加载 SDN 配置 (保留此行在文件末尾)
# Proxmox VE 系统自带的配置文件,用于支持“软件定义网络”(Software Defined Network)功能
source /etc/network/interfaces.d/*
2. 准备 LXC 容器 (在 PVE 界面操作)
2.1 下载 Debian 13 模板

PVE 左侧菜单 -> local存储 -> CT 模板 -> 模板 -> 搜索并下载 debian-13-standard
2.2 创建容器 (Create CT)

⬆️右上角创建CT
常规:主机名、密码、勾选无特权的容器和嵌套

⬆️模板:储存 local -> 模板 13-standard_13.1_amd64.tar.zst

⬆️磁盘:储存 local -> 磁盘大小 8

⬆️CPU:核心 1

⬆️内存:内存 512

⬆️网络:桥接 vmbr1 (之前设置的内网网卡) -> IPv4 静态 -> IPv4/CIDR 192.168.100.10/24 (这是给容器分配的内网 IP) -> 网关 192.168.100.1

⬆️DNS:DNS 域和 DNS 服务器默认使用主机设置

2.3 启动容器

点击 启动,然后点击 控制台 进入命令行界面。
3. 安装 Docker (在 LXC 控制台内操作)

进入 Debian 13 控制台后,用户名 root 密码输入之前设置的密码,输入后会不显示,这是正常现象,点击回车键确认,完成登录。
3.1 安装 Docker
粘贴如下命令执行,安装 Docker。
apt update && apt install curl -y curl -fsSL https://get.docker.com | sh
3.2 验证安装
docker -v
输出应该类似: Docker version 27.x.x, build ...
4. 部署 WARP 代理 (在 LXC 控制台内操作)
我们将使用 monius/docker-warp-socks 镜像,它自动处理了 WARP 的注册和模式切换,且支持多架构,非常稳定。
4.1 复制以下命令直接运行:
docker run -d \ --name warp_proxy \ --restart always \ -p 9091:9091 \ --cap-add NET_ADMIN \ --sysctl net.ipv6.conf.all.disable_ipv6=0 \ monius/docker-warp-socks
4.2 参数详解:
-p 9091:9091 #monius/docker-warp-socks 的较新版本(特别是 v5 及 latest 标签)端口由 1080 变为 9091 默认启用的是混合代理 (Mixed Protocol) 模式,支持同时处理 HTTP/HTTPS/SOCKS5 流量。 --cap-add NET_ADMIN #必须,因为 WARP 需要创建 VPN 隧道接口 (tun)。 --sysctl ...disable_ipv6=: #允许容器内部使用 IPv6 连接 Cloudflare 节点(如果你宿主机支持 IPv6,这样连接更稳;如果不支持也没事,它会回退到 IPv4)。
4.3 验证运行状态:
docker logs -f warp_proxy
如果你看到[INFO] Socks5 proxy listening on :1080,说明成功了。按Ctrl+C 退出日志查看。
4.4 测试代理是否生效 (在容器内测试):
curl -x socks5h://127.0.0.1:9091 https://ifconfig.me
如果返回的是一个 Cloudflare 的 IP(通常不是你 OVH 的 IP),那就大功告成。
5. 配置目标虚拟机 (让它走 WARP)
现在你的 LXC (192.168.100.10) 已经是一个透明的 SOCKS5 代理服务器了。你有两种方式让目标虚拟机使用它:
5.1 方式 A:应用级代理 (推荐,灵活)
如果你只需要浏览器或特定软件走 WARP,在浏览器安装 SwitchyOmega 插件。
添加 SOCKS5 代理:IP 192.168.100.10,端口 9091。
5.2 方式 B:系统级强制代理 (推荐,彻底隐藏)
如果你希望目标虚拟机的所有流量(包括不支持代理的软件)都走 WARP:
Windows: 安装 Clash。
rules: # ------------------------------------------------- # 1.【基础保障】局域网与系统核心直连 (绝对不能删) # ------------------------------------------------- - IP-CIDR,127.0.0.0/8,DIRECT - IP-CIDR,192.168.0.0/16,DIRECT - DOMAIN-SUFFIX,local,DIRECT # 如果你使用了 Tailscale 或 ZeroTier 等虚拟组网,也要加进来,例如: # - IP-CIDR,100.64.0.0/10,DIRECT # ------------------------------------------------- # 2.【特定应用】远程桌面 (RDP) -> 强制直连 # ------------------------------------------------- # 解释:所有目标端口为 3389 的流量都走直连。 # 这样你从这台虚拟机 RDP 连别人,或者别人连你(如果是出站响应),都使用 OVH 线路。 - DST-PORT,3389,DIRECT # 如果你有其他不想走代理的应用端口(比如 SSH 的 22,FTP 的 21),也可以加: - DST-PORT,22,DIRECT # ------------------------------------------------- # 3.【特定网站】指定某些服务 -> 强制走 WARP # ------------------------------------------------- # 场景 A:指定域名后缀 (最常用) - DOMAIN-SUFFIX,netflix.com,WARP-LXC - DOMAIN-SUFFIX,openai.com,WARP-LXC - DOMAIN-SUFFIX,ip138.com,WARP-LXC # 测试查IP用 - DOMAIN-SUFFIX,google.com,WARP-LXC # 场景 B:指定关键字 (模糊匹配) - DOMAIN-KEYWORD,chatgpt,WARP-LXC # ------------------------------------------------- # 4.【特殊策略】IPv6 处理 # ------------------------------------------------- # 建议 IPv6 全部直连,因为 WARP 对 IPv6 支持一般,且 OVH IPv6 质量很好 - IP-CIDR6,::/0,DIRECT # ------------------------------------------------- # 5.【默认兜底】剩下的流量走哪里? # ------------------------------------------------- # 选项 A (推荐):白名单模式 -> 默认全走直连 (OVH IP),只有上面指定的才走 WARP # 适合:服务器用途,希望大部分流量稳定,仅个别业务需要换 IP。 - MATCH,DIRECT # 选项 B:黑名单模式 -> 默认全走 WARP,只有上面指定的才走直连 # 适合:隐私需求高,希望默认隐藏 IP,仅 RDP 等少量服务直连。 # - MATCH,WARP-LXC
Linux: 使用 proxychains 或者配置环境变量。
# 对于大多数工具,HTTP 协议兼容性最好 export http_proxy="http://192.168.100.10:9091" export https_proxy="http://192.168.100.10:9091" # 对于支持 SOCKS5 的工具(如 curl, wget 较新版),SOCKS5 解析域名更佳 export all_proxy="socks5://192.168.100.10:9091"
6. 总结
- ⭕拓扑:LXC 挂在
vmbr1。 - ⭕网卡:LXC 使用 eth0 桥接到宿主机的
vmbr1。 - ⭕核心逻辑:LXC 通过宿主机 NAT 上网 -> 连接 Cloudflare -> 建立隧道 -> 暴露 9091 端口给内网其他机器使用。
7. 常见问题排错
7.1 容器无法联网,下载不了 Docker?
检查 vmbr1的网关设置。确认你在 PVE 宿主机的 /etc/network/interfaces 里配置了 NAT 转发(iptables ... MASQUERADE)。如果宿主机没配 NAT,容器是上不了网的。
7.2 Windows 连不上 9091 端口?
在 LXC 容器里运行 apt install net-tools 然后 netstat -tulpn。确认 Docker 监听的是 0.0.0.0:9091 而不是 127.0.0.1:9091(我的 docker 命令已经默认包含 0.0.0.0 映射)。同时检查宿主机的防火墙(如果你开了 PVE 防火墙,需要在 Datacenter -> Firewall 允许内网通过)。


暂无评论
要发表评论,您必须先 登录