DNS(Domain Name System) 是一个为计算机、服务器或其他任何需要接入互联网或私有网络提供分级域名分发系统(hierarchical and decentralized naming system)。
在内网中又一台服务器提供服务,为了使用使其可以在公共网络中访问到需要为它分配 ip 或者使用端口转发、内网穿透等,但绑定域名后域名解析到公网ip,如果在内网访问的话就写多此一举。因此在内网自建一台 DNS 服务器,使其优先级高于公网域名解析服务器,进而实现内网访问解析为内网 ip 且不影响外网访问的目的。
DNSMasq 主要用来解决内网 DNS 域名缓存、DHCP、网络启动和路由通告功能,本文目的是将 DNSMasq 作为内网 DNS 使用。
# Ubuntu/Debian
$ sudo apt update
$ sudo apt install -y dnsmasq
# Centos
$ yum install dnsmasq -y
$ service dnsmasq start
$ sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
$ sudo vim /etc/dnsmasq.conf
....
resolv-file=/etc/resolv.conf
strict-order
listen-address=<host-ip>
addn-hosts=/etc/hosts.dnsmasq
修改内容解释:
/etc/hosts.dnsmasq 文件内容如下:
$ cat /etc/hosts.dnsmasq
10.0.0.1 blackpiglet.com
10.0.0.2 blackpiglet.com
10.0.0.3 blackpiglet.com
修改完成后重启 DNSMasq
$ sudo systemctl restart dnsmasq.service
DNSMasq 是从 /etc/resolv.conf 文件中读取上游 DNS 服务器, 编辑 /etc/resolv.conf ,参考如下:
nameserver 223.5.5.5
nameserver 223.4.4.4
chkconfig dnsmasq on
/etc/init.d/dnsmasq restart
在需要内网解析的服务器上修改网络设置中的DNS服务器即可。