DNS 域名系统
Domain Name System
目录
域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
开始时,域名的字符仅限于ASCII字符的一个子集。2008年,ICANN通过一项决议,允许使用其它语言作为互联网顶级域名的字符。使用基于Punycode码的IDNA系统,可以将Unicode字符串映射为有效的DNS字符集。因此,诸如“XXX.中国”、“XXX.台湾”的域名可以在地址栏直接输入并访问,而不需要安装插件。但是,由于英语的广泛使用,使用其他语言字符作为域名会产生多种问题,例如难以输入、难以在国际推广等。
软件
DNS系统是由各式各样的DNS软件所驱动的
- BIND(Berkeley Internet Name Domain),使用最广的DNS软件
- DJBDNS(Dan J Bernstein’s DNS implementation)
- MaraDNS
- Name Server Daemon(Name Server Daemon)
- PowerDNS
- Dnsmasq
macOS 下 dnsmasq 搭建 DNS 服务器
一提起搭建 DNS 服务器,不得不提 Bind 这种 Linux 下的 DNS 工具。其实,除了Bind这种比较复杂的DNS服务之外,Linux系统中还提供了一种更轻量级的DNS服务,也就是本文的主角 dnsmasq。它比较适合本地的小型网络,尤其是在虚拟、测试环境中为各个虚拟机提供DNS和DHCP服务。
|
|
只需要修改下面两个选项
resolv-file=/usr/local/etc/resolv.dnsmasq.conf
strict-order
listen-address=10.0.0.113,127.0.0.1
no-hosts
addn-hosts=/etc/dnsmasq.hosts
- strict-order 表示在解析一个域名时,dnsmasq会严格按照/etc/resolv.conf文件中定义的DNS服务器的顺序从上到下进行 DNS 解析,直到第一个解析成功为止。/etc/resolv.conf是macOS默认的DNS配置文件,会自动生成。
- listen-address 表示DNS服务会绑定到哪个地址上。如果只是本机使用,那么只需要指定127.0.0.1就可。如果还需要让局域网中的其他主机也能使用这个DNS服务器,还需要加上本机在局域网中的地址,即10.0.0.113,127.0.0.1。换句话说,在10.0.0.这个网段的所有主机都可以指定10.0.0.113为自己的DNS服务器地址。
在默认情况下,dnsmasq在解析一个域名时,会首先查找/etc/hosts文件中的定义,如果找不到的话,再去/etc/resolv.conf中去找。当然,这个动作也是可以配置的,在配置文件中说明如下:
# If you don't want dnsmasq to read /etc/hosts, uncomment the
# following line.
#no-hosts
# or if you want it to read another file, as well as /etc/hosts, use
# this.
#addn-hosts=/etc/banner_add_hosts
|
|
|
|
|
|
|
|