Openwrt上实现透明代理

背景 前一段时间,在ESXI上部署了一台Plex服务器。解决了一些恼人的问题后,用得还算满意,但是TMDb搜刮器在匹配电影信息时,总会丢失一些Poster海报信息。 最终发现,The Movie Database (TMDb) 这个地址被和谐社会了。 由于Plex不支持设置代理,且手动设置HTTP_PROXY后还是无效,所以决定把Plex这台服务器加入透明代理网络中。 参考以前的文章《Openwrt上使用dnsmasq和ipset实现域名分流》,将网关、DNS设置为192.168.0.254 因为之前重新部署了ESXI环境,所以Openwrt这台虚拟机不幸丢失,所以只能大侠请重新来过。 由于之前的方案在实际使用中还有一些不足,在综合了网络上现有的一些方案后,设计出一份改进版的方案。 网络上原始的方案 安装软件 shadowsocks-libev和luci-app-shadowsocks(提供ss-rules) 依赖iptables-mod-tproxy和ip chinadns和luci-app-chinadns 配置 使用luci-app配置shadowsocks 开启端口转发,设置本地端口为5300,用于DNS查询 被忽略IP列表选择ChinaDNS路由表(/etc/chinadns_chnroute.txt) 使用luci-app配置ChinaDNS 设置本地端口为5353 设置上游服务器为114.114.114.114,127.0.0.1:5300 使用luci-app配置DHCP/DNS 设置DNS转发为127.0.0.1#5353 勾选忽略解析文件 这样一来,你拥有了: 一个无污染的DNS服务器,端口为53 国内DNS解析出国内IP,国外DNS解析出国外IP 一个透明代理的网关 如果请求IP在ChinaDNS路由表中,则走正常流量 如果请求IP不在ChinaDNS路由表中,则走代理流量 改进版方案 尽管上面的方案已经能够实现透明代理,但是还有以下问题(附上解决方案): 在某些ISP下使用ss-tunnel(即端口转发)不稳定, 导致DNS查询时间过长或超时 解决方案: 使用dnscrypt-proxy提供的DNS查询服务 ChinaDNS有时会出现误判,导致访问国内站点时走代理 解决方案: 在dnsmasq中配置chinalist,指定国内域名使用国内DNS进行解析 不在列表中的站点交由ChinaDNS判断 只能定义强制走代理的IP,而不能是域名,维护起来比较麻烦 解决方案: 归功于ss-rules的实现,ipset集合ss_spec_dst_fw中存放强制走代理的IP 在dnsmasq中配置my-list(自定义域名)列表,将my-list的查询结果保存到ss_spec_dst_fw中 额外安装以下软件: 安装dnsmasq-full 需要先卸载自带的dnsmasq 安装dnscrypt-proxy 提供安全不受污染的DNS服务器 更新配置 使用luci-app配置shadowsocks 关闭端口转发 配置dnscrypt-proxy 修改监听端口为127....

December 28, 2016 · 1 分钟 · keepwn

Openwrt上使用dnsmasq和ipset实现域名分流

目标 部署一台自动代理路由器,实现根据域名来自动设定直连或者代理,而我要做的只是设置PC的默认网关为主路由器(192.168.0.1)还是自动代理路由器(192.168.0.254)。 创建Openwrt虚拟机 系统版本 主路由器 (ip: 192.168.0.1) ESXI 6.0U2 Openwrt 15.05.1 (ip: 192.168.0.254,gateway: 192.168.0.1) Openwrt虚拟机的配置教程有很多,这里只针对ESXI版Openwrt可能会遇到的问题说明下: 在ESXI6上,openwrt_x86每次启动时会大概率的出现卡死现象,表现为Kernel panic - not syncing: Attempted to kill init。 解决办法:改用openwrt_x64后正常。原因未知。 在ESXI6上,在openwrt上执行某些命令时,会被强制关机,表现为 来自 promote 的消息: The operation on the file "/vmfs/devices/deltadisks/17ad1ab5-openwrt-15. 05.1-x86-64-combined-ext4-s001.vmdk" failed (Bad address). The file system where disk "/vmfs /devices/deltadisks/17ad1ab5-openwrt-15.05.1-- x86-64-combined-ext4-s001.vmdk" resides is full. Select _Retry to attempt the operation again. Select Cancel to end the session....

June 1, 2016 · 2 分钟 · keepwn
0%