zoukankan      html  css  js  c++  java
  • centos下dnsmasq安装与配置

    说明
    1、dnsmasq是一款小巧且方便地用于配置DNS服务器和DHCP服务器的工具,适用于小型网络,它提供了DNS解析功能和可选择的DHCP功能。
    2、dnsmasq可以解决小范围的dns查询问题,如果业务是跨机房、跨地区的话不建议使用dnsmasq做为dns解析服务器。

    安装
    1、下载

    wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.75.tar.gz

    2、环境准备

    yum -y install gcc

    3、解压

    tar -xf dnsmasq-2.75.tar.gz

    4、编译安装

    cd dnsmasq-2.75
    make install

    5、版本查看

    dnsmasq -v

    6、编辑启动脚本
    #服务启动脚本
    vim /etc/init.d/dnsmasq

    #!/bin/sh
    #
    # Startup script for the <span class='wp_keywordlink_affiliate'><a href="http://itgeeker.net/tag/dns/" title="View all posts in DNS" target="_blank">DNS</a></span> caching server
    #
    # chkconfig: - 49 50
    # description: This script starts your DNS caching server
    # processname: dnsmasq
    # pidfile: /var/run/dnsmasq
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Source networking configuration.
    . /etc/sysconfig/network
    # Check that networking is up.
    [ ${NETWORKING} = "no" ] && exit 0
    dnsmasq=/usr/local/sbin/dnsmasq
    [ -f $dnsmasq ] || exit 0
    RETVAL=0
    # See how we were called.
    case "$1" in
    start)
    if [ $UID -ne 0 ] ; then
    echo "User has insufficient privilege."
    exit 4
    fi
    echo -n "Starting dnsmasq: "
    daemon $dnsmasq $OPTIONS
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dnsmasq
    ;;
    stop)
    if test "x`pidof dnsmasq`" != x; then
    echo -n "Shutting down dnsmasq: "
    killproc dnsmasq
    fi
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dnsmasq /var/run/dnsmasq.pid
    ;;
    status)
    status dnsmasq
    RETVAL=$?
    ;;
    reload)
    echo -n "Reloading dnsmasq: "
    killproc dnsmasq -HUP
    RETVAL=$?
    echo
    ;;
    force-reload)
    # new configuration takes effect only after restart
    $0 stop
    $0 start
    RETVAL=$?
    ;;
    restart)
    $0 stop
    $0 start
    RETVAL=$?
    ;;
    condrestart)
    if test "x`/sbin/pidof dnsmasq`" != x; then
    $0 stop
    $0 start
    RETVAL=$?
    fi
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|reload|condrestart|status}"
    exit 2
    esac
    exit $RETVAL

    赋予执行的权限

    chmod +x /etc/init.d/dnsmasq

    7、启动

    /etc/init.d/dnsmasq start
    chkconfig dnsmasq on

    备注:
    #如果是源码编译安装的,没有启动脚本时启动、验证、关闭、重启

    启动: /usr/local/sbin/dnsmasq
    验证:netstat -tunlp|grep 53
    关闭:killall -KILL dnsmasq
    重启: pkill -9 dnsmasp && /usr/local/sbin/dnsmasq -h

    8、其他方式安装
    Centos安装

    yum -y install dnsmasq

    Ubuntu 安装

    sudo apt-get -y install dnsmasq

    配置
    一、三个关键配置文件
    1、主配置文件,安装后自动生成
    /etc/dnsmasq.conf
    2、添加内部需要解析的地址和域名
    /etc/dnsmasq.hosts
    3、dnsmasq的上游DNS服务器,可以将reslove.conf配置文件复制为resolv.dnsmasq.conf,进行添加nameserver
    /etc/resolv.dnsmasq.conf

    二、编辑配置文件
    1、编辑配置/etc/dnsmasq.conf
    vim /etc/dnsmasq.conf

    #定义dnsmasq从哪里获取上游DNS服务器的地址,默认是从/etc/resolv.conf获取
    resolv-file=/etc/resolv.dnsmasq.conf
    #严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止
    strict-order
    #启用泛域名解析,即自定义解析a记录
    #访问baidu.com时的所有域名都会被解析成10.77.3.8
    address=/baidu.com/10.77.3.8
    address=/blog.csdn.net/10.77.3.8
    #定义dnsmasq监听的地址,默认是监控本机的所有网卡上。局域网内主机若要使用dnsmasq服务时,指定本机的IP地址
    listen-address=10.77.3.8,127.0.0.1
    #本地域名配置文件(不支持泛域名),添加内部需要解析的地址和域名(重新加载即可生效)
    addn-hosts=/etc/dnsmasq.hosts
    #缓存条数
    cache-size=100
    #为防止DNS污染,使用参数定义的DNS解析的服务器。注意:如果是阿里云服务器上配置dnsmasq要启用此项。
    bogus-nxdomain=114.114.114.114
    #可以通过server对不通的网站使用不通的DNS服务器进行解析。如下表示对于google的服务,使用谷歌的DNS解析
    server=/google.com/8.8.8.8
    #记录dns查询日志服务器
    log-queries
    #设置日志记录器
    log-facility=/var/log/dnsmasq.log

    2、在/etc/dnsmasq.hosts中编辑添加需要解析的内部地址
    vim /etc/dnsmasq.hosts

    #(testhjs.com为自定义的域名与10.77.3.8进行关联,其他pc或服务器等client配置了10.77.3.8为dns,即可解析此域名)
    10.77.3.8 testhjs.com 
    #(testhjs2.com为自定义的域名与10.77.3.119进行关联,其他pc或服务器等client配置了10.77.3.8为dns,即可解析此域名)
    10.77.3.119 testhjs2.com 

    3、在/etc/resolv.dnsmasq.conf添加上游dns服务地址,也就是本地dns10.77.3.8无法解析的时候自动切换到上游dns服务

    nameserver 114.114.114.114
    nameserver 115.115.115.115

    三、其他配置以及说明
    1、配置日志轮转,编辑/etc/logrotate.d/dnsmasq

    /var/log/dnsmasq.log {
    daily
    copytruncate
    missingok
    rotate 30
    compress
    notifempty
    dateext
    size 200M
    }

    2、安装dig&nslookup
    Ubuntu:

    sudo apt-get install dnsutils

    Centos:

    yum install bind-utils

    客户端测试域名是否生效:nslookup www.freeoa.net检查解析的IP即可,或使用dig指令。

    3、关闭防火墙,或放行dns的端口53

    4、客户端配置上自己搭建的dns地址进行测试
    由于dns服务端配置了/etc/dnsmasq.conf中配置了address=/baidu.com/10.77.3.8,所以下面的dns解析地址为10.77.3.8

    root@test ~]# dig baidu.com
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> baidu.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53090
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;baidu.com.	IN	A
    
    ;; ANSWER SECTION:
    baidu.com.	0	IN	A	10.77.3.8
    
    ;; Query time: 0 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)
    ;; WHEN: Thu Apr 12 10:38:28 2018
    ;; MSG SIZE rcvd: 43
    
    
    [root@test ~]# nslookup baidu.com
    Server:	10.77.3.8
    Address:	10.77.3.8#53
    
    Name:	baidu.com
    Address: 10.77.3.8
    
    自定义域名解析
    [root@test ~]# dig testhjs.com
    
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.5 <<>> testhjs.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55740
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;testhjs.com.	IN	A
    
    ;; ANSWER SECTION:
    testhjs.com.	0	IN	A	10.77.3.8
    
    ;; Query time: 0 msec
    ;; SERVER: 10.77.3.8#53(10.77.3.8)
    ;; WHEN: Thu Apr 12 10:41:13 2018
    ;; MSG SIZE rcvd: 45
    
    [root@test ~]# nslookup testhjs.com
    Server:	10.77.3.8
    Address:	10.77.3.8#53
    
    Name:	testhjs.com
    Address: 10.77.3.8
  • 相关阅读:
    B-Tree索引的学习记录
    mysql NOW,CURRENT_TIMESTAMP,SYSDATE 之间的区别
    哈希索引
    MyISAM和InnoDB的区别
    负载均衡记录一
    哈希索引
    mysql ZEROFILL属性
    redis常用命令及使用场景
    js Function()构造函数
    书写闭包的时候需注意一下情况
  • 原文地址:https://www.cnblogs.com/wclwcw/p/8806256.html
Copyright © 2011-2022 走看看