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

如何 实现 A/B 域名 A CName B 时,B 隐藏

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

    如题 cloudflare cname 后 进行 ping 测试时 突然 有一个想法:

    需求:

    最终实现 A Cname B 之后 ping 测试时 看不到 B 域名

    而直接显示 B 的 A 记录 IP 比如

    A 域名 方式 B 域名 目标 IP
    a.com cname b.com 8.8.8.8

    最后实现:

    正在 Ping a.com [8.8.8.8] 具有 32 字节的数据:

    而不是

    正在 Ping b.com [8.8.8.8] 具有 32 字节的数据:

    35 条回复    2021-09-22 11:02:51 +08:00
    defunct9
        1
    defunct9  
       78 天前 via iPhone
    修改 ping 的源代码
    SGTeam
        2
    SGTeam  
    OP
       78 天前
    @defunct9
    2333 请不要抖机灵
    SGTeam
        3
    SGTeam  
    OP
       78 天前
    因为 B 的 IP 变动是不可预测的
    所以需要这样 能够时刻检测对方 IP 是否改变
    最好能够直接指向对方的 变动的 A 记录最好

    以我目前的知识量
    我顶多能想到 nginx 重定向
    求大佬提供思路
    ysc3839
        4
    ysc3839  
       78 天前 via Android
    elfive
        5
    elfive  
       78 天前 via iPhone
    这个是 DNS 那边的回复,标准的 DNS 协议会在查询 a.com 回复 a.com 其实是 b.com 的一个 cname 记录。
    要改,只能直接在域名服务商那里把 cname 记录改为 A 记录,值改为 b.com 对应的 A 记录值。
    当然,改 DNS 回复也行,不过这个我想你也应该没这个权限。🐶
    2i2Re2PLMaDnghL
        6
    2i2Re2PLMaDnghL  
       78 天前
    cloudflare 我记得有个 aname 还是什么的,会把 cname 展平。

    不然的话只能看看 ping 有什么选项这么做了。
    2i2Re2PLMaDnghL
        7
    2i2Re2PLMaDnghL  
       78 天前
    nginx 怎么重定向 ICMP ?你还是先学学吧,思而不学则殆
    fetich
        8
    fetich  
       78 天前
    alias record
    fetich
        9
    fetich  
       78 天前
    但这个功能可能不在所有的域名解析服务商里提供
    akira
        10
    akira  
       78 天前
    域名 A cname -> cf 域名 -> 域名 B

    这个时候 域名 B 就是隐藏的呀
    SGTeam
        11
    SGTeam  
    OP
       78 天前
    @2i2Re2PLMaDnghL
    感谢您的耐心答复,我正在找 ANAME 和 flattening 的相关内容!
    SGTeam
        12
    SGTeam  
    OP
       78 天前
    @akira
    场景不允许走 cf 巨慢
    SGTeam
        13
    SGTeam  
    OP
       78 天前
    @fetich 是境外域名
    我想应该也是不可以提供服务的吧
    感谢您的答复!
    SGTeam
        14
    SGTeam  
    OP
       78 天前
    @elfive
    我想我的需求可能是
    时刻检测对方 A 记录
    将对方 A 记录改成我的

    但我看了一圈好像 cf 的 DNS 貌似没有办法实现

    cname 只会直接指向对方的 A 记录

    听起来我的需求有点像 DDNS?
    SGTeam
        15
    SGTeam  
    OP
       78 天前
    @elfive
    帮大忙了 !
    感谢您的答复,这可能就是我想要的功能!
    fetich
        16
    fetich  
       78 天前
    @SGTeam 就是把 CNAME 记录改为 ALIAS 记录,完美解决你的问题
    ruixue
        17
    ruixue  
       78 天前   ❤️ 1
    你可能需要 aname 记录,这个只有部分 dns 服务商支持

    https://en.wikipedia.org/wiki/CNAME_record#ANAME_record

    简单来说,为域名设置一个 alias 域名,收到查询请求时 dns 服务商先自行将 alias 的域名解析出 ip 地址,再将其作为 a 记录返回,而不是像 cname 一样直接返回另一个域名

    优势就是可以隐藏 alias 的域名,不足之处就是不能很好的兼容 anycast
    ruixue
        18
    ruixue  
       78 天前
    看了下,免费的 dns.he.net 就支持 ALIAS Record(aname),直接像配置 cname 一样配置 ALIAS Record 即可
    SGTeam
        19
    SGTeam  
    OP
       78 天前
    @2i2Re2PLMaDnghL
    我看到了, 他默认 只有 根域名 是 展平的
    但我 要有 6 个域名需要 展平(笑哭)
    X-Force
        20
    X-Force  
       78 天前
    间隔轮询 b.com 的 IP,发生变化就用 API 去修改 a.com 的 A 记录就行。
    SGTeam
        21
    SGTeam  
    OP
       78 天前
    @X-Force
    谢谢您的答复! 这也是一种可以考虑的解决办法 时刻不断地去修改 A 记录
    SGTeam
        22
    SGTeam  
    OP
       78 天前
    @ruixue
    感谢您的耐心答复!!! 我一定会去试试这个!
    顺便问一下您! 他的这个支持 多个子域名吗? 有没有什么限制?
    SGTeam
        23
    SGTeam  
    OP
       78 天前
    @ysc3839

    我看到了, 他默认 只有 根域名 是 展平的
    但我 要有 6 个域名需要 展平(笑哭)
    ruixue
        24
    ruixue  
       78 天前
    @SGTeam he dns 完全免费,一个账号可以添加 50 个 zone,支持多个子域名,没实际测试过最大限制吧但是几百条记录是没问题的

    已知的限制是不支持泛域名解析,也不支持添加纯数字域名
    ruixue
        25
    ruixue  
       78 天前
    @ruixue #17 有一处笔误,不足之处是不能很好的兼容 geodns,并不是 anycast 。。

    原因是 dns 服务商一般只会在特定的服务器上“代为”解析 aname 的域名,所以如果 aname 的域名配置了 geodns,它会始终返回 dns 服务商所在的地区解析出的记录,而不能很好的做到不同地理位置返回不同的解析结果
    2i2Re2PLMaDnghL
        26
    2i2Re2PLMaDnghL  
       78 天前
    先问下你为什么要调 ping 的结果?
    一般而言提供展平是为了同时存在其他记录,而避免因 CNAME 的性质导致无法保存其他记录,比如 MX 记录(邮件服务器)
    只是为了 ping 去做展平有点多余。很多网站都没做展平。
    Showfom
        27
    Showfom  
       77 天前
    这时候需要 alias 记录

    https://doc.powerdns.com/authoritative/guides/alias.html

    由你的权威 DNS 解析 cname 的域名,返回给用户 A 记录即可
    dorothyREN
        28
    dorothyREN  
       77 天前
    可以考虑 隐式 url
    julyclyde
        29
    julyclyde  
       76 天前
    DNAME
    SGTeam
        30
    SGTeam  
    OP
       75 天前
    @dorothyREN 感谢您的答复! 请问 您 这是什么原理呀
    SGTeam
        31
    SGTeam  
    OP
       75 天前
    @julyclyde 感谢您的回答! DNAME 也是展平吗?
    SGTeam
        32
    SGTeam  
    OP
       75 天前
    @Showfom 感谢您的答复!!! 我用楼上的成功啦!! 就是通过 alias 实现的!! Thanks♪(・ω・)ノ
    v2tudnew
        33
    v2tudnew  
       74 天前
    @2i2Re2PLMaDnghL #26 “CNAME”记录与“MX”记录冲突,好像不行吧。
    2i2Re2PLMaDnghL
        34
    2i2Re2PLMaDnghL  
       74 天前
    @v2tudnew 不是冲突,而是 CNAME 覆盖其他任何记录。
    你读读我 #26 到底写了啥,ANAME/ALIAS 就是为了避免这个问题的,而不是为了楼主的 ping
    julyclyde
        35
    julyclyde  
       72 天前
    @SGTeam DNAME 是整个域的别名
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2113 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:51 · PVG 23:51 · LAX 07:51 · JFK 10:51
    ♥ Do have faith in what you're doing.