1 主机名和域名

主机名是 host name ,域名是 domain name ,两者组成全名 Fully Qualified Domain Name (FQDN) ,类似倒序版某省某市某区某人。

主机名和域名的划分标准不是小数点,至于究竟是什么,我也不知道。

有时为了方便描述,也直接将全名 FQDN 称为主机名。

2 历史

不论是 ipv4 还是 ipv6 ,人脑都是记不住的。而主机名相对好记得多。因此我们需要一项能自动将主机名解析成 ip 的服务。

单一文本是首先想到的方案。人们在 /etc/hosts 文件中将主机名和 ip 一一对应,这样就能通过主机名来取得 ip 了!然而它有一个致命缺陷,即文本无法及时更新。

于是,一套阶层式管理主机名及其对应 ip 的系统 DNS 便适时地出现了!它让人类较容易记忆的字母数字型的有意义的主机名,及时地转译成为计算机熟悉的 IP 地址!

3 阶层架构

DNS 是如此重要,即使我们不架设它,也得了解它。

在整个 DNS 系统的最上方一定是 . (小数点) 这个 DNS 服务器,称为 root 。早前它下面只管理了 com 、 edu 、 gov 、 mil 、 org 、 net 六个特殊领域和所有标识国家地区的主机名,统称顶级域名。顶级域名之下又划分出子域,基本就是原先 root 管理的六个特殊领域。每个 DNS 服务器只记录其下一层的主机名。至于再下一层,则直接授权给下层管理。

4 查询流程

  1. 用户在浏览器内输入网址并回车。
  2. 计算机依据 /etc/resolv.conf 所提供的 DNS 的 IP 联机,并查询用户输入的网址。
  3. DNS 收到查询要求,先查看自身有无记录。如果没有,再看是否属于自己管辖的范围,是则将查询要求丢给下层,否则丢给上层。
  4. 查询成功后,记录返回给 DNS , DNS 保留记录,并通知用户。保留时间有限,通常是 24 小时。

运行命令 dig +trace www.chittleskuny.com 可以了解查询流程的细节。

5 优点缺点

优点:

  1. 主机名修改仅通知自己的 DNS 即可。
  2. 快速返回曾经查询过的主机名的 ip 。
  3. 可持续向下授权。

缺点:

如果 DNS 已暂存某主机名的 IP,随后该主机名的 ip 却修改了,此时若有人再次查询, 系统可能返回旧 IP 。所以当我们修改了 domain name 之后,可能要 2~3 天才能全面启用!

6 协议变换

通常 DNS 查询的时候以 udp 来查询, 万一没有获得完整信息,就会以 tcp 来重新查询。所以启动 DNS 的 daemon (named) 时,会同时启动 tcp 和 udp 的 port 53 ,记得防火墙要同时放行。

7 合法授权

合法授权 = 花钱

想架设一台合法授权的 DNS 服务器,首先需要申请一个合法的域名。国内最大的域名商城是阿里云,也就是曾经的万网,注册完需要备案。中文域名都是垃圾,千万别买。国外最大的域名商城就是狗爹了,常年七折优惠,价格亲民。也有免费域名,但我不建议,因为它们随时可能被回收。

假设我们已经重金砸下了心仪的域名,并登录了管理界面。信息很多,不过重点只有两个:

  1. 记录该域名的所属域名服务器的主机名 NS (NameServer) 。
  2. 记录该域名的根主机的主机名所对应的地址 A (Address) 。

WWW 服务器与 DNS 服务器没有绝对关系,两者相互独立。它们有时表现出一致性是因为你穷得只有一台主机。

我选择了 Vultr ,最便宜的一款,用了一年多,感觉还行,只是有时软件安装不上去,有时 wordpress 会宕机。

个人 Linux 服务器一般只开放三个端口:

  • 22 端口 (SSH/SFTP)
  • 80 端口 (HTTP)
  • 443 端口 (HTTPS)

登陆服务器使用软件 putty 。

记得开启 BBR 。