记一次神奇的内网 DNS 污染

2020-02-11 02:15:24 +08:00
 future0906

背景

由于最近调整家中的拓扑结构,原本 x86(pfsense)作为一级路由负责拨号,WNDR4300(Openwrt)作为二级路由负责科学上网,光猫桥接的;后来调整为直接一级路由 x86(openwrt),WNDR4300 仅作为 AP。调整期间为了保证家人的网络连通,临时采用光猫作为一级路由拨号,这个是前提。

问题

在调整完拓扑后,科学上网似乎可以工作正常,G 站和 Y 站都可以访问,以为告一段落。在一段时间使用后,经常会无法访问,开头以为是机场有问不稳定。经过排查,发现机场基本都是正常,问题在域名解释上。ping G 站和 F 站得到的 IP 是错的。难道是路由的 DNS 被拦截和污染了(路由 unbound 设置的 upstream 是机场的服务器,这一段路径没有走$$)?通过排查后发现是本机 DNS 被污染了,主要通过下面几点发现:

  1. nslookup 查询路由 dns 是正确的。
  2. 每次禁用 /启用网卡之后,都能正常一段时间。
  3. 在停掉路由器的 DNS 服务、flushdns 之后,ping 居然还能正常解析
  4. 排除是本地电脑问题,DNS 污染我在 Macbook 上也能重现

排查

既然定了方向,那就尝试去排查一下,Windows 下能调试本地 DNS 的工具少之又少;还好在 Mac 上重现了,看 mDnsResponder 的日志,似乎每 3-5 秒就会刷一些日志,而我本地的网络活动基本没有(刚重装的系统,几乎没装软件)。日志上没有给出数据的来源地址,只好上 TCP Dump。有一堆 UDP 数据,其中很大部分是从一个外贸盒子来的,而且这个盒子是已经关机的了(我以为是关机的,因为已经按了电源键,而且 LED 灯已经关了,其实盒子应该是处于类似手机关屏的状态),拔掉网线后,UDP 数量减少,但是 DNS 依然会受到污染。

结论

如果不是盒子,那污染源是从哪里来的呢?会不会是从光猫那里来的呢?电信跟 G|F|W 合作,想想都觉得恐怖。不过如果是光猫发出的污染,那之前应该也有才对啊;突然想起来在光猫拨号的时候有一个PPPoE 路由桥混合模式我是勾选了,会不会跟这个有关呢?果然在删掉 wan 连接之后,世界清净了。

现在唯一不确定的是为什么会有污染数据?是外网的污染数据通过桥接进入到内网了吗?

2326 次点击
所在节点    宽带症候群
18 条回复
Chihaya0824
2020-02-11 02:20:14 +08:00
会不会是 x86 那边的 dns 或者其他因素有问题之类的? 之前有一次我莫名其妙的 DNS 被污染了最后发现是 LEDE 的软件有 bug...
Chihaya0824
2020-02-11 02:24:08 +08:00
噗,对不起我没看到停掉路由器 DNS 居然还能解析,好迷。虽然只是我的愚见,但是如果之前没事现在光猫应该不会突然就来污染你吧,你可以试着调回去试试?还有你试过隔离 AP 嘛,就直接插网线试试看能不能在 mac 上重现这个问题
Aoang
2020-02-11 03:22:27 +08:00
你没说清楚是不是还是光猫拨的号,如果是,不要用光猫拨号。光猫直接劫持 53 端口不就完事了?
如果不是,尝试重启光猫甚至重置光猫试试。
Archeb
2020-02-11 09:02:10 +08:00
电脑是不是有多个网卡,设置了 DNS.
nicevar
2020-02-11 09:16:20 +08:00
跟我之前情况相似,估计是 WNDR4300 的固件问题,之前我用两个路由梅林系统,只要开启静态路由就会出现这个问题
future0906
2020-02-11 09:18:04 +08:00
@Archeb

win 有三个 TAP,是 openvpn 的,都没有拨号; Mac 没有多余网卡
future0906
2020-02-11 09:21:15 +08:00
@Aoang

是光猫拨号的原因,宽带账号有 2 个 session ;出问题的时候,有两个设备同时拨号,分别是光猫和 openwrt,但实际光猫的拨号没有用的;当我删掉光猫的拨号后就好了。
imn1
2020-02-11 09:24:19 +08:00
这个标题,我还以为公司域的 DNS 服务器
这个正文,感觉是第一次用电信……电信默认连当地 DNS,这是众所周知的事,而且它还会连到一个 cache 服上,TTL 不是原来的
tankren
2020-02-11 11:04:43 +08:00
pfsense 太好用了 我都舍不得换。
zro
2020-02-11 12:29:32 +08:00
@tankren #9 搞得我又想买。。。
Xi
2020-02-11 12:43:15 +08:00
有可能是 win 内的软件干扰(国内流氓软件很多的),可以试试用手机、mac 系统试试,看看 dns 是否解析正确
future0906
2020-02-11 15:31:36 +08:00
@tankren 我也不想换,无奈透明科学上网的需求太强烈,又不太想 1/2 级路由这样处理
future0906
2020-02-11 15:32:53 +08:00
@zro 不过我感觉 OpenWRT 相比 pfsense 还是比较松散
zro
2020-02-11 15:41:41 +08:00
@future0906 #13 OpenWRT 就是强在软件库,所以没特殊需求我都是用它作旁路的(家里 24 小时开着两个 OP,客厅开电视还要加开一个 ),用它做旁路好像还是能透传的,不需要分个二级出来。。。
ddd270700
2020-02-11 15:49:32 +08:00
我这几天学习 dns,也遇到这个问题。
oovveeaarr
2020-02-11 16:15:03 +08:00
上 wireshark 抓包看看
tankren
2020-02-11 16:15:32 +08:00
@future0906 我 pfsense 配了 wpad,开网页都能自动翻墙,还行
isnullstring
2020-02-12 10:24:18 +08:00
@Chihaya0824 同,即使启用 DNS 劫持,也会发生解析不了谷歌的域名

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

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

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

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

© 2021 V2EX