天天看点

DNS--5--其他配置

一.配置子域DNS服务器:子域授权

   当DNS之间有上层,下层的关系时,如何开放子域的授权呢?

    以luyx30.no-ip.org为例,有人申请domain name,他要的域名是test.luyx30.no-ip.org:

    ----上层DNS服务器:

    即master.luyx30.no-ip.org这一台,只要在luyx30.no-ip.org那个zone file内,增加自定义的NS并指向下层DNS的主机名与IP(A)即可,zone file的序号也要增加才行。设置完重启DNS服务。

    #####/var/named/named.luyx30.no-ip.org

$TTL    600

@                                        IN    SOA    master.luyx30.no-ip.org. luyx.www.luyx30.no-ip.org. (2012110203 1D 1H 1W 1D);

#    其他设置于前面几节相同,增加以下两行即可

test.luyx30.no-ip.org.          IN    NS        dns.test.luyx30.no-ip.org.

dns.test.luyx30.no-ip.org.    IN    A          192.168.1.111

.................

     ----下层DNS服务器:

    设置的内容依据实际情况,配置内容与前面几节的内容相同。 

二.依据不同接口给予不同的DNS主机名:view功能应用

    目标:让不同来源的用户,能够取得自己的Zone响应。

    举例(鸟哥的linux私房菜-服务器篇(第三版)第632页):当用户来自10.0.0.1时,这个来源是外部的,因此就用外部的zone file内容来响应。

    ----修改/var/named.conf,红色部分为修改部分:

####/var/named.conf

options    {

####.....(前面部分相同,省略)......

......

};

acl intranet {192.168.100.0/24; };

acl internet {! 192.168.100.0/24; any ;};

view "lan" {

    match-clients {"intranet";};

    zone "." IN {

    type hint;

    file "named.ca";

    };

    zone "centos.vbird" IN {

    type master;

    file "named.centos.vbird";

    allow-transfer {192.168.100.10;};

    }; 

    zone "100.168.192.in-addr.arpa" IN {

    file "named.192.168.100";

view "wan" {

    match-clients {"internet";}; 

        type hint;

        file "named.ca";

        type master;

        file "named.centos.vbird.inter";

##外网因为没有使用到内网的IP,所以IP反解部分就不写了

}; 

    ----在/var/named目录下新增named.centos.vbird.inter文件,内容与named.centos.vbird基本相同,只需将序号和服务器对应的IP地址改成192.168.1.100即可

三.搭建动态DNS服务器:让你成为ISP

如果我们本身是以拨号方式的ADSL连接上Internet时,我们的IP是ISP随机提供的,因此我们需要利用DDNS(Dynamic DNS).

DDNS的原理,简单的说:1.我们的DDNS主机先提供Client一个key,2.Client利用这个key.并配合BIND 9的nsupdate命令,就可以连上DDNS主机,并且修改主机上面的zone file内的对应表了。具体步骤如下:

    ----DDNS Server的设置:

     1.DDNS Server建立密钥:

dnssec-keygen -a [算法] -b [密码长度] -n [类型] 名称

    参数说明:

    算法 主要有,HMAC-MD5(常用),RSA,DSA,DG,RSAMD5等

    密码长度 通常给予512位的HMAC-MD5

    类型 是指客户端能够更新的类型主要有,ZONE(客户端可以更新任何标志及整个ZONE),HOST(客户端仅可以针对他的主机名更新,一般建议给HOST)

    dnssec-keygen -a HMAC-MD5 -b 512 -n HOST web

    2.将公钥(刚才生成的文件中的.key文件)的密码复制到/etc/named.conf

###/etc/named.conf

//在任意位置加入key的相关密码信息

key "web" {

        algorithm hmac-md5;

        secret "......";

//在原有的zone加入以下代码

zone "centos.vbird" IN {

        file "named.centos.vbird";

        allow-transfer {192.168.100.10;};

        update-policy {

            grant web name web.centos.vbird. A;    //即授权web的key在这个name:centos.vbird.范围内可以修改A标志

        };

    3.由于未来客户端传来的信息要有named写入,所以修改权限chown g+w /var/named

    4.重新启动,并检查日志。

    ----Client的设置:

    5.web.centos.vbird获取到Server建立的私钥和公钥。

假设你已经将这两个档案放置到 /usr/local/ddns 里面去,然后测试看看:

[root@web ~]# cd /usr/local/ddns

[root@web ddns]# nsupdate -k Kweb.+157+36124.key

> server 192.168.100.254

> update delete web.centos.vbird ####<==删除原有的

> update add web.centos.vbird 600 A 192.168.100.200  ## 新增一笔数据,ttl 是600,给予A 标签,对应192.168.100.200 

> send

>#### 最后在此按下 [ctrl]+D 即可

由于手动更新好像挺麻烦的,我们就让 Client 自动更新吧!利用底下这个 script 即可!

[root@web ~]# vim /usr/local/ddns/ddns_update.sh

#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

export PATH

# 0. keyin your parameters

basedir="/usr/local/ddns" # 基本工作目录

keyfile="$basedir"/"Kweb.+157+36124.key" # 将档名填进去吧!

ttl=600 # 你可以指定 ttl 的时间喔!

outif="eth0" # 对外的联机接口!

hostname="web.centos.vbird" # 你向 ISP 取得的那个主机名啦!

servername="192.168.100.254" # 就是你的 ISP 啊!

# Get your new IP

newip=`ifconfig "$outif" | grep 'inet addr' | \

    awk '{print $2}' | sed -e "s/addr\://"

`checkip=`echo $newip | grep "^[0-9]"`

if [ "$checkip" == "" ]; then

echo "$0: The interface can't connect internet...."

exit 1

fi

# create the temporal

filetmpfile=$basedir/tmp.txt

cd $basedir

echo "server $servername" > $tmpfile

echo "update delete $hostname A " >> $tmpfile

echo "update add $hostname $ttl A $newip" >> $tmpfile

echo "send" >> $tmpfile

# send your IP to serverns

update -k $keyfile -v $tmpfile

你只要将上述的程序里面,特殊字体的部分给他修改一下,就能够以 /etc/crontab 的方式在你的系统内自动执行了!

参考资料:http://vbird.dic.ksu.edu.tw/linux_server/0350dns_6.php

继续阅读