如何屏蔽 DNS Local Cache 的返回结果? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leavic
V2EX    DNS

如何屏蔽 DNS Local Cache 的返回结果?

  •  
  •   leavic 2014-06-30 20:27:50 +08:00 5080 次点击
    这是一个创建于 4210 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前情提要:
    参考这个帖子的内容:
    http://www.v2ex.com/t/118885#reply22

    我的做法是利用路由器上的iptables FILTER表,配合m32模块,自动丢弃DNS查询结果中返回的污染IP,保证DNS的干净.
    命令:
    iptables -t mangle -A PREROUTING -m set --match-set vpn dst -j MARK --set-mark 1
    iptables -I INPUT -p udp -m udp --sport 53 -m u32 --u32 "0&0x0F000000=0x05000000 && 22&0xFFFF@16=0x4A7D7F66,0x4A7D9B66,0x4A7D2766,0x4A7D2771,0xBDA31105,0xD155E58A,0xF9812E30,0x80797E8B,0x9F6A794B,0xA9840D67" -j DROP
    iptables -I INPUT -p udp -m udp --sport 53 -m u32 --u32 "0&0x0F000000=0x05000000 && 22&0xFFFF@16=0xC043C606,0xCA6A0102,0xCAB50755,0xCBA1E6AB,0xCB620741,0xCF0C5862,0xD0381F2B,0xD1913632,0xD1DC1EAE,0xD1244921" -j DROP
    iptables -I INPUT -p udp -m udp --sport 53 -m u32 --u32 "0&0x0F000000=0x05000000 && 22&0xFFFF@16=0xD35E4293,0xD5A9FB23,0xD8DDBCB6,0xD8EAB30D,0xF3B9BB27,0x253D369E,0x042442B2,0x2E52AE44,0x3B1803AD,0x402158A1" -j DROP
    iptables -I INPUT -p udp -m udp --sport 53 -m u32 --u32 "0&0x0F000000=0x05000000 && 22&0xFFFF@16=0x4021632F,0x4042A3FB,0x4168CAFC,0x41A0DB71,0x422DFCED,0x480ECD68,0x480ECD63,0x4E10310F,0x0807C62D,0x5D2E0859" -j DROP

    问题:
    在使用114,阿里云这些DNS的时候都很正常,污染结果会被丢弃,但下面这种情况好像就挡不住.
    A(一级路由,假定默认的通告DNS是123.123.123.123)==>B(我的路由)==>C(我的设备)

    在B或者C上用A上的默认DNS查询,则所有污染的结果都可以无障碍的进来.但是本地抓包看起来和用114这些DNS查询的结果是一样的,实在搞不清楚为什么这个污染的解析结果没有被丢弃.

    我只能猜测是:
    当用A上的默认DNS查询时,其实没有真正的访问DNS,而是直接从A路由的缓存上读取了数据,而这个数据回传过程可能不是走的UDP 53端口,所以防火墙规则无效.

    那么,要如何解决这个问题呢?是否可以绕过本地的DNS缓存,或者针对上级路由返回的DNS缓存应该如何过滤?
    7 条回复    2014-07-03 16:52:33 +08:00
    LazyZhu
        1
    LazyZhu  
       2014-06-30 21:05:17 +08:00   1
    主要是浏览器和系统的DNS缓存吧,很麻烦哦
    leavic
        2
    leavic  
    OP
       2014-06-30 21:43:45 +08:00
    @LazyZhu 我是在路由器上查询的啊....
    RainFlying
        3
    RainFlying  
       2014-06-30 21:48:09 +08:00 via Android
    直接查询非 53 端口不就没污染了?
    leavic
        4
    leavic  
    OP
       2014-07-01 09:01:35 +08:00
    @RainFlying 你怎么控制路由的查询命令?
    RainFlying
        5
    RainFlying  
       2014-07-02 07:43:51 +08:00 via Android &bsp; 1
    @leavic 1. 如果 resolver 支持可以直接用 [208.67.222.222]:5353 形式,比如 OpenBSD,还可以指定使用 TCP 当时查询。
    2. iptables 把发出的 DNS 查询的端口改成非 53 端口
    3. 使用 DNSMasq. server=/#/208.67.222.222#5353
    KCheshireCat
        6
    KCheshireCat  
       2014-07-03 15:55:40 +08:00
    在input链上的规则只对路由器自己有效

    你需要在FORWARD链上也写上规则
    leavic
        7
    leavic  
    OP
       2014-07-03 16:52:33 +08:00
    @KCheshireCat 我就是在路由上查询的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3446 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 04:38 PVG 12:38 LAX 20:38 JFK 23:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86