如何将所有子域名解析到指定A记录并覆盖公共解析?
如何将所有子域名解析到指定A记录并覆盖公共解析?
嘿,刚好碰到过类似的需求!先直接说结论:/etc/resolv.conf做不到这个——它的作用只是告诉系统该用哪些DNS服务器,没法直接定义域名到IP的映射,更别说通配符规则了。
给你推荐两个简单高效的方案,完全不用折腾复杂的Bind:
方案一:用dnsmasq(最推荐,轻量易配置)
dnsmasq是个轻量级的DNS缓存+转发工具,专门应付这种简单的自定义解析场景,配置起来超简单:
- 先安装dnsmasq:
Ubuntu/Debian系统:sudo apt install dnsmasq -y
CentOS/RHEL系统:sudo yum install dnsmasq -y - 编辑配置文件
/etc/dnsmasq.conf,在文件末尾添加一行(把IP换成你需要的目标地址):address=/.domain.com/192.168.1.100
这行的意思就是:所有以domain.com结尾的域名(包括*.domain.com和domain.com本身)都解析到指定IP - 重启dnsmasq服务让配置生效:
sudo systemctl restart dnsmasq - 最后把系统的DNS服务器改成本地(127.0.0.1):
可以直接编辑/etc/resolv.conf,把第一个nameserver改成nameserver 127.0.0.1;或者在系统的网络设置里修改DNS地址为127.0.0.1
这样设置后,所有针对*.domain.com的DNS请求都会被dnsmasq拦截,直接返回你指定的IP,完全覆盖公共DNS的记录,完美解决你的需求。
方案二:临时应急(单台机器短时间用)
如果只是单台机器临时需要,不想装软件,那可以用hosts文件的变通方法,但要注意:hosts不支持通配符,所以你得手动添加每个需要的子域名,比如:
192.168.1.100 sub1.domain.com 192.168.1.100 sub2.domain.com 192.168.1.100 sub3.domain.com
这种方法适合子域名数量少的临时场景,要是子域名多的话,还是方案一更省心。
备注:内容来源于stack exchange,提问作者Vitor Falcão
相关产品推荐
相关产品推荐

