利用 mosdns + tpclash 搭建透明代理尚存的一些问题

157 天前
 zwyyy456

总结来说,就是设置了 mosdns 监听了 N1 的 53 端口,手机设置 dns 指向 N1 ,但是我看 mosdns 的日志,好像没有处理任何 dns 请求,请教一下可能的原因是什么。

我现在是利用 mosdns + tpclash 在 N1 上搭建了透明代理,mosdns 的 docker-compose.yml 配置如下:

version: '3'
services:
  mosdns:
    container_name: mosdns
    image: irinesistiana/mosdns:latest
    ports:
      - "5533:5533/udp"
      - "5533:5533/tcp"
    volumes:
      - /root/mosdns:/etc/mosdns
    restart: always

N1 上的 mosdns 负责处理 dns ,对国内域名的 dns 请求,返回真实的解析出来的 ip ,对于国外域名,则会返回一个 198.18.x.x 的 fakeip ,主路由设置了静态路由表,对于 fakeip 的流量会被转发到 N1 上,tpclash 会处理。

主路由是刷了 padavan 的红米 ac2100 ,在 内部网络( LAN ) -> DHCP 服务器dnsmasq.servers 设置了 server=192.168.6.206#5533

但是这样的问题就是主路由下的所有设备都会受到影响,具备科学上网的功能,然而室友有意见;

所以我希望是能指定部分设备被透明代理;

我试过将 docker-compose.yml 监听的端口设置为 53 ,即修改为:

version: '3'
services:
  mosdns:
    container_name: mosdns
    image: irinesistiana/mosdns:latest
    ports:
      - "53:53/udp"
      - "53:53/tcp"
    volumes:
      - /home/zwyyy/mosdns:/etc/mosdns
    restart: always

mosdns 的 config.yaml 也是监听 tcp 和 udp 的 :53 端口,后面我尝试 padavan 中的 dnsmasq.servers 不再转发 dns 请求,即注释掉 server=192.168.6.206#5533

  - type: "udp_server"
    args: { entry: main_seq, listen: ":53" }

  - type: "tcp_server"
    args: { entry: main_seq, listen: ":53" }

然后我尝试着手机上设置静态 ip ,即网关设置为主路由,dns 设置为 mosdns 所在的 N1 的 ip ,但是好像没有效果,mosdns 似乎没有处理任何 dns 请求,应该如何排查呢?

1364 次点击
所在节点    宽带症候群
2 条回复
zwyyy456
155 天前
大概是找到问题的原因了,被 ipv6 的 dns 抢答了。
wolonggl
154 天前
这个情况也碰到过。后通过抓包发现优先走 ipv6 的 dns 了,直接路由器劫持所有 53 请求解决

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1048000

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX