准备实验环境:

两台虚拟机:

第一台做DNS服务器解析不同域名。

第二台做Apache 网站服务器。

搭建DNS服务:

1、配置IP地址

[root@localhost ~]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:26:05:59  
          inet addr:210.188.201.71  Bcast:210.188.201.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe26:559/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:12390 (12.0 KiB)
          Interrupt:59 Base address:0x2024 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:900 (900.0 b)  TX bytes:900 (900.0 b)

2、安装DNS软件包

[root@localhost ~]# mount /dev/cdrom /media/
mount: block device /dev/cdrom is write-protected, mounting read-only

[root@localhost /]# rpm -ivh /media/Server/bind-9.3.6-4.P1.el5_4.2.i386.rpm 
error: failed to stat /media/RHEL_5.5 i386 DVD: 没有那个文件或目录
Preparing...                ########################################### [100%]
   1:bind                   ########################################### [100%]

[root@localhost /]# rpm -ivh /media/Server/caching-nameserver-9.3.6-4.P1.el5_4.2.i386.rpm 
error: failed to stat /media/RHEL_5.5 i386 DVD: 没有那个文件或目录
Preparing...                ########################################### [100%]
   1:caching-nameserver     ########################################### [100%]

[root@localhost /]# rpm -ivh /media/Server/bind-chroot-9.3.6-4.P1.el5_4.2.i386.rpm 
error: failed to stat /media/RHEL_5.5 i386 DVD: 没有那个文件或目录
Preparing...                ########################################### [100%]
   1:bind-chroot            ########################################### [100%]

[root@localhost /]# rpm -ivh /media/Server/bind-utils-9.3.6-4.P1.el5_4.2.i386.rpm 
error: failed to stat /media/RHEL_5.5 i386 DVD: 没有那个文件或目录
Preparing...                ########################################### [100%]
        package bind-utils-9.3.6-4.P1.el5_4.2.i386 is already installed

3、复制模板,生成主配置文件

