简介
透明代理配置指南,让路由器实现全局代理,所有连接的设备自动使用代理服务,无需在每个设备上单独配置。
什么是透明代理
概念说明
- 传统代理:需要在应用中配置代理地址和端口
- 透明代理:用户无感知,流量自动转发到代理服务器
- 优势:一次配置,全设备受益
工作原理
- 设备发出网络请求
- 路由器拦截流量
- 根据规则判断是否需要代理
- 将流量转发到代理服务器
- 返回结果给设备
实现方式
方式一:软路由方案
硬件选择
- x86软路由:J1900、J3455、N5105等
- ARM设备:树莓派、NanoPi等
- 虚拟机:ESXi、PVE等平台
系统选择
- OpenWrt:开源,插件丰富
- iKuai:企业级,稳定
- RouterOS:功能强大
- Padavan:适合部分路由器
方式二:硬路由方案
支持的路由器
- 华硕路由器 + 梅林固件
- 网件路由器 + OpenWrt
- 小米路由器 + OpenWrt
- 红米路由器 + OpenWrt
OpenWrt 透明代理配置
安装必要组件
# 更新软件包
opkg update
# 安装必要软件
opkg install iptables-mod-tproxy
opkg install dnsmasq-full
opkg install ipset
使用 Passwall 透明代理
安装 Passwall
# 安装Passwall
wget -O passwall.sh https://raw.githubusercontent.com/xiaorouji/openwrt-passwall/main/install.sh
bash passwall.sh
配置透明代理
- 进入 Passwall 设置
- 基本设置:
- 启用主开关
- 选择节点
- TCP代理方式:TPROXY
- UDP代理方式:TPROXY
- DNS设置:
- 启用DNS解析
- 选择DNS方案(推荐Smartdns)
- 保存并应用
使用 OpenClash 透明代理
配置步骤
- 安装 OpenClash
- 导入配置文件
- 运行模式设置:
- 选择 Fake-IP模式 或 Redir-Host模式
- 启用 TUN模式(可选)
- 启动服务
手动配置透明代理
iptables 规则
创建脚本 /etc/init.d/transparent-proxy:
#!/bin/sh /etc/rc.common
START=99
STOP=10
PROXY_PORT=1080
PROXY_SERVER=127.0.0.1
start() {
# 创建新链
iptables -t nat -N PROXY
iptables -t mangle -N PROXY
# 绕过局域网和国内IP
iptables -t nat -A PROXY -d 0.0.0.0/8 -j RETURN
iptables -t nat -A PROXY -d 10.0.0.0/8 -j RETURN
iptables -t nat -A PROXY -d 127.0.0.0/8 -j RETURN
iptables -t nat -A PROXY -d 169.254.0.0/16 -j RETURN
iptables -t nat -A PROXY -d 172.16.0.0/12 -j RETURN
iptables -t nat -A PROXY -d 192.168.0.0/16 -j RETURN
iptables -t nat -A PROXY -d 224.0.0.0/4 -j RETURN
iptables -t nat -A PROXY -d 240.0.0.0/4 -j RETURN
# 重定向到代理端口
iptables -t nat -A PROXY -p tcp -j REDIRECT --to-ports $PROXY_PORT
# 应用规则
iptables -t nat -A PREROUTING -p tcp -j PROXY
iptables -t nat -A OUTPUT -p tcp -j PROXY
}
stop() {
# 删除规则
iptables -t nat -D PREROUTING -p tcp -j PROXY
iptables -t nat -D OUTPUT -p tcp -j PROXY
iptables -t nat -F PROXY
iptables -t nat -X PROXY
iptables -t mangle -F PROXY
iptables -t mangle -X PROXY
}
梅林固件透明代理
使用软件中心插件
KoolClash 配置
- 安装 KoolClash
- 导入配置文件
- 运行模式:
- 选择 规则模式
- 自动实现透明代理
- DNS设置:
- 使用插件DNS
- 或配合 SmartDNS
SSR Plus+ 配置
- 启用 SSR Plus+
- 运行模式:大陆白名单模式
- UDP转发:启用
- 访问控制:
- 全部设备代理
- 或按需设置
DNS 配置
DNS 污染问题
解决方案
-
使用代理插件DNS
- Passwall内置DNS
- OpenClash的Fake-IP
-
SmartDNS分流
国内域名 → 国内DNS(直连) 国外域名 → 国外DNS(通过代理) -
DoH/DoT加密DNS
- Cloudflare DoH:1.1.1.1
- Google DoH:8.8.8.8
Dnsmasq 配置
编辑 /etc/dnsmasq.conf:
# 上游DNS服务器
server=127.0.0.1#5353
# 缓存大小
cache-size=10000
# 禁用解析IPv6
filter-aaaa
分流规则
基于域名分流
GFW列表
使用GFW列表实现精准分流:
# 在Passwall中
规则管理 → 订阅规则 → GFW列表
自定义规则
添加特定域名:
# 代理域名
server=/google.com/
server=/youtube.com/
# 直连域名
server=/baidu.com/114.114.114.114
基于IP分流
中国IP直连
使用 China IP 列表:
# 创建ipset
ipset create china hash:net
# 导入IP列表
wget -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | \
awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' | \
while read ip; do ipset add china $ip; done
iptables规则
# 中国IP直连
iptables -t nat -A PROXY -m set --match-set china dst -j RETURN
UDP 转发
启用UDP代理
Passwall配置
基本设置 → UDP代理方式 → TPROXY
iptables规则
# UDP转发
iptables -t mangle -A PROXY -p udp -j TPROXY \
--on-port $PROXY_PORT --tproxy-mark 0x01/0x01
ip rule add fwmark 0x01/0x01 table 100
ip route add local 0.0.0.0/0 dev lo table 100
游戏加速
游戏UDP优化
- 启用UDP转发
- 配置游戏IP规则
- 选择低延迟节点
- 启用多路复用
游戏规则
添加游戏服务器IP:
# Steam
ipset add game_ip 185.25.182.0/24
# Epic
ipset add game_ip 3.216.0.0/14
性能优化
硬件加速
# 启用flow offloading
uci set firewall.@defaults[0].flow_offloading='1'
uci set firewall.@defaults[0].flow_offloading_hw='1'
uci commit firewall
/etc/init.d/firewall restart
连接数优化
# 增加连接跟踪表大小
echo 65536 > /proc/sys/net/netfilter/nf_conntrack_max
# 优化TCP
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 1 > /proc/sys/net/ipv4/tcp_fin_timeout
访问控制
按设备控制
白名单模式
只有指定设备使用代理:
# 基于MAC地址
iptables -t nat -A PROXY -m mac --mac-source AA:BB:CC:DD:EE:FF -j RETURN
黑名单模式
排除特定设备:
# 排除设备
iptables -t nat -I PROXY -s 192.168.1.100 -j RETURN
按时间控制
使用 cron 定时任务:
# 工作日8-18点启用
0 8 * * 1-5 /etc/init.d/passwall start
0 18 * * 1-5 /etc/init.d/passwall stop
故障排查
检查代理状态
# 查看iptables规则
iptables -t nat -L PROXY -n -v
# 查看路由
ip rule show
ip route show table 100
# 查看连接
netstat -an | grep ESTABLISHED
测试连接
# 测试直连
curl --interface eth0 ip.sb
# 测试代理
curl ip.sb
# 测试DNS
nslookup google.com
日志分析
# 查看系统日志
logread | grep proxy
# 实时日志
logread -f
常见问题
部分网站无法访问
- 检查分流规则
- 更新GFW列表
- 手动添加域名规则
速度慢
- 选择更快节点
- 优化DNS设置
- 检查规则是否过多
- 启用硬件加速
游戏延迟高
- 启用UDP转发
- 选择游戏专用节点
- 添加游戏IP规则
- 禁用QoS
安全建议
- 使用强密码保护路由器
- 定期更新固件和插件
- 启用访客网络隔离
- 配置防火墙规则
- 定期检查日志
- 备份配置文件
注意事项
- 确保路由器性能充足
- 注意散热问题
- 合理配置规则避免冲突
- 定期更新分流规则
- 遵守当地法律法规
- 不要滥用代理服务