在CentOS安装BIND,把所有DNS请求日志转发到syslog服务器去

在CentOS安装BIND,把所有DNS请求日志转发到syslog服务器去

vim /etc/named.conf里配置的内容

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
        channel DNS-LOG {
        syslog local1;
        severity debug;
        print-time yes;
        print-category yes;
        print-severity yes;
        };
        category queries {
        DNS-LOG;
        };
        category client {
        DNS-LOG;
        };
        category resolver {
        DNS-LOG;
        };
};

zone "baidu.com" {
    type forward;
    forwarders {10.127.1.8; };
    forward only;
};


zone "qq.cn" {
    type forward;
    forwarders {10.127.1.8; };
    forward only;
};

刷新named配置

systemctl reload named
systemctl restart named
rndc flush

在rsyslog服务里的配置项,最下面vim /etc/rsyslog.conf

# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
#将BIND的DNS请求信息发送给日志平台
DNS-LOG.* @@10.5.5.5:514
# ### end of the forwarding rule ###

重启rsyslog服务

systemctl restart rsyslog

关于logging的详解

logging {
    channel DNS-LOG {
        syslog local1;
        severity debug;
        print-time yes;
        print-category yes;
        print-severity yes;
        };
    category queries {
        DNS-LOG;
        };
    category client {
        DNS-LOG;
        };
    category resolver {
        DNS-LOG;
        };
};

在 BIND 中,可以根据日志消息的类型和属性将其分类到不同的日志分类中。以下是一些常见的日志消息分类示例:

  1. default:默认分类,用于处理未明确指定分类的日志消息。

在下面示例中,default 分类用于处理未分类的日志消息,并将其路由到默认的文件通道和 syslog 通道。

category default {
    default_file;
    default_syslog;
};
  1. queries:用于处理 DNS 查询相关的日志消息。

在下面示例中,queries 分类用于处理与 DNS 查询相关的日志消息,并将其路由到指定的文件通道和 syslog 通道。

category queries {
    queries_file;
    queries_syslog;
};
  1. client:用于处理客户端相关的日志消息。

在下面示例中,client 分类用于处理与客户端相关的日志消息,并将其路由到指定的文件通道和 syslog 通道。

category client {
    client_file;
    client_syslog;
};
  1. resolver:用于处理 DNS 解析器相关的日志消息。

在下面示例中,resolver 分类用于处理与 DNS 解析器相关的日志消息,并将其路由到指定的文件通道和 syslog 通道。

category resolver {
    resolver_file;
    resolver_syslog;
};

除了以上示例,你可以根据自己的需求和配置,在 BIND 中创建更多的日志分类。每个分类可以与一个或多个通道关联,以实现特定类型的日志消息的处理和记录。

如果你需要自定义输出格式,可以在 category queries 配置中添加适当的参数来定义日志消息的格式。以下是一个示例,展示了如何自定义输出格式:

category queries {
    queries_file;

    channel queries_file {
        file "/var/log/bind/queries.log" versions 3 size 10m;
        severity info;
        print-time yes;
        print-category yes;
        print-severity yes;
        format {
            "Timestamp: %time%, Category: %category%, Severity: %severity%, Message: %msg%\n";
        };
    };
};

在上述示例中,我们将日志消息输出到名为 queries_file 的文件通道,并使用自定义的输出格式。通过 format 参数,你可以定义日志消息的输出格式,使用特定的占位符来表示不同的属性。

在这个示例中,我们使用 %time% 表示时间戳,%category% 表示日志分类,%severity% 表示严重性级别,%msg% 表示日志消息文本。你可以根据需要自定义格式,并使用可用的占位符来表示不同的属性。

请根据你的需求和环境进行适当的格式定义,并根据需要在 category 配置中添加其他的通道和自定义格式。

或者这样直接给rsyslog输出

下面是自定义channel:DNS-LOG,使用local7通道,发送到rsyslog服务上去。

logging {
    channel DNS-LOG {
        syslog local7;
        severity debug;
        print-time yes;
        print-category yes;
        print-severity yes;
        format {
                "Timestamp: %time%, Category: %category%, Severity: %severity%, Message: %msg%\n";
                };
        };
    category queries {
        DNS-LOG;
        };
    category client {
        DNS-LOG;
        };
    category resolver {
        DNS-LOG;
        };
};

下面是直接转发到syslog里

logging {
    channel rsyslog {
        syslog <rsyslog-server-ip>;
        severity info;
        print-time yes;
        print-category yes;
        print-severity yes;
        format {
            "Timestamp: %time%, Category: %category%, Severity: %severity%, Message: %msg%\n";
        };
    };

    category queries {
        rsyslog;
    };

    category client {
        rsyslog;
    };

    category resolver {
        rsyslog;
    };
};

 

posted @ 2023-05-24 14:11  Magiclala  阅读(516)  评论(0编辑  收藏  举报