如何在用户空间中编辑域名解析

问题描述

域名解析非常简单: grosso modo 它使用域名并返回IP。但是我发现它在Linux中相当复杂。

据我了解,域名解析通过了(不确定顺序):

  • 配置名称类型的顺序 IP映射(nsswitch)
  • 缓存(nscd)
  • 本地文件解析(例如/ etc / hosts)
  • DNS服务器的本地或远程53请求

(我在这里跳过了对dns请求的任何加密)

可以使用许多工具:systemd-resolved,dnsmasq,nslookup,dig,getent,... 我迷路了。我不能做一些非常简单的事情。

我有一个caddy服务器(但它可能是Nginx),其中有几个"addresses"(相当于Nginx“ server_name”)。这些地址用于根据每个请求的“ HOST:”将HTTP请求路由到相应的服务/代理。

当我在公共IP地址上启动caddy服务器时,并且在配置具有正确记录的远程DNS时,一切正常。假设此处使用的dns记录为<mydomainname> -> <public_ip>

但是现在我想在本地测试部署的新版本。因此,我将caddy服务器部署在本地的虚拟机中。如何在caddy内保持HTTP请求路由的同时测试服务器?由于IP更改,我不能再使用以前的dns记录。有需要的<mydomainname> -> <local_ip>。而且我不想更改远程DNS记录,因为它用于产品服务器。在测试期间,所有内容都应是本地的。

我发现了

curl --connect-to <mydomainname>:443:<local_ip>:443 https://<mydomainname>

有效。

但是我希望能够在浏览器中测试服务器。

到目前为止,我尝试在发送之前在浏览器中编辑HTTP请求,并注入Host: <mydomainname>。我还查看了主机别名,但由于limitations而无法使用。

似乎goto解决方案是编辑/etc/hosts,但这在用户空间中是不可能的。 我想尽可能避免依赖本地DNS服务器,因为这只是出于测试目的。

TL; DR

如何在用户空间中编辑域名解析?无需修改/etc中的主机文件

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)