首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

为什么 dig @8.8.8.8 news.ycombinator.com 返回了错误的 ip

  •  1
     
  •   tonywangcn · 76 天前 · 1502 次点击
    这是一个创建于 76 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题现象如下:

    在境内的服务器上运行一下命令,针对 news.ycombinator.com 每次返回的都是不同的 ip,好像在 3-5 个之间,

    而其实际地址应该是 209.216.230.240, 详细测试结果 ( https://tools.ipip.net/ping.php?view=news.ycombinator.com ).

    dig @8.8.8.8 news.ycombinator.com
    
    ; <<>> DiG 9.14.1 <<>> @8.8.8.8 news.ycombinator.com
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33306
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;news.ycombinator.com.      IN  A
    
    ;; ANSWER SECTION:
    news.ycombinator.com.   178 IN  A   67.228.221.221
    
    ;; Query time: 6 msec
    ;; SERVER: 8.8.8.8#53(8.8.8.8)
    ;; WHEN: Mon Aug 05 07:19:26 UTC 2019
    ;; MSG SIZE  rcvd: 65
    
    
    dig @8.8.8.8 news.ycombinator.com
    
    ; <<>> DiG 9.14.1 <<>> @8.8.8.8 news.ycombinator.com
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18922
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;news.ycombinator.com.      IN  A
    
    ;; ANSWER SECTION:
    news.ycombinator.com.   130 IN  A   31.13.77.55
    
    ;; Query time: 11 msec
    ;; SERVER: 8.8.8.8#53(8.8.8.8)
    ;; WHEN: Mon Aug 05 07:19:58 UTC 2019
    ;; MSG SIZE  rcvd: 65
    

    虽然 news.ycombinator.com 在境内被强,但是 8.8.8.8 及 1.1.1.1 均可正常使用,但为何针对 news.ycombinator.com 却返回错误 IP 呢?

    这个问题会导致 curl https://news.ycombinator.com 出现报错 curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to news.ycombinator.com:443

    最初以为是本地 openssl 的问题,结果发现是 dns 返回了错误的 ip,疑为被投毒。

    请问各位大佬,有没有解决方案,已测试过 alidns。

    dig dns.google
    
    ; <<>> DiG 9.14.1 <<>> dns.google
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27355
    ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 1452
    ;; QUESTION SECTION:
    ;dns.google.            IN  A
    
    ;; ANSWER SECTION:
    dns.google.     729 IN  A   8.8.8.8
    dns.google.     729 IN  A   8.8.4.4
    
    ;; Query time: 206 msec
    ;; SERVER: 1.1.1.1#53(1.1.1.1)
    ;; WHEN: Mon Aug 05 07:26:26 UTC 2019
    ;; MSG SIZE  rcvd: 71
    
    
    root @ / 
     [165] 🐳  → ping 8.8.8.8
    PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
    64 bytes from 8.8.8.8: icmp_seq=1 ttl=37 time=5.92 ms
    64 bytes from 8.8.8.8: icmp_seq=2 ttl=37 time=11.1 ms
    64 bytes from 8.8.8.8: icmp_seq=3 ttl=37 time=7.29 ms
    ^C
    --- 8.8.8.8 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 7ms
    rtt min/avg/max/mdev = 5.917/8.085/11.053/2.172 ms
    
    23 回复  |  直到 2019-08-06 16:39:17 +08:00
        1
    sbw   76 天前
    就是投毒
        2
    Nitroethane   76 天前 via Android
    Tip:普通 DNS 服务使用 UDP 协议
        3
    Buges   76 天前 via Android
    DNS 问题一律推荐 dnscrypt-proxy2,强制只使用 doh,解决一切投毒污染的疑难杂症。
        4
    lance86   76 天前
    这个是 dns 劫持,并不是真正的 8.8.8.8 向你响应的,而是中间的某一个环节比如 ISP 发现你发送向 8.8.8.8 的 dns 请求,那么就直接给你返回了一个响应,默认的 dns 请求是 udp 包,未加密,所以你的电脑也不会意识到是假的响应。

    注意你向 8.8.8.8 发送到 fns 请求的 query time 是 6ms 11ms,如果这个是真的服务器,8.8.8.8 肯定不在国内吧,最近的估计也是香港吧,6ms 不可能来得及。
        5
    edsheeran   76 天前 via iPhone
    gfvv
        6
    tonywangcn   76 天前
    @Nitroethane
    @Buges
    @lance86

    谢谢,目前问题在 docker 和 宿主机均有出现,正常浏览器及软件使用有 ss 软件,并没有受到影响,但 docker 和 宿主机内的应用则十分受此问题困扰,在每个 docker 中均安装相关软件工作量略大,请问有没有办法,在宿主机或云服务器假设一个服务,然后 docker 及宿主机简单配置即可解决此类问题呢? 类似于在宿主机配置好 ss,docker 中配置 https_proxy 即可。

    简单的搜索了些 dnscrypt-proxy2 相关的资料,貌似与 ss 颇为类似,将流量加密避免被中间投毒。
        7
    azh7138m   76 天前
    @tonywangcn 浏览器,比如 chrome 配置了代理之后,DNS 请求是会走代理的
    4 个 8 能 11ms 返回结果你不觉得有点假吗?
        8
    leonard916   76 天前
    这个 IP 早就被某墙劫持(抢答)了 你们才发现吗?
        9
    Buges   76 天前
    @tonywangcn #6 在网关设备(路由器,虚拟机的宿主机等)部署上 dnscrypt-proxy 的服务,然后劫持所有 dns 请求

    以宿主机地址 10.0.0.1,端口 5335 为例:
    iptables -t nat -A PREROUTING -p udp --dport 53 ! -d 9.9.9.9 -j DNAT --to-destination 10.0.0.1:5335
    iptables -t nat -A PREROUTING -p tcp --dport 53 ! -d 9.9.9.9 -j DNAT --to-destination 10.0.0.1:5335
    iptables -t nat -A OUTPUT -p udp --dport 53 ! -d 9.9.9.9 -j DNAT --to-destination 127.0.0.1:5335
    iptables -t nat -A OUTPUT -p tcp --dport 53 ! -d 9.9.9.9 -j DNAT --to-destination 127.0.0.1:5335
        10
    gesse   76 天前
    楼主是不是刚回国?
        11
    fromxt   76 天前
    本地 hosts 里面指定一下
        12
    bclerdx   76 天前 via Android
    @Buges 劫持的目的呢?
        13
    artandlol   76 天前 via Android
    应该是刚回国
        14
    tonywangcn   76 天前
    @Buges 谢谢大佬,这应该是目前唯一可行的方案了。
        15
    CEBBCAT   76 天前   ♥ 1
    https://www.solidot.org/story?sid=61590

    楼主有一点说错了,8.8.8.8 从今年儿童节就不能用了,因为有抢答,+tcp 也会被 reset

    我当时用 DNS over HTTPS 解决了这一问题。注意,红鱼 DNS 已经不是一个好选项,他们进行了自我阉割
        16
    missdeer   76 天前 via Android
        17
    SampleNaive   76 天前
    你有 ss 或者 ssr 的话, 用 win2socks 远程 DNS 可以解决投毒问题.
        18
    wwbfred   76 天前
    在天朝,我们管这个叫 IP 自信.
        19
    wwbfred   76 天前
    因为被污染的 IP 地址基本固定,可以考虑把这样的规则加入防火墙.
    iptables -t mangle -N dns_chain
    iptables -t mangle -I PREROUTING -p udp --sport 53 -j dns_chain
    iptables -t mangle -A dns_chain -m string --algo bm --hex-string "|453FB20D|" --from 60 --to 180 -j DROP
    iptables -t mangle -A dns_chain -m string --algo bm --hex-string "|430F81D2|" --from 60 --to 180 -j DROP
    ...
    因为使用了匹配算法,效率会有影响.但不是大型服务器问题不大.
        20
    msg7086   76 天前
    DNS 污染,这都多少年了,如果不是刚回国的话,问出这问题不应该呀。
        21
    jamesliu96   76 天前 via Android
    dnssec dnsovertls 一日不普及国内 dns 一日不干净,不过有了也没卵用
        22
    leopku   76 天前 via iPhone
    @missdeer 狂点赞!!!
        23
    bclerdx   75 天前 via Android
    @CEBBCAT 怎么确认和测试抢答?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4302 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 26ms · UTC 02:34 · PVG 10:34 · LAX 19:34 · JFK 22:34
    ♥ Do have faith in what you're doing.