zw963 / asuswrt-merlin-transparent-proxy

transparent proxy base on ss, v2ray, xray, ipset, iptables, chinadns on asuswrt merlin or side router.
MIT License
380 stars 80 forks source link

[BUG] 一个可能存在的BUG #67

Closed zeroohub closed 5 years ago

zeroohub commented 5 years ago

针对 ss+dnsmasq+dnscrypt的方案

假如在shadowsocks.json里服务器地址用的是域名, 但是这个域名被污染, 在ipset add的过程中就会把污染的ip加入CHINAIP列表里.

可能的解决办法是, 在配置iptable之前, 先确保dnsmasq -> dnscrypt的链已经可以工作.

同时dnscrypt-proxy可以升级到 dnscrypt-proxy2, 默认配置用个红鱼的公共dns.

zw963 commented 5 years ago

假如在shadowsocks.json里服务器地址用的是域名, 但是这个域名被污染, 在ipset add的过程中就会把污染的ip加入CHINAIP列表里.

谢谢建议, 这个问题的确有考虑过(虽然我自己的使用过程中, 其实并没有出现过).

可能的解决办法是, 在配置iptable之前, 先确保dnsmasq -> dnscrypt的链已经可以工作.

刚刚检查了下代码, 这个问题似乎并不存在, 执行顺序 似乎是没问题的.

有问题的可能是 这段 代码的位置, 也许应该放到上面的重启 dnscrypt-proxy 之后, 这段代码的用途本身是为了方便的切换代理(我们公司有好几个线路, 不断的在切换, 其中有一个用的是域名), 我其实是不确定 一个域名作为 ipset 的参数是合法的, 但是, 公司又可以工作 ......

同时dnscrypt-proxy可以升级到 dnscrypt-proxy2, 默认配置用个红鱼的公共dns.

谢谢提醒, 我试了下官方预编译好的 client, 发现没有我当前路由器(AC66U)可用的. (MIPS)

zw963 commented 5 years ago

已经确认 dnscrypt-proxy2 可以在 AC-5300 下面工作, 使用 linux-arm 预编译版本, 但是由于占用内存问题,目前仍旧在较老的路由器上不工作,看 这个 回复,如果一旦这个得到修复,有计划全面迁移到 dnscrypt-proxy2.

现在老版本的 dnscrypt-proxy 不得不使用 TCP 模式才能工作(墙太厉害了), v2 版至少现在测试来看, 使用 udp 也是可以的.

zw963 commented 5 years ago

红鱼 DNS 也已经确定可以工作, 下面是从官网复制过来的信息:

    [static.'ea-dns.rubyfish.cn']
     stamp = 'sdns://AgQAAAAAAAAADzExNS4xNTkuMTU0LjIyNgAPZG5zLnJ1YnlmaXNoLmNuCi9kbnMtcXVlcnk'
    [static.'uw-dns.rubyfish.cn']
    stamp = 'sdns://AgQAAAAAAAAADDQ3Ljk5LjE2NS4zMQAPZG5zLnJ1YnlmaXNoLmNuCi9kbnMtcXVlcnk'

这些信息,稍后 dnscrypt-proxy2 客户端会用到.

gitx6 commented 5 years ago

安装dnscrypt-proxy2三大步骤。替换程序,添加toml文件,修改S09dnscrypt-proxy文件。

  1. 替换程序 1.1 下载路径: https://www.snbforums.com/threads/release-dnscrypt-installer-for-asuswrt.36071,或者:https://github.com/jedisct1/dnscrypt-proxy/releases 1.2 替换程序:(假定新程序在/opt/etc) mv /opt/sbin/dnscrypt-proxy /opt/sbin/dnscrypt-proxy1 mv /opt/etc/dnscrypt-proxy /opt/sbin/dnscrypt-proxy

  2. 添加toml 2.1 在/opt/etc增加新文件dnscrypt-proxy.toml 2.2 添加如下内容:

server_names = ['ea-dns.rubyfish.cn', 'uw-dns.rubyfish.cn']

