|
|
注:本人是初学者是,为了搞清dns服务器的正确配置方法,花了两天时间,反复在机器上装了几次。并进行多次网络测试。本文参照了这个论坛及国外的许多先辈帖子和经验。这里特别感谢kissingwolf提供许多有益的文章和资料。写这文章的另一个原因是,由于我的学习笔记都在电脑上,不小心把系统搞坏了,许多资料没贴出来出就随之消失,心中十分不快。水平有限不足之处请批评指正。webmaster@8280666.com
主要解决的问题:在不关闭防火墙的情况下配置一个可转发请求的主域名服务器(masterDNS)
服务器ip:192.168.0.254
服务器名:server1.office.com和一些别名
linx OS: RHEL4
一、首先安装DNS服务(bind bind-utils caching-nameserver),这里不再说明。
然后打开IP转发功能 :
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
查看一下是否打开:
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward
1
如果你想每次开机就启动,可将其加入到/etc/rc.d/rc.local中。或者在sysctl.conf中做以下修改:
net.ipv4.ip_forward = 1
二、设置防火墙,在/etc/sysconfig/iptables中加入如下两行:
-A RH-Firewall-1-INPUT -p udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --sport 53 -j ACCEPT
这两句是参照国外有关文档。国内介绍的都异常复杂。
就象这样:
=======================================================================
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
##########加入以下两行:
-A RH-Firewall-1-INPUT -p udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --sport 53 -j ACCEPT
######################
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
这样网内其它电脑使用这个服务器DNS解析就不会被服务器的防火墙档在门外了。
三、设置网络,查看以下文件(可在网络图形状态下设置)
/etc/hosts
-----------------------------------
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost
#这行不要删除,否则Xwindows启动时会提示,而且named服务不能正常启动。
====================================
/etc/sysconfig/network-scripts/ifcfg-eth0
------------------------------------
# Please read /usr/share/doc/initscripts-*/sysconfig.txt
# for the documentation of these parameters.
TYPE=Ethernet
DEVICE=eth0
BOOTPROTO=none
IPADDR=192.168.0.254
IPV6INIT=no
ONBOOT=yes
USERCTL=no
PEERDNS=yes
==================================
/etc/resolv.conf
-----------------------------------
search office.com
nameserver 192.168.0.254
===================================
/etc/sysconfig/network
-----------------------------------
NETWORKING=yes
HOSTNAME=localhost
===================================
四、设置DNS的配置文件/etc/named.conf
----------------------------------
//
// named.conf for Red Hat caching-nameserver
//
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
//以下两行是将不能解析的IP转发到61.177.7.1,这里用的是公网DNS,目的是一方面可测试转发DNS解析请求,同时做测试时可以上互连网。
//在网络设置中DNS只用192.168.0.254,否则解析的结果很可能出你意料。
forwarders { 61.177.7.1; };
forward only;
statistics-file "/var/named/data/named_stats.txt";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
//
// a caching only nameserver config
//
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localdomain" IN {
type master;
file "localdomain.zone";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.ip6.local";
allow-update { none; };
};
zone "255.in-addr.arpa" IN {
type master;
file "named.broadcast";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.zero";
allow-update { none; };
};
//################ 增加二行,是进行正向和反向解析的入口
zone "server1.office.com" IN { //这里不要加server1,否则只能解析server1.office.com
type master;
file "n2ip";
};
zone "254.0.168.192.in-addr.arpa" IN {
type master;
file "ip2n";
};
//##########################################
include "/etc/rndc.key";
//这里要注意的是,引号如果是中文全角,就象“”,会给你带来麻烦的。
五、用vi创建两个文件/var/named/chroot/var/named/n2ip和ip2n
对于n2ip文件的内容如下:
$TTL 86400
@ IN SOA server1.office.com. Root.server1.office.com. (
05050600 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS server1.office.com.
server1.office.com. IN A 192.168.0.254
www IN A 192.168.0.254
ftp IN A 192.168.0.254
pop IN A 192.168.0.254
www1 IN CNAME server1.office.com.
www2 IN CNAME server1.office.com.
@ IN MX 10 server1.office.com.
server1.office.com. IN MX 10 server1.office.com.
----------------------------------------------------------------------
这里不做解释,其实原理很简单,坛里有这类帖子,参见nobody_am的帖子:
http://www.linuxsir.cn/bbs/showthread.php?t=50245
这里需要指出的是,很多测试失败的原因是每行开头不顶格,留下空格,这也浪费了我很多排错时间,一个字,“菜”啊:)。
对于ip2n文件的内容如下:
-----------------------------------------------------------------------
$TTL 86400
@ IN SOA server1.office.com. root.server1.office.com. (
0505062 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS server1.office.com.
254.0.168.192.IN-ADDR.ARPA. IN PTR server1.office.com.
----------------------------------------------------------------------
六、检测,可用host或nslookup命令:
[root@localhost ~]# nslookup
> server1.office.com
Server: 192.168.0.254
Address: 192.168.0.254#53
Name: server1.office.com
Address: 192.168.0.254
> 192.168.0.254
Server: 192.168.0.254
Address: 192.168.0.254#53
254.0.168.192.in-addr.arpa name = server1.office.com.
> www.office.com
Server: 192.168.0.254
Address: 192.168.0.254#53
Name: www.office.com
Address: 192.168.0.254
> ftp.office.com
Server: 192.168.0.254
Address: 192.168.0.254#53
Name: ftp.office.com
Address: 192.168.0.254
> pop.office.com
Server: 192.168.0.254
Address: 192.168.0.254#53
Name: pop.office.com
Address: 192.168.0.254
> www1.office.com
Server: 192.168.0.254
Address: 192.168.0.254#53
www1.office.com canonical name = server1.office.com.
Name: server1.office.com
Address: 192.168.0.254
> www2.office.com
Server: 192.168.0.254
Address: 192.168.0.254#53
www2.office.com canonical name = server1.office.com.
Name: server1.office.com
Address: 192.168.0.254
>
就到这里,收船了。 |
|