Linux 技术手札

手动设定网址与 IP 对应 — /etc/hosts

Unix Like 系统在向 DNS 查询网址与 IP 对应前, 会先查询档案 /etc/hosts 的内容, 下文会介绍 Linux 的 /etc/hosts 档案, 及手动设定网址与 IP 对应的方法。

方法同样适用于 Mac OS X 及 Windows, 格式是一样的, 只是档案位置不同, 它们的位置在:

Linux: /etc/hosts
Mac OS X: /private/etc/hosts
Windows: C:\WINDOWS\system32\drivers\etc\hosts

首先是决定使用 /etc/hosts 的时机, 当架设网站时, 修改了 DNS 服务器的 A records 或 CNAME records 后, 一般要一至几个小时才会生效, 然后才可以进行测试及设定, 这个时候可以修改 /etc/hosts 档案, 让自己的机器将网址对应到新 IP 上, 那可以先进行测试, 测试没有问题后才正式修改 DNS 服务器的纪录。

另一个常见的情况是, 将机构内重要的服务器的 IP 放在 /etc/hosts 内, 这样有两个好处, 第一是当 DNS 服务器当掉, 也可以用网址存取某些服务器; 另一个好处是不会该外间知道某些服务器的 IP 地址。

要加入网址到 /etc/hosts/ 很容易, 先看看以下例子, 用 nslookup 解析 linux.org 的 IP:

# ping -c 1 linux.org | grep PING
PING linux.org (192.243.104.10) 56(84) bytes of data.

看到 linux.org 解析的 IP 是 192.243.104.10, 现在加入一笔资料到 /etc/hosts, 开启 /etc/hosts:

# vi /etc/hosts

加入以下内容:

192.168.1.10 www.linux.org linux.org

再执行一次上面的 ping 指令看看:

# ping -c 1 linux.org | grep PING
PING www.linux.org (192.168.1.10) 56(84) bytes of data.

会看到 www.linux.org 的对应 IP 变为 192.168.1.10, 以上只为了测试, 测试完后记得开启 /etc/hosts 删除刚刚加入的纪录, 不然系统不能连接到真正的 linux.org 的。

请留意, 更改 /etc/hosts 后, 不可以用 host 或 nslookup 等 DNS 指令检查, 因为这类工具会忽略 /etc/hosts 的设定, 而是直接从系统设定的 DNS 查询。

Exit mobile version