Closed Jiawens closed 2 years ago
分别试一下 curl baidu.com,curl google.com 可以不可以访问。
现在这样seeker配置有点问题,默认所有域名都走了代理,这样流量都会走到socks5服务器。socks5服务器根据规则,如果是直连的域名,会直接对域名发起连接。这时候seeker dns又会把直连域名解析成10.x.x.x 的IP,又会被seeker捕获。流量就产生循环了。
想避免这种情况,需要将直连规则写在seeker,或者 socks5代理那边不使用系统dns
分别试一下 curl baidu.com,curl google.com 可以不可以访问。
现在这样seeker配置有点问题,默认所有域名都走了代理,这样流量都会走到socks5服务器。socks5服务器根据规则,如果是直连的域名,会直接对域名发起连接。这时候seeker dns又会把直连域名解析成10.x.x.x 的IP,又会被seeker捕获。流量就产生循环了。
想避免这种情况,需要将直连规则写在seeker,或者 socks5代理那边不使用系统dns
我试了一下 curl,连接 baidu.com 和 google.com 时都是使用它们的真实 ip,baidu.com 可以访问,但 google.com 无响应(半分钟内无错误代码)
根据我的观察,clash 没有向 seeker 请求 dns,而且所有发往 tun_cidr 的数据包似乎没有到达 seeker (至少没有到达后端 socks5 代理),导致程序一直没有接收到响应,所以应该不是因为流量循环的问题。
现在配置了一下 systemd-resolved,关闭了 firewalld,可以成功运行了,我再具体研究一下是防火墙的哪部分功能导致的问题然后发上来,抱歉耽误您时间了,也希望后来的人能以我为鉴
找了一下,没找到解决 firewalld 和 tun 打架的方法 :( 所以我选择禁用 firewalld ,这个 issue 应该可以关掉了
那应该是设置系统 dns 没生效。seeker现在在 linux 下是通过修改 /etc/resolv.conf 的方式实现的,可能系统不认这种方式。
你是什么系统,我回头看一下
那应该是设置系统 dns 没生效。seeker现在在 linux 下是通过修改 /etc/resolv.conf 的方式实现的,可能系统不认这种方式。
你是什么系统,我回头看一下
我是 Arch Linux,一开始设置 dns 未生效是因为我把 systemd resolved 关了;之后把配置文件里的 DNSStubListener 设置为 no 再启用(不这样的话会导致本机 53 端口被它占用),seeker 就可以成功设置系统 dns 了。 但是在这之后浏览器什么的只能成功请求 dns,还不能联网,是我手动关掉 firewalld 之后才正常的。
我的网卡名是 enp4s0,电脑 ip 为 192.168.3.79,我使用 clash 将我的 trojan(域名假设为 example.com)转换成 5589 端口上的 socks5 代理,经 curl 测试过,可以连接到 google.com ;然后使用 seeker 通过 tun 代理整个系统的请求,seeker 配置如下:
然后通过 sudo 运行 seeker,无报错,此时 ip rule 如下:
ip route 如下:
然后使用强制取消代理(但未清除 dns 缓存)的 chrome,可以访问 baidu.com 和 bing.com,但无法访问 google.com; 之后使用 dig 向 seeker 请求解析 bing.com( seeker 没有让所有应用都使用它提供的 dns 这件事稍后再谈),结果为 10.0.0.14,但是如果使用 curl --resolve bing.com:443:10.0.0.14 https://bing.com -v,结果如下:
之后再也没有输出,seeker 也没有输出信息,clash 同样没有输出日志。 以下是我机器的 uname -r:
(有些怀疑是系统不干净,所以打算 24h 内完全重启后再试一下,后续会发在这里) 提供的信息有些多,还请见谅,也提前感谢愿意帮忙分析的人啦。