[root@localhost /]# cd /var/named/chroot/etc/
[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf
[root@localhost etc]# vim named.conf 

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";

        allow-query     { any; };
        allow-query-cache { any; };
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view localhost_resolver {
        match-clients      { any; };
        match-destinations { any; };
        recursion yes;
        include "/etc/named.rfc1912.zones";
};

4、修改区域文件,提供两个区域的解析 51cto.com 和 csdn.com

[root@localhost etc]# vim named.rfc1912.zones 

zone "51cto.com" IN {
        type master;
        file "51cto.com.zone";
        allow-update { none; };
};

zone "csdn.com" IN {
        type master;
        file "csdn.com.zone";
        allow-update { none; };
};

5、复制模板,生成两份正向解析文件

[root@localhost etc]# cd /var/named/chroot/var/named/
[root@localhost named]# cp -p localhost.zone 51cto.com.zone
[root@localhost named]# vim 51cto.com.zone 



$TTL    86400
@               IN SOA  51cto.com.       root (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                IN NS           ns1.51cto.com.
                IN MX 10        mail.51cto.com.
ns1             IN A            210.188.201.71
mail            IN A            210.188.201.71
www             IN A            210.188.201.72

[root@localhost named]# cp -p 51cto.com.zone csdn.com.zone
[root@localhost named]# vim csdn.com.zone 

$TTL    86400
@               IN SOA  csdn.com.       root (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                IN NS           ns1.51cto.com.
                IN MX 10        mail.51cto.com.
ns1             IN A            210.188.201.71
mail            IN A            210.188.201.71
www             IN A            210.188.201.72

6、重新启动服务

[root@localhost named]# service named restart
停止 named:                                               [确定]
启动 named:                                               [确定]

7、测试是否能正常解析

[root@localhost named]# nslookup 
> www.51cto.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   www.51cto.com
Address: 210.188.201.72
> www.csdn.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   www.csdn.com
Address: 210.188.201.72

搭建Apache 服务:

1、为第二台虚拟机,配置IP地址,并测试是否能被DNS解析

[root@localhost /]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:AC:AF:AD  
          inet addr:210.188.201.72  Bcast:210.188.201.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feac:afad/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1 errors:0 dropped:0 overruns:0 frame:0
          TX packets:79 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:140 (140.0 b)  TX bytes:12705 (12.4 KiB)
          Interrupt:59 Base address:0x2024 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)

[root@localhost /]# vim /etc/resolv.conf 

search 51cto.com csdn.com
nameserver 210.188.201.71

[root@localhost /]# nslookup 
> www.51cto.com
Server:         210.188.201.71
Address:        210.188.201.71#53

Name:   www.51cto.com
Address: 210.188.201.72
> www.csdn.com
Server:         210.188.201.71
Address:        210.188.201.71#53

Name:   www.csdn.com
Address: 210.188.201.72

2、安装Apache 软件包

[root@localhost media]# tar -zxf httpd-2.2.9.tar.gz -C /usr/src/
[root@localhost media]# 

3、编辑安装

[root@localhost ~]# cd /usr/src/httpd-2.2.9/

[root@localhost httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-

rewrite

config.status: creating docs/conf/extra/httpd-manual.conf
config.status: creating docs/conf/extra/httpd-mpm.conf
config.status: creating docs/conf/extra/httpd-multilang-errordoc.conf
config.status: creating docs/conf/extra/httpd-ssl.conf
config.status: creating docs/conf/extra/httpd-userdir.conf
config.status: creating docs/conf/extra/httpd-vhosts.conf
config.status: creating include/ap_config_layout.h
config.status: creating support/apxs
config.status: creating support/apachectl
config.status: creating support/dbmmanage
config.status: creating support/envvars-std
config.status: creating support/log_server_status
config.status: creating support/logresolve.pl
config.status: creating support/phf_abuse_log.cgi
config.status: creating support/split-logfile
config.status: creating build/rules.mk
config.status: creating build/pkg/pkginfo
config.status: creating build/config_vars.sh
config.status: creating include/ap_config_auto.h
config.status: include/ap_config_auto.h is unchanged
config.status: executing default commands

[root@localhost httpd-2.2.9]# make && make install

Installing configuration files
mkdir /usr/local/apache2/conf
mkdir /usr/local/apache2/conf/extra
mkdir /usr/local/apache2/conf/original
mkdir /usr/local/apache2/conf/original/extra
Installing HTML documents
mkdir /usr/local/apache2/htdocs
Installing error documents
mkdir /usr/local/apache2/error
Installing icons
mkdir /usr/local/apache2/icons
mkdir /usr/local/apache2/logs
Installing CGIs
mkdir /usr/local/apache2/cgi-bin
Installing header files
Installing build system files
Installing man pages and online manual
mkdir /usr/local/apache2/man
mkdir /usr/local/apache2/man/man1
mkdir /usr/local/apache2/man/man8
mkdir /usr/local/apache2/manual
make[1]: Leaving directory `/usr/src/httpd-2.2.9'

4、开启服务,测试功能

[root@localhost httpd-2.2.9]# vim /usr/local/apache2/conf/httpd.conf 

# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName www.51cto.com

#

[root@localhost httpd-2.2.9]# /usr/local/apache2/bin/apachectl start


5、生成www.51cto.com 和 www.csdn.com 的网页根文件

[root@localhost /]# cd /usr/local/apache2/htdocs/

[root@localhost htdocs]# mkdir 51ctocom
[root@localhost htdocs]# mkdir csdncom
[root@localhost htdocs]# cp index.html 51ctocom/
[root@localhost htdocs]# cp index.html csdncom/
[root@localhost htdocs]# echo "www.51cto.com" > 51ctocom/index.html 
[root@localhost htdocs]# echo "www.csdn.com" > csdncom/index.html 
[root@localhost htdocs]# cat 51ctocom/index.html 
www.51cto.com
[root@localhost htdocs]# cat csdncom/index.html 
www.csdn.com

6、配置Apache 主配置文件,开启基于域名的虚拟主机

[root@localhost htdocs]# vim /usr/local/apache2/conf/httpd.conf 

NameVirtualHost 210.188.201.72
<VirtualHost 210.188.201.72>
ServerName www.51cto.com
DocumentRoot /usr/local/apache2/htdocs/51ctocom
ErrorLog logs/www.51cto.com.error.log
CustomLog logs/www.51cto.com.access.log common
</VirtualHost>
<VirtualHost 210.188.201.72>
ServerName www.csdn.com
DocumentRoot /usr/local/apache2/htdocs/csdncom
ErrorLog logs/www.csdn.com.error.log
CustomLog logs/www.csdn.com.access.log common
</VirtualHost>

7、重新启动服务

[root@localhost htdocs]# /usr/local/apache2/bin/apachectl stop
[root@localhost htdocs]# /usr/local/apache2/bin/apachectl start

8、验证