总结来说,就是设置了 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 请求,应该如何排查呢?
1
zwyyy456 OP 大概是找到问题的原因了,被 ipv6 的 dns 抢答了。
|
2
wolonggl 158 天前
这个情况也碰到过。后通过抓包发现优先走 ipv6 的 dns 了,直接路由器劫持所有 53 请求解决
|