我正在尝试创建一个自定义 DNS,当有人访问时,https://example.com/
他们将被重定向https://otherexamplesite/
到
我希望能够使用自定义 DNS IP 来实现这一点,用户可以在其设备设置中打开该 IP
我从越狱的 Playstation 中获得了这个想法,它使帮助指南重定向到越狱面板以方便访问,但我还有其他用例。
答案1
严格来说,您所要求的是不可能的 - 即使用 DNS 对 HTTPS 网站进行网站重定向。
查找(或重定向)网站有两个阶段。
- DNS 查找将网站转换为 IP 地址
- 响应给定的 IP 地址并转发网站的 Web 服务器。
因此,为了做到这一点,您需要设置上述两个元素。
要设置 DNS,您需要一个能够执行重定向的 Web 服务器的 A 记录或 CNAME。这通常就是目标网站。 您不能使用 CNAME 来实现此目的(按照您的示例,位于域的顶端)因为它违反了规范,并且无法按预期工作。您需要使用 A 记录指向 Web 服务器的 A 记录 [您可能能够使用非标准域功能,例如 ALIAS 和 ANAME 记录,对于 IP6,您可以使用 AAAA 记录]
然后,您需要让 Web 服务器负责该域并重定向网站。有无数种方法可以做到这一点,具体方法取决于 Web 服务器。一种行之有效的方法是让 Web 服务器负责同一容器中的所有相关域 [ 并拥有一个涵盖所有域的 HTTPS 证书 - Letsencrypt 将允许您生成此证书 ],然后在 Web 服务器配置或 Web 应用程序本身中执行条件重写。重写通常是 301 重定向,尽管还有其他方法可以做到这一点。
为了清楚起见,没有“仅 DNS”的方法可以做到这一点 - Web 服务器无法识别 srv 或 txt 记录。
如果你不拥有要重定向的域名,那么你可能遇到的困难是获取有效的 HTTPS 证书 为此,您需要接受自签名证书或更复杂的版本 - 例如,运行您自己的 CA 并在您的设备/浏览器中安装根证书**
我评论说,如果您只是想让设备解析到不同的 IP 地址,那么通常会是大多数设备都有一个主机文件 - 但是运行您自己的递归 DNS 服务器可能会更容易,它在查询时提供权威服务器的替代答案。