V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
future0906
V2EX  ›  宽带症候群

记一次神奇的内网 DNS 污染

  •  
  •   future0906 · 2020-02-11 02:15:24 +08:00 · 2287 次点击
    这是一个创建于 1738 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    由于最近调整家中的拓扑结构,原本 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 连接之后,世界清净了。

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

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

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

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