Debian+v2rayA+Xray 搭建旁路由透明代理完整指南
本指南基于 J1900 小主机、Debian 12 系统,实现:
旁路由模式(局域网设备将网关指向本机即可科学上网)
透明代理(无需客户端手动设置代理)
Web 管理界面(v2rayA)
兼容 Docker 服务与 EasyTier 异地组网(不冲突)
📦 一、全新安装 Debian 12 后的基础环境
1.1 更新系统并安装必要工具
bash
sudo apt update && sudo apt upgrade -y
sudo apt install curl wget git iptables iptables-persistent net-tools -y1.2 确认网卡名称与 IP 地址
bash
ip addr show # 查看网卡名,如 enp3s0、eth0 等
ip route | grep default # 确认默认网关,例如 192.168.1.1假设你的 Debian 固定 IP 为 192.168.1.2,主路由 IP 为 192.168.1.1。
🚀 二、安装 Xray 核心(由官方脚本管理)
⚠️ 不要用
apt install xray,它缺少 systemd 服务文件。
bash
# 安装 Xray(自动创建 systemd 服务)
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
# 验证版本
xray -version此时 Xray 已安装但先不启动(让 v2rayA 来管理它)。如果你之前启动过,请停止并禁用:
bash
sudo systemctl stop xray
sudo systemctl disable xray🧩 三、安装 v2rayA
3.1 添加官方 APT 源并安装
bash
# 添加公钥
wget -qO - https://apt.v2raya.org/key/public-key.asc | sudo tee /etc/apt/keyrings/v2raya.asc
# 添加源
echo "deb [signed-by=/etc/apt/keyrings/v2raya.asc] https://apt.v2raya.org/ v2raya main" | sudo tee /etc/apt/sources.list.d/v2raya.list
# 更新并安装
sudo apt update
sudo apt install v2raya -y3.2 启动 v2rayA 并设置开机自启
bash
sudo systemctl start v2raya
sudo systemctl enable v2raya
sudo systemctl status v2raya # 应显示 active (running)🌐 四、配置 v2rayA Web 界面
4.1 登录管理页面
浏览器访问 http://你的DebianIP:2017,首次访问时创建管理员账户并登录。
4.2 导入订阅节点
点击左侧菜单 “导入” → “订阅链接”
粘贴机场订阅 URL,点击 “确定”
等待节点列表刷新
4.3 核心设置(关键项)
进入 “设置” → “透明代理/系统代理”
启用:
GFWList模式勾选 “开启IP转发” 和 “开启端口分享”
实现方式:
redirect(最稳定)
“防止DNS污染”:建议
关闭(让代理自动处理即可)“地址与端口”(保持默认):
HTTP 端口:
20171SOCKS5 端口:
20170
4.4 运行代理
在节点列表中右键点击任意可用节点 → “连接”
点击右上角 “运行” 按钮(变成 “停止” 即表示运行中)
4.5 验证代理核心正常工作
在 Debian 终端执行:
bash
curl -x http://127.0.0.1:20171 https://www.google.com -I若返回 HTTP/2 200 或 301,说明代理核心 OK。
🛠️ 五、透明代理规则配置(最重要的一步)
⚠️ v2rayA 有时不会自动添加 iptables 规则,需手动添加。下面提供一套无副作用的规则集,确保:
访问 Debian 本机服务(SSH、v2rayA 管理页面、Docker 端口)不被劫持
局域网其他设备流量被正确重定向到 v2rayA
5.1 确认网卡名
bash
NIC=$(ip route | grep default | awk '{print $5}')
echo $NIC # 记住输出,如 enp3s05.2 添加规则(一次性执行)
bash
# 清空旧的 nat 规则(可选,但推荐)
sudo iptables -t nat -F PREROUTING
# 规则1:放行所有目标为本机 IP 的流量(避免管理页面、SSH 等被劫持)
sudo iptables -t nat -A PREROUTING -d 192.168.1.2 -j RETURN
# 规则2:放行本地回环接口
sudo iptables -t nat -A PREROUTING -i lo -j RETURN
# 规则3:放行已建立的连接
sudo iptables -t nat -A PREROUTING -m conntrack --ctstate RELATED,ESTABLISHED -j RETURN
# 规则4:放行 v2rayA 的 Web 端口和代理端口(避免自循环)
sudo iptables -t nat -A PREROUTING -p tcp --dport 2017 -j RETURN
sudo iptables -t nat -A PREROUTING -p tcp --dport 20171 -j RETURN
# 规则5:将所有其他 TCP 流量重定向到 v2rayA
sudo iptables -t nat -A PREROUTING -i $NIC -p tcp -j REDIRECT --to-port 201715.3 验证规则
bash
sudo iptables -t nat -L PREROUTING -n -v --line-numbers你应该看到 5 条 RETURN 规则(放行) + 1 条 REDIRECT 规则。
5.4 永久保存规则
bash
sudo netfilter-persistent save之后每次重启自动加载。
🧪 六、客户端测试
6.1 手动修改 Windows/Mac 网络设置
将默认网关改为 Debian 的 IP(例如
192.168.1.2)DNS 服务器也可改为
192.168.1.2(或公共 DNS,如114.114.114.114)保存后,浏览器访问
https://www.google.com应能打开同时访问
http://192.168.1.2:2017应能打开 v2rayA 管理页面
6.2 若希望全自动(所有设备)
在主路由的 DHCP 设置中,将“默认网关”改为 192.168.1.2,并设置 DNS 为 192.168.1.2 或公共 DNS。重启设备或 renew IP 后自动生效。
🐳 七、与 Docker 服务共存(无冲突)
规则已经放行访问本机 IP 的流量,因此 Docker 容器映射到宿主机的端口(例如
192.168.1.2:3002)依然可以从局域网正常访问。容器主动联网(如
apt update)默认不走代理。若需要容器使用代理,请参考:yaml
# docker-compose.yml 中为特定容器添加环境变量 environment: - HTTP_PROXY=http://192.168.1.2:20171 - HTTPS_PROXY=http://192.168.1.2:20171不要在 iptables 中添加
-s 172.17.0.0/16之类的规则劫持 Docker 网段,否则会导致容器网络异常。
🔗 八、与 EasyTier 异地组网共存
EasyTier 创建的虚拟网卡(如
tun0)流量默认不被劫持,因为其目标 IP 通常不是局域网段。如果你需要让 EasyTier 的流量也走代理,需额外添加策略路由。一般不需要。
若遇到 EasyTier 连接失败,检查是否被 iptables 拦截(可以临时
sudo iptables -P FORWARD ACCEPT并观察)。
❓ 九、常见问题与解决方案
Q1:curl -x http://127.0.0.1:20171 测试成功,但 Windows 改网关后无法打开外网?
原因:iptables 规则缺失或错误。
解决:按照第五章重新添加规则。
Q2:v2rayA 管理页面(192.168.1.2:2017)打不开?
原因:透明代理将访问管理页面的流量也重定向了。
解决:确认规则中有
-p tcp --dport 2017 -j RETURN。如果已经存在,检查顺序是否在 REDIRECT 之前(用-I插入到前面)。
Q3:v2rayA 运行后,节点列表为空或不可用?
检查订阅链接是否有效(浏览器直接打开看能否返回节点配置)。
在 v2rayA 设置中更换“核心”为 Xray(如果显示“找不到核心”,确认 Xray 已安装且路径为
/usr/local/bin/xray)。
Q4:透明代理生效但国内网站也走代理导致变慢?
在 v2rayA 设置中选择 “GFWList模式”(只代理被屏蔽的网站),或 “大陆白名单模式”(更激进,不推荐)。GFWList 模式最合适。
Q5:重启后透明代理失效?
检查
iptables-persistent是否已保存规则:sudo iptables -t nat -L PREROUTING -n -v。重新执行第五章的保存命令:
sudo netfilter-persistent save。
Q6:想要完全卸载 v2rayA 并恢复系统?
bash
sudo systemctl stop v2raya
sudo apt remove v2raya
sudo iptables -t nat -F PREROUTING # 清空规则
sudo netfilter-persistent save✅ 十、总结
按照本指南,你的 Debian 旁路由将具备:
✅ 稳定的透明代理科学上网
✅ Web 界面方便管理节点和切换模式
✅ 与 Docker、EasyTier 等服务和平共处
✅ 重启后自动恢复所有规则
关键要点:
不要使用
apt install xray,用官方脚本。手动添加 iptables 规则(v2rayA 自动规则可能无效)。
放行本机 IP 和 v2rayA 端口,避免管理页被劫持。
保存规则到
iptables-persistent。
评论