V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
hayabusa9
V2EX  ›  程序员

请教下有没人知道 go 语言把国外的域名解析成 IP

  •  
  •   hayabusa9 · Aug 24, 2022 · 3098 views
    This topic created in 1342 days ago, the information mentioned may be changed or developed.

    最近有个需求,要解析域名背后的 ip ,用 go 原生库的 net.LookupIP 函数就能做到,但是对国外的域名解析的不知道正不正确,我试了几个像 twitter.comfacebook.com 解析出的 ip 地址,用在线网站 ip 反查域名,发现对应的域名都是些奇怪的网站,不是 twitter.com 。有人知道有什么第三方库能做到吗?

    32 replies    2022-08-26 15:53:14 +08:00
    sunorg
        1
    sunorg  
       Aug 24, 2022 via Android   ❤️ 1
    cdn 和 dns 负载均衡了解下
    gabon
        2
    gabon  
       Aug 24, 2022 via iPhone
    做不到
    6IbA2bj5ip3tK49j
        3
    6IbA2bj5ip3tK49j  
       Aug 24, 2022   ❤️ 2
    这和语言就什么关系?
    完全是 dns 的问题。
    1 ,翻墙,防止 dns 投毒
    2 ,使用 doh/dot
    bugfan
        4
    bugfan  
       Aug 24, 2022
    找个国外的 dns 服务器,然后用 doh ,dot 或者 doq 去解析
    slowman
        5
    slowman  
       Aug 24, 2022
    被局域网耽误的萌新啊,一个新世界的大门正在向你打开
    jinliming2
        6
    jinliming2  
       Aug 24, 2022
    国内有骨干网 DNS 投毒污染,用国外的网络就正常了
    haodingzan
        7
    haodingzan  
       Aug 24, 2022 via iPhone   ❤️ 10
    可是,你是怎么上的 v2……
    jim9606
        8
    jim9606  
       Aug 24, 2022
    楼主是肉身国外还是用着什么公司内网?不知道墙的存在还能来 v2 提问?
    ch2
        9
    ch2  
       Aug 24, 2022
    首先你得确保 dns 是可靠的
    seers
        10
    seers  
       Aug 24, 2022
    go 调用的是本地 dns ,你要保证结果正确,首先要找个国外 vps 然后放上去跑
    EminemW
        11
    EminemW  
       Aug 24, 2022
    你自己指定使用国外的 dns 就行了
    lianyue
        12
    lianyue  
       Aug 24, 2022
    tinkerer
        13
    tinkerer  
       Aug 24, 2022   ❤️ 3
    上面说的 DNS over HTTPS 是正解。
    但是国内的 doh 还是不干净,所以需要你在墙外弄一个反代到 quad9 或者 cloudflare 的 doh 服务,
    然后给自己的服务申请好 IP 证书,直接通过 IP 访问反代服务 (e.g. https://1.2.3.4)。

    关键词: doh, reverse proxy, ip cert

    P.S. IP 证书可以用 www1.hi.cn 或者我写的这个小工具 https://github.com/tinkernels/zerossl-ip-cert
    kkeep
        14
    kkeep  
       Aug 25, 2022 via Android
    @tinkerer 可以啊,180 天后面也可以续是吧
    ryanbuu
        15
    ryanbuu  
       Aug 25, 2022 via iPhone
    @tinkerer 强啊大佬,IP 证书还是用的 zero ssl 吗?
    shiny
        16
    shiny  
    PRO
       Aug 25, 2022 via iPhone
    这个世界的 bug 终于还是被你发现了
    Yadomin
        17
    Yadomin  
       Aug 25, 2022 via Android
    这都不知道是怎么上的 V 站呢🤔
    0o0O0o0O0o
        18
    0o0O0o0O0o  
       Aug 25, 2022 via iPhone
    通过

    net.resolver
    prefergo

    自定义 dns server 即可
    Kasumi20
        19
    Kasumi20  
       Aug 25, 2022
    因为 DNS 通常使用裸奔的 UDP 用户层协议,加密一下就可以啦,Rust 实现: https://github.com/develon2015/dnsd
    datou
        20
    datou  
       Aug 25, 2022
    建议楼主找几个 doh 库来解析海外域名的 IP
    danbai
        21
    danbai  
    PRO
       Aug 25, 2022
    curl -H 'accept: application/dns-json' 'https://cloudflare-dns.com/dns-query?name=p00q.cn'
    cheneydog
        22
    cheneydog  
       Aug 25, 2022
    你知道的太多了,peng ~~~
    tinkerer
        23
    tinkerer  
       Aug 25, 2022
    @kkeep www1.hi.cn 的证书可是以直接用 acme.sh 申请并添加定时任务更新, zerossl 目前 ip 证书没有开放 acme 所以我才写了工具。
    tinkerer
        24
    tinkerer  
       Aug 25, 2022
    @q1angch0u 有几个 IP 在用 zerossl 的证书,目前均可自动更新
    samin
        25
    samin  
       Aug 25, 2022
    @jinliming2 方便请教一下如何污染 DNS 吗 ? 真的一点思路都没有

    DNS 是一台服务器,无非就是自己维护了一张键值表给网民解析 ip ,污染不等于你都直接怼到人家数据库修改了数据吗 ?还是有别的方式 ?
    samin
        26
    samin  
       Aug 25, 2022
    @tinkerer 大佬方便看一下 25 楼我提的问题吗 ?不干净和污染到底如何造成的 ?或者是我想得太复杂 等于 DNS 本来就是本身控制 运维自己把数据搞脏 ?
    tinkerer
        27
    tinkerer  
       Aug 25, 2022
    @samin DNS 协议起初是明文 UDP 的, 而 UDP 包本身就容易被伪造 (甚至可直接伪造来源 IP),何况还是明文。
    想想当年的运营商 HTTP 劫持加广告的事都出现了就好理解了。
    julyclyde
        28
    julyclyde  
       Aug 25, 2022
    我回忆了一下,我注意到这个问题大概是二十几年前
    samin
        29
    samin  
       Aug 25, 2022
    @tinkerer 大神 有点点悟到了 可是还有个小问题:中间人劫持的话 他怎么做到监听用户呢 ? 不管 TCP/UDP 都是基于 IP 协议,路由的路径是不一定的,所以如何做到劫持如此大量的用户 ?

    BTW:ISP 劫持 HTTP 加入广告就是因为所有人都是通过他进出口,等于可以监听所有他的所属用户群体,很容易去做这件事情
    tinkerer
        30
    tinkerer  
       Aug 25, 2022   ❤️ 1
    @samin

    关于如何劫持如此大量的用户,ISP 只需要在用户路由汇入的骨干网机房部署好就行了,这种事也不是普通个体能干的, HTTP 劫持是通过路由,那 UDP 同理,此路是我开,此树是我栽,只是成本反面更低。HTTP 在 TCP 之上还有一层 Session 要管理, 反倒是 DNS UDP 53 端口一锅端就行了,还是专用明文裸协议。
    如果再继续了解,DNSSEC 这种协议扩展是想使 DNS UDP 53 的查询结果可验证,而 DnsCrypt 项目则是对 DNS 协议进行加密包装,这些都是为了让弥补协议本身的可信度缺陷。
    我猜国内的 8.8.8.8 UDP 53 端口是 100% 劫持的。
    我认为劫持用户的 DNS 反而对用户的访问内容监控得更精准。

    P.S. 这些事我只是从技术层面为析过可能的实施方法,并不知道具体细节。
    jinliming2
        31
    jinliming2  
       Aug 25, 2022   ❤️ 1
    @samin DNS 服务器在国外,没办法去怼人家的数据库,但是你访问国外的 DNS 服务器,肯定是要经过国际出口的,而出口就那么几个。并且这个不是针对个人的,而是针对所有国内网民的(白名单放行的人上人除外)。
    技术层面,你向国外 DNS 服务器发送一条查询请求,数据包路由到国际出口的时候被中间人识别(当然,现在不一定是要到国际出口了,省级出口也有中间人),立即给你回一个投毒的伪造的响应数据。
    当然,这个是好几年前了,现在有的包直接丢弃的也是有的。
    另外,你就算使用国内的 DNS 服务提供商,他们的 DNS 来源是污染过一遍的,这个是真的怼到数据库里的污染了,所以你查到的结果即便是没有经过中间人篡改,也是被投过毒的。
    rev1si0n
        32
    rev1si0n  
       Aug 26, 2022
    https://github.com/shadowsocks/ChinaDNS

    就是干这个的,你可以看看原理
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3141 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 82ms · UTC 14:42 · PVG 22:42 · LAX 07:42 · JFK 10:42
    ♥ Do have faith in what you're doing.