listen_addresses = ['127.0.0.1:65053']

#force_tcp = true
tls_cipher_suite = [52392, 49199]
block_ipv6 = true

[static]
    [static.'ea-dns.rubyfish.cn']
     stamp = 'sdns://AgQAAAAAAAAADzExNS4xNTkuMTU0LjIyNgAPZG5zLnJ1YnlmaXNoLmNuCi9kbnMtcXVlcnk'
    [static.'uw-dns.rubyfish.cn']
    stamp = 'sdns://AgQAAAAAAAAADDQ3Ljk5LjE2NS4zMQAPZG5zLnJ1YnlmaXNoLmNuCi9kbnMtcXVlcnk'` 
  1. 修改S09denscrypt-proxy文件 3.1 修改/etc/opt/init.d/S09dnscrypt-proxy 3.2 替换为ARGS="-config /opt/etc/dnscrypt-proxy.toml -logfile /var/log/dnscrypt-proxy.log -loglevel 6"
zeroohub commented 5 years ago

https://github.com/zeroohub/asuswrt-merlin-transparent-proxy 我自己的是ac5300, 改了个专用的版本, 带ss换成了ssr(毕竟大量机场还是ssr为主), 添加订阅. 使用dnscrypt-proxy2版本, 重新组织了下代码逻辑....有兴趣可以看看..

gitx6 commented 5 years ago

每周一更新白名单,会导致S09denscrypt-proxy被复原。注释掉以下代码:

https://github.com/zw963/asuswrt-merlin-transparent-proxy/blob/master/router/opt/etc/patch_router#L90-L97

zeroohub commented 5 years ago

貌似现在公共加密DNS的服务对DOH, DOT支持更好, 可以把dnscrypt换成stubby来实现.

zeroohub commented 5 years ago

假如在shadowsocks.json里服务器地址用的是域名, 但是这个域名被污染, 在ipset add的过程中就会把污染的ip加入CHINAIP列表里.

谢谢建议, 这个问题的确有考虑过(虽然我自己的使用过程中, 其实并没有出现过).

可能的解决办法是, 在配置iptable之前, 先确保dnsmasq -> dnscrypt的链已经可以工作.

刚刚检查了下代码, 这个问题似乎并不存在, 执行顺序 似乎是没问题的.

有问题的可能是 这段 代码的位置, 也许应该放到上面的重启 dnscrypt-proxy 之后, 这段代码的用途本身是为了方便的切换代理(我们公司有好几个线路, 不断的在切换, 其中有一个用的是域名), 我其实是不确定 一个域名作为 ipset 的参数是合法的, 但是, 公司又可以工作 ......

同时dnscrypt-proxy可以升级到 dnscrypt-proxy2, 默认配置用个红鱼的公共dns.

谢谢提醒, 我试了下官方预编译好的 client, 发现没有我当前路由器(AC66U)可用的. (MIPS)

昨天发现, ipset直接加域名的话, 假如域名里存在-字符, 会报错, 还是用dig解析以后再加会好一点.

gitx6 commented 5 years ago

dnscrypt installer for asuswrt

https://www.snbforums.com/threads/release-dnscrypt-installer-for-asuswrt.36071

https://github.com/thuantran/dnscrypt-asuswrt-installer

zeroohub commented 5 years ago

用stubby直接配置DOT, 比用dnscrypt更简单方便.

zw963 commented 5 years ago

@zeroohub , 研究了下,stubby 挺好, 但是问题和 dnscrypt-proxy2 一样, 老的 AC66U opkg 没有 stubby 这个包 ...... 这里 有安装脚本可供参考。

zw963 commented 5 years ago

已经新增 dnscrypt-proxy 2 部署方案, 使用红鱼 DNS.

Acris commented 5 years ago

@zeroohub 你好,看了一下你fork的仓库已经换成了stubby版本,我目前也在用,但是每次启动stubby后退出SSH终端,会导致stubby进程退出。我看stubby那边也有人提了issue:https://github.com/getdnsapi/stubby/issues/127 ,不知道你是否有遇到这个问题?