原文地址:http://news.2ky.cn/Linux/5783.htm
在网上找过不少dns的文章、不是太麻烦就是错洞百出、这个文章不错、通过了验证而且也狠简明易用
DNS(域名服务器)的作用是把域名转换成IP地址,或反过来。更详细的信息:维基百科。
此实验,将在局域网的一台主机上用Bind9搭建DNS服务器,提供域名解析服务。另有两台HTTP服务器,设定域名为www.my.com和abc.my.com(随便取一个域名)。网络结构图:
上图中两台服务器Server0和Server1是在VirtualBox下虚拟的,网卡类型用桥接,怎么安装请见这里。根据我的实际情况,宿主系统(WinXP)ip地址是192.168.1.99,Server0是 192.168.1.98,Server2是192.168.1.97,网关(路由)是192.168.1.1,接电信ISP。
Server0 上安装HTTP服务器和DNS服务器,Server1上安装HTTP服务器。上面的网络搭建好之后,三台机器之间能够互ping得通。
先为两台服务器安装HTTP服务器,如果在安装Ubuntu已选择安装LAMP,则跳过这步。否则,执行sudo apt-get install nginx安装nginx,它是一个小巧的HTTP 服务器,安装完它会自动启动,在浏览器测试一下http://192.168.1.97,看到"Welcome to nginx!"即成功。
实验目的是使得三台电脑都能用www.my.com访问server0,abc.my.com访问server1.
安装Bind9:
sudo apt-get install bind9 dnsutils bind9-doc
其中只需bind9就可,后面两个是dns的测试工具和bind9的文档,hiweed推荐。
DNS记录类型请看维基百科,常用有A记录、CNAME记录、MX记录和NS记录。
转发配置:是当本地的DNS服务器在本地数据文件里找不到对应网站后,移交给下一步查询的DNS服务器(递推)。编辑/etc/bind/named.conf.options文件,取消 forwarders{}的注释,在{}加入8.8.8.8; 这是Google的DNS服务器。
Zone概念:zone即域的意思,像g.cn、 twitter.com这样的形式就是域,www.g.cn,ditu.g.cn这些就是子域。Bind9的配置文件中,一个域用一个文件来存放,在文件中指明每个子域对应的IP地址。
主DNS服务器配置:编辑/etc/bind/named.conf.local文件,添加域my.com:
zone "my.com"{ type master; file "db.my.com"; };
注意别漏了分号,type指定这台DNS服务器为主服务器,file指定该域的解析文件,默认路径在/etc/var/cache/bind , /etc/bind/db.local是bind自带的模板文件,复制一份到 /etc/var/cache/bind ,并改名成db.my.com:
sudo cp /etc/bind/db.local /var/cache/bind/db.my.com
然后编辑/var/cache/bind/db.my.com,最终如下:
$TTL 604800 @ IN SOA my.com. root.my.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. @ IN A 127.0.0.1 ;@ IN AAAA ::1 www IN A 192.168.1.98 abc IN A 192.168.1.97 server IN CNAME abc
从上往下看,$TTL设置记录在DNS缓存服务器上的生存周期(秒)。SOA记录定义了my.com这个域,以及相关参数,默认就行。最后三行,添 加A记录,www指向server0的IP,abc指向server1的IP,server则CNAME到abc(这一行非必须,仅演示CNAME)。
修改完成后重启bind:
sudo /etc/init.d/bind9 restart
此时DNS服务器已经开始工作了,要使用该DNS服务器,以XP为例,到"控制面板"–"网络连接",找到上网的网卡,右键选择"属性",如图设置:
然后打开浏览器,访问www.my.com,abc.my.com,server.my.com吧。
Linux 修改DNS,请修改/etc/resolv.conf文件。
关于反向解析:即从IP解析到域名。本实验中,该功能没什么用途。在反垃圾邮件方面,它很有作用,由于邮件的协议,伪装域名发送邮件是可能的,这时候,邮件服务器端收到邮件后,根据邮件的IP地址反解析,得到域名,如果域名和邮件的发信人域名一致,则收下,否则拒绝。