首页 > 代码库 > dns在企业网络中的应用
dns在企业网络中的应用
主辅dns服务器:
辅dns服务器能够自动备份主dns服务器的数据,当主dns服务器损坏时,辅dns服务器进行工作。
实验步骤:
[root@wang ~]# mkdir /media/cdrom 安装所需要的dns包
[root@wang ~]# mount /dev/cdrom /media/cdrom
[root@wang ~]# yum --disablerepo=\* --enablerepo=c6-media install bind bind-chroot bind-utils -y
[root@wang ~]# cd /var/named/chroot/etc/
[root@wang etc]# service named start 开启dns服务器
[root@wang etc]# vim named.conf 编辑配置文件
options {
listen-on port 53 { any; }; 改为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; }; 改为any
forwarders { 192.168.2.100; };
recursion yes;
[root@wang etc]# vim named.rfc1912.zones 编辑区域配置文件
zone "abc.com" IN {
type master;
file "abc.com.zone";
allow-update { none; };
}; //增加此区域
[root@wang etc]# cd ../var/named/ 切换目录
[root@wang named]# cp -p named.localhost abc.com.zone 拷贝一个区域文件进行修改
[root@wang named]# vim abc.com.zone
$TTL 1D
@ IN SOA ns.abc.com. rname.invalid. (
1 ; serial
2M ; refresh//每隔2分钟同步一次(实验需要)
1M ; retry //每隔1分钟重试一次
1W ; expire
3H ) ; minimum
@ IN NS ns.abc.com.
ns IN A 192.168.2.50
www IN A 1.1.1.1
ftp IN A 2.2.2.2
[root@wang named]# service iptables stop 关闭防火墙
[root@wang named]# setenforce 0 设置访问策略
再打开一台centos,做辅dns服务器
[root@wang ~]# mkdir /media/cdrom 安装所需要的dns包
[root@wang ~]# mount /dev/cdrom /media/cdrom
[root@wang ~]# yum --disablerepo=\* --enablerepo=c6-media install bind bind-chroot bind-utils -y
[root@wang ~]# cd /var/named/chroot/etc/
[root@wang etc]# service named start 开启dns服务器
[root@station21 etc]# vim named.rfc1912.zones 编辑区域配置文件
zone "abc.com" IN {
type slave; 26 masters { 192.168.2.50; };
file "slaves/abc.com.zone";
}; //添加此配置参数
[root@station21 etc]# rndc reload 更新配置
[root@station21 ~]# tail -f /var/log/messages 查看日志,传输成功
Aug 16 23:40:01 station21 named[1492]: zone abc.com/IN: transferred serial 1
Aug 16 23:40:01 station21 named[1492]: transfer of ‘abc.com/IN‘ from 192.168.2.50#53: Transfer completed: 1 messages, 6 records, 183 bytes, 0.002 secs (91500 bytes/sec)
[root@station21 etc]# cd ../var/named/
[root@station21 named]# cd slaves/
[root@station21 slaves]# ll
total 4
-rw-r--r-- 1 named named 331 Aug 16 23:40 abc.com.zone 找到区域文件
主服务器更新dns地址信息。
[root@wang named]# vim abc.com.zone
[root@wang named]# rndc reload
辅dns服务器同步成功
Aug 16 23:53:18 station21 named[1492]: zone abc.com/IN: Transfer started.
Aug 16 23:53:18 station21 named[1492]: transfer of ‘abc.com/IN‘ from 192.168.2.50#53: connected using 192.168.2.100#54422
Aug 16 23:53:18 station21 named[1492]: zone abc.com/IN: transferred serial 2
Aug 16 23:53:18 station21 named[1492]: transfer of ‘abc.com/IN‘ from 192.168.2.50#53: Transfer completed: 1 messages, 7 records, 204 bytes, 0.002 secs (102000 bytes/sec)
Dns授权与转发
2台dns服务器在不同的地区,一台是父域dns服务器,另一台是子域dns服务器,父域dns服务器授权给子域dns服务器进行服务和转发
实验拓扑:
实验步骤:
父域用windowserver2003进行配置:
控制面板→添加和删除程序→网络服务→域名系统,确定进行安装
然后打开dns
右键正向查找区域,新建区域下一步
下一步
输入区域名称为abc.com
下一步,再下一步
完成
右键abc.com 属性
改起事授权机构为:
设置名称服务器
再右键abc.com 新建域(创建子域)
创建bj子域
在父域当中添加a记录 右键abc.com 新建主机
右键bj子域,新建主机
右键abc.com 新建委派
委派sh.abc.com 域
输入委派信息
下一步 , 完成
sh子域用centos进行配置
[root@wang ~]# cd /var/named/chroot/etc
[root@wang etc]# service named start 开启dns服务器
[root@wang etc]# vim named.conf 编辑配置文档
options {
listen-on port 53 { any; }; //改为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; }; //改为any
forwarders { 192.168.2.100; }; //查找不到dns将进行转发的ip
recursion yes;
[root@wang etc]# vim named.rfc1912.zones 编辑区域声明文件
zone "sh.abc.com" IN {
type master;
file "sh.abc.com.zone";
allow-update { none; }; //新增此条目
[root@wang etc]# cd /var/named/chroot/var/named/ 进入目录
[root@wang named]# cp -p named.localhost sh.abc.com.zone 拷贝区域文件以供修改
[root@wang named]# vim sh.abc.com.zone 编辑区域文件
$TTL 1D
@ IN SOA ns.sh.abc.com. rname.invalid. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns.sh.abc.com.
ns IN A 192.168.2.50
www IN A 3.3.3.3
[root@wang named]# named-checkconf /var/named/chroot/etc/named.conf 检查主配置文档是否有问题
[root@wang named]#named-checkzonesh.abc.com.zone /var/named/chroot/var/named/sh.abc.com.zone 检查区域文件配置是否正确
测试机:
打开一台window sever2003 做测试机
先将dns改为192.168.2.100 。
www.abc.com 域名解析成功
www.bj.abc.com 域名解析成功
www.sh.abc.com 解析成功
然后将测试机的指向设置为192.168.2.50
www.sh.abc.com解析成功 其他的也解析成功
智能dns(视图的使用)
拓扑图:
实验目的:内网的用户用内部dns访问www.abc.com 外网的用户将dns指向192.168.20.1经过dnat转换用域名访问内网的的web服务器
实验步骤:
DNS服务器:
[root@wang ~]# mkdir /media/cdrom 安装所需要的dns包
[root@wang ~]# mount /dev/cdrom /media/cdrom
[root@wang ~]# yum --disablerepo=\* --enablerepo=c6-media install bind bind-chroot bind-utils -y
[root@wang ~]# cd /var/named/chroot/etc/
[root@wang etc]# service named start 开启dns服务器
[root@wang etc]# vim named.conf 编辑dns服务器的配置文档
options {
listen-on port 53 { any; }; //将127.0.0.1 改为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; }; //将127.0.0.1 改为any
forwarders { 192.168.2.100; };
recursion yes;
[root@wang etc]# cd /usr/share/doc/bind-9.8.2/sample/etc //进入样例文件夹查看样例文件
[root@wang etc]# vim named.conf 根据样例编辑配置文件
acl lan-user { //内网用户使用
192.168.2.0/24;
};
acl wan-user { //外网用户使用
any;
}; //添加视图访问列表
view "lan-view"
{
match-clients { lan-user; };
recursion yes;
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
};
view "wan-view" //添加一个wan视图(外网用户使用)
{
match-clients { wan-user; };
zone "." IN {
type hint;
file "named.ca";
};
zone "abc.com" IN {
type master;
file "abc.com.wan";
};
};
[root@wang etc]# vim named.rfc1912.zones 写入区域
zone "abc.com" IN {
type master;
file "abc.com.lan";
allow-update { none; };
}; //添加一个区域即可(模拟访问的是abc.com区域)
[root@wang etc]# cd ../var/named/ //进入区域文件目录
[root@wang named]# cp -p named.localhost abc.com.lan 复制区域文件(新做区域文件,复制其他的修改更方便)
[root@wang named]# vim abc.com.lan 编辑此区域文件
$TTL 1D
@ IN SOA ns.abc.com. rname.invalid. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns.abc.com.
ns IN A 192.168.2.50
www IN A 192.168.2.100
改为如此即可
[root@wang named]# cp -p abc.com.lan abc.com.wan 再拷贝个wan区域进行编辑
[root@wang named]# vim abc.com.wan
$TTL 1D
@ IN SOA ns.abc.com. rname.invalid. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns.abc.com.
ns IN A 192.168.2.50
www IN A 192.168.20.1
这里将www.abc.com的域名
[root@wang named]# rndc reload dns服务器进行更新
server reload successful
Web服务器:
用windowserver 2003 做web服务器
到控制面板
添加和删除程序
然后添加和删除windows组件
找打应用服务器,前面不打勾进去
找到iis打勾确定,等待安装完成(需要有安装光盘的镜像)
然后建个小html文件测试使用
如图所示
打开iis服务管理器,网站→默认站点→属性
将主目录更改为刚才网页文件放的目录
将默认文档设置为index.html
然后可以浏览测试下
防火墙配置(用centos替代)
再打开一台centos虚拟机,添加2块网卡,一块是仅主机,一块桥接
[root@station21 ~]# ifconfig eth0 192.168.2.1 仅主机网卡地址
[root@station21 ~]# ifconfig eth1 192.168.20.1 桥接网卡地址
[root@station21 ~]# vim /etc/sysctl.conf 打开数据包转发能力
将其改为1
然后将web服务器和dns服务器的网关全部设置为192.168.2.1
[root@station21 ~]# iptables -t nat -A PREROUTING -d 192.168.20.1 -p udp --dport 53 -i eth1 -j DNAT --to 192.168.101 做dns的DNAT
[root@station21 ~]# iptables -t nat -A PREROUTING -d 192.168.20.1 -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.2.100 web的DNAT
进行测试:
再打开一台虚拟机,将dns设置为192.168.20.1 ip地址设置为192.168.20.0网段(外网),桥接模式
然后访问www.abc.com
然后将ip地址设置为内网,dns设置为192.168.2.50,仅主机模式
访问www.abc.com
实验成功
DLZ对视图的实现
是bind的一种补丁,目的是将bind与mysql结合在一起使用
[root@wang ~]# mkdir /media/cdrom
[root@wang ~]# mount /dev/cdrom /media/cdrom
[root@wang ~]# yum --disablerepo=\* --enablerepo=c6-media groupinstall "Development tools" "Server Platform Development" -y 安装需要的开发工具包来安装mysql
mysql-5.5.15-linux2.6-i686.tar.gz 需要下载mysql软件包进行安装
bind-9.8.6-P1.tar.gz 需要bind源码包
[root@wang ~]# tar -zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local/ 拆解mysql
[root@wang ~]# rpm -qa |grep mysql 在安装之前查看是否安装有mysql包,有的话请卸载掉
[root@wang ~]# cd /usr/local/ 切换目录
[root@wang local]# ln -s mysql-5.5.15-linux2.6-i686 mysql 将目标文件夹做个短链接
[root@wang local]# cd mysql 切换mysql目录
[root@wang mysql]# vim INSTALL-BINARY 查看帮助文档进行安装
shell> useradd -r -g mysql mysql
80 shell> cd /usr/local
81 shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
82 shell> ln -s full-path-to-mysql-VERSION-OS mysql
83 shell> cd mysql
84 shell> chown -R mysql .
85 shell> chgrp -R mysql .
86 shell> scripts/mysql_install_db --user=mysql
87 shell> chown -R root .
88 shell> chown -R mysql data
[root@wang ~]# groupadd mysql 添加mysql组
[root@wang ~]# useradd -r -g mysql mysql 添加系统账号mysql组为mysql
[root@wang mysql]# setenforce 0 在继续下一步之前最好关闭selinux
[root@wang mysql]# service iptables stop 关闭防火墙
[root@wang mysql]# chown -R mysql:mysql . 改变当前所有用户组均为mysql
[root@wang mysql]# scripts/mysql_install_db --user=mysql 对mysql数据库的data文件夹里的文件进行初始化
如果提示少了一个库文件,请安装相应的库文件
[root@wang mysql]# ll /media/cdrom/Packages/ |grep libaio
-r--r--r--. 3 root root 21616 Jul 3 2011 libaio-0.3.107-10.el6.i686.rpm
-r--r--r--. 2 root root 13524 Jul 3 2011 libaio-devel-0.3.107-10.el6.i686.rpm 查找一下有2个包,安装上去
[root@wang mysql]# yum --disablerepo=\* --enablerepo=c6-media install libaio* -y 安装
[root@wang mysql]# scripts/mysql_install_db --user=mysql 重新执行
[root@wang mysql]# ll data/mysql/ 查看下已经有了数据
[root@wang mysql]# chown -R root . 将当前所有对象所有者改为管理员
[root@wang mysql]# chown -R mysql data/ 将data的所有者改为mysql
[root@wang mysql]# cd support-files/
[root@wang support-files]# ll
my-large.cnf 针对内存大的环境 my-small.cnf针对内存小的环境
my-medium.cnf 针对2g左右的内存
[root@wang support-files]# cp my-medium.cnf /etc/my.cnf 将文件拷贝过去
[root@wang support-files]# cp mysql.server /etc/init.d/mysqld 将启动文件也拷贝过去
[root@wang support-files]# chmod a+x /etc/init.d/mysqld 将文件权限改为可执行
[root@wang support-files]# service mysqld start 开启mysql
[root@wang support-files]# chkconfig --add mysqld
[root@wang support-files]# chkconfig mysqld on 加入到开机启动项
[root@wang support-files]# netstat -tupln |grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2717/mysqld 查看端口,已经启动
[root@wang mysql]# vim /etc/profile 编辑path目录
PATH=$PATH:/usr/local/mysql/bin 新加入path路径
[root@wang mysql]# . /etc/profile 重新读取profile文件
[root@wang mysql]# mysql 访问mysql数据库
mysql> show databases; 查看数据库表
[root@wang mysql]# mysqladmin -u root -p password ‘123‘ 给数据库添加管理员口令
[root@wang mysql]# mysql -u root -p 用口令登入
mysql> show databases;
mysql> use mysql;
mysql> show tables;
mysql> desc user;
mysql> select user,host,password from user;
查看到密码添加成功
mysql> \q 退出mysql
创建mydata数据库表格
mysql> use mydata; 选中数据库
mysql>create table lan_dns_records (
zone varchar (255),
host varchar (255),
type varchar (255),
data varchar (255),
ttl int(11),
mx_priority varchar (255),
refresh int(11),
retry int(11),
expire int(11),
minimum int(11),
serial bigint(20),
resp_person varchar (255),
primary_ns varchar (255)
); 创建内部用户的表格
mysql> create table wan_dns_records ( zone varchar (255), host varchar (255), type varchar (255), data varchar (255), ttl int(11), mx_priority varchar (255), refresh int(11), retry int(11), expire int(11), minimum int(11), serial bigint(20), resp_person varchar (255), primary_ns varchar (255) );
创建外部用户的dns表格
mysql> show tables;
+------------------+
| Tables_in_mydata |
+------------------+
| lan_dns_records |
| wan_dns_records |
+------------------+ 出现了2张表
mysql> desc lan_dns_records; 进入lan表查看
mysql> \q
Bye
[root@wang mysql]# cd
[root@wang ~]# ll 回到系统,切换到管理员家目录
[root@wang ~]# cd /usr/local/mysql
[root@wang mysql]# vim /etc/ld.so.conf.d/mysql.conf 编辑一个库配置文件
/usr/local/mysql/lib 添加lib文件路径
[root@wang mysql]# ldconfig 刷新库配置文件
[root@wang mysql]# cd /usr/include/ 切换到include目录
[root@wang include]# ln -s /usr/local/mysql/include/ mysql 对include文件做个链接
[root@wang ~]# tar -zxvf bind-9.8.6-P1.tar.gz -C /usr/local/src/ 解压bind包
[root@wang ~]# cd /usr/local/src/bind-9.8.6-P1/ 切换到解压的目录
[root@wang bind-9.8.6-P1]# ./configure --prefix=/usr/local/bind9 --with-dlz-mysql=/usr/local/mysql --enable-threads=no --disable-openssl-version-check
编译bind
[root@wang bind-9.8.6-P1]# make && make install 安装
[root@wang bind-9.8.6-P1]# cd /usr/local/bind9/ 切换至bind9目录
[root@wang bind9]# vim /etc/profile 编辑profile文件
PATH=$PATH:/usr/local/mysql/bin:/usr/local/bind9/bin:/usr/local/bind9/sbin 添加path目录(在刚才添加的基础上)
[root@wang bind9]# . /etc/profile 更新库配置文件
在本地终端配置
([root@wang ~]# cd /usr/local/bind9/etc/
[root@wang ~]# rndc-confgen -a 生成钥匙文件将会产生一个钥匙文件
[root@wang bind9]# cd etc/
[root@wang etc]# rndc-confgen >>named.conf 将文件输出重定向named.conf
[root@wang etc]# cat rndc.key >>named.conf 将密钥导入到named.conf文件中
[root@wang etc]# vim named.conf 编辑配置文件
删除之前的密钥信息,除了新的密钥配置,其他修改为
acl "lan-user" {
192.168.2.0/24;
};
acl "wan-user" {
any;
};
recursion no;
version "gaint-d1";
allow-query-cache { any; };
};
view "lan-view" {
match-clients {lan-user;};
dlz "Mysql zone" {
database "mysql
{host=127.0.0.1 dbname=mydata ssl=false user=root pass=123}
{select zone from lan_dns_records where zone=‘$zone$‘}
else data end from lan_dns_records where zone=‘$zone$‘ and host=‘$record$‘}";
};
};
view "wan-view" {
match-clients {wan-user;};
dlz "Mysql zone" {
database "mysql
{host=127.0.0.1 dbname=mydata ssl=false user=root pass=123}
{select zone from wan_dns_records where zone =‘$zone$‘}
{select ttl, type, mx_priority, case when lower(type)=‘txt‘ then concat(‘\"‘, data, ‘\"‘)
when lower(type) = ‘soa‘ then concat_ws(‘ ‘, data, resp_person, serial, refresh, retry, expire, minimum)
else data end from wan_dns_records where zone=‘$zone$‘ and host=‘$record$‘}";
};
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
[root@wang etc]# named-checkconf /usr/local/bind9/etc/named.conf 检查配置文件是否正确
[root@wang etc]# /usr/local/bind9/sbin/named -g -d 1 -c /usr/local/bind9/etc/named.conf 打开named服务
[root@wang ~]# mysql -u root -p
Enter password: 进入mysql
mysql> use mydata;
mysql> insert into lan_dns_records (zone,host,type,data,ttl,retry) values (‘abc.com‘,‘www‘,‘A‘,‘192.168.2.100‘,‘86400‘,‘15‘);
Query OK, 1 row affected (0.10 sec) 插入内部用户的表格
mysql> select * from lan_dns_records \G 查看添加的表格
mysql> insert into wan_dns_records (zone,host,type,data,ttl,retry) values (‘abc.com‘,‘www‘,‘A‘,‘192.168.20.1‘,‘86400‘,‘15‘); 插入外部用户的表格
[root@wang ~]# dig www.abc.com @192.168.2.50
DLV配置完成。然后设置下该机器的网关
[root@wang ~]# dig www.abc.com @192.168.2.50 测试
[root@wang ~]# dig www.abc.com @127.0.0.1
都能得到dns地址
Web服务器:
用windowserver 2003 做web服务器
到控制面板
添加和删除程序
然后添加和删除windows组件
找打应用服务器,前面不打勾进去
找到iis打勾确定,等待安装完成(需要有安装光盘的镜像)
然后建个小html文件测试使用
如图所示
打开iis服务管理器,网站→默认站点→属性
将主目录更改为刚才网页文件放的目录
将默认文档设置为index.html
然后可以浏览测试下
防火墙配置(用centos替代)
再打开一台centos虚拟机,添加2块网卡,一块是仅主机,一块桥接
[root@station21 ~]# ifconfig eth0 192.168.2.1 仅主机网卡地址
[root@station21 ~]# ifconfig eth1 192.168.20.1 桥接网卡地址
[root@station21 ~]# vim /etc/sysctl.conf 打开数据包转发能力
将其改为1
然后将web服务器和dns服务器的网关全部设置为192.168.2.1
[root@station21 ~]# iptables -t nat -A PREROUTING -d 192.168.20.1 -p udp --dport 53 -i eth1 -j DNAT --to 192.168.101 做dns的DNAT
[root@station21 ~]# iptables -t nat -A PREROUTING -d 192.168.20.1 -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.2.100 web的DNAT
进行测试:
再打开一台虚拟机,将dns设置为192.168.20.1 ip地址设置为192.168.20.0网段(外网),桥接模式
然后访问www.abc.com
然后将ip地址设置为内网,dns设置为192.168.2.50,仅主机模式
访问www.abc.com
Dns轮询
实现负载均衡。回复dns服务器为不同的回答。
[root@wang ~]# mkdir /media/cdrom 安装所需要的dns包
[root@wang ~]# mount /dev/cdrom /media/cdrom
[root@wang ~]# yum --disablerepo=\* --enablerepo=c6-media install bind bind-chroot bind-utils -y
[root@wang ~]# cd /var/named/chroot/etc/
[root@wang etc]# service named start 开启dns服务器
[root@wang etc]# vim named.conf 编辑配置文件
options {
listen-on port 53 { any; }; 改为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; };
recursion yes;
[root@wang etc]# vim named.rfc1912.zones
zone "abc.com" IN {
type master;
file "abc.com.zone";
allow-update { none; };
}; 加入此内容
[root@wang named]# cp -p named.localhost abc.com.zone 复制区域
[root@wang named]# vim abc.com.zone 编辑区域
$TTL 1D
@ IN SOA ns.abc.com. rname.invalid. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns.abc.com.
ns IN A 192.168.2.50
www IN A 1.1.1.1
www IN A 2.2.2.2
~
将www.abc.com 编辑为2个dns地址
[root@wang named]# rndc reload
测试2台虚拟机,每台都查询dns
第一台虚拟你解析为1.1.1.1
第一台虚拟你解析为2.2.2.2
实现了轮询的结果
本文出自 “你猜我是谁” 博客,请务必保留此出处http://whhhj.blog.51cto.com/9289395/1568900
dns在企业网络中的应用