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

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

  •  
  •   SGTeam · 2021-09-16 21:51:57 +08:00 · 3559 次点击
    这是一个创建于 1158 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题 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  
       2021-09-16 21:53:56 +08:00 via iPhone
    修改 ping 的源代码
    SGTeam
        2
    SGTeam  
    OP
       2021-09-16 21:54:29 +08:00
    @defunct9
    2333 请不要抖机灵
    SGTeam
        3
    SGTeam  
    OP
       2021-09-16 21:57:29 +08:00
    因为 B 的 IP 变动是不可预测的
    所以需要这样 能够时刻检测对方 IP 是否改变
    最好能够直接指向对方的 变动的 A 记录最好

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

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

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

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

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

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

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

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

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

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

    已知的限制是不支持泛域名解析,也不支持添加纯数字域名
    ruixue
        25
    ruixue  
       2021-09-16 22:47:06 +08:00
    @ruixue #17 有一处笔误,不足之处是不能很好的兼容 geodns,并不是 anycast 。。

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

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

    由你的权威 DNS 解析 cname 的域名,返回给用户 A 记录即可
    dorothyREN
        28
    dorothyREN  
       2021-09-17 08:37:52 +08:00
    可以考虑 隐式 url
    julyclyde
        29
    julyclyde  
       2021-09-18 12:00:14 +08:00
    DNAME
    SGTeam
        30
    SGTeam  
    OP
       2021-09-19 12:46:16 +08:00
    @dorothyREN 感谢您的答复! 请问 您 这是什么原理呀
    SGTeam
        31
    SGTeam  
    OP
       2021-09-19 12:46:42 +08:00
    @julyclyde 感谢您的回答! DNAME 也是展平吗?
    SGTeam
        32
    SGTeam  
    OP
       2021-09-19 12:47:17 +08:00
    @Showfom 感谢您的答复!!! 我用楼上的成功啦!! 就是通过 alias 实现的!! Thanks♪(・ω・)ノ
    v2tudnew
        33
    v2tudnew  
       2021-09-20 16:19:18 +08:00
    @2i2Re2PLMaDnghL #26 “CNAME”记录与“MX”记录冲突,好像不行吧。
    2i2Re2PLMaDnghL
        34
    2i2Re2PLMaDnghL  
       2021-09-20 16:54:02 +08:00
    @v2tudnew 不是冲突,而是 CNAME 覆盖其他任何记录。
    你读读我 #26 到底写了啥,ANAME/ALIAS 就是为了避免这个问题的,而不是为了楼主的 ping
    julyclyde
        35
    julyclyde  
       2021-09-22 11:02:51 +08:00
    @SGTeam DNAME 是整个域的别名
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5687 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:35 · PVG 16:35 · LAX 00:35 · JFK 03:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.