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 ::1www IN A 192.168.1.98abc IN A 192.168.1.97server 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地址反解析,得到域名,如果域名和郵件的發信人域名一致,則收下,否則拒絕。
新聞熱點
疑難解答