内网dns使用
dns知识点
使用到得DNS服务器里面有两个区域,即“正向查找区域”和“反向查找区域”
- 正向查找区域就是我们通常所说的域名解析
- 反向查找区域即是这里所说的IP反向解析,它的作用就是通过查询IP地址的PTR记录来得到该IP地址指向的域名
- 当然,要成功得到域名就必需要有该IP地址的PTR记录。PTR记录是邮件交换记录的一种,邮件交换记录中有A记录和PTR记录,A记录解析名字到地址,而PTR记录解析地址到名字。地址是指一个客户端的IP地址,名字是指一个客户的完全合格域名。通过对PTR记录的查询,达到反查的目的
递归查询与迭代查询
递归查询
递归查询是最常见的查询方式,
工作方式是:域名服务器将代替提出请求的客户机(下级DNS服务器)进行域名查询,若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机,在域名服务器查询期间,客户机将完全处于等待状态
迭代查询
迭代查询又称重指引查询
工作方式为:当服务器使用迭代查询时能够使其他服务器返回一个最佳的查询点提示或主机地址,若此最佳的查询点中包含需要查询的主机地址,则返回主机地址信息,若此时服务器不能够直接查询到主机地址,则是按照提示的指引依次查询,直到服务器给出的提示中包含所需要查询的主机地址为止,一般的,每次指引都会更靠近根服务器(向上),查寻到根域名服务器后,则会再次根据提示向下查找
递归和迭代查询总结
递归查询就是客户机会等待最后结果的查询,而迭代查询是客户机等到的不一定是最终的结果,而可能是一个查询提示
监控dns流量
http://www.ttlsa.com/monitor-safe/monitor-dns-net-2016/
企业安全_DNS流量监控的技术选型
方案1:Windows server n ---> packbeat ---> logstash ---> kafka
|
┗ ---------> elasticsearch ---> kibana
方案2:Core Switch ---> packbeat ---> logstash ---> kafka
|
┗ ---------> elasticsearch ---> kibana
显然方案2更好,只需要采集核心交换机的进出口流量就行了。而方案1需要在每一台Win Server服务器上都按照采集器。
方案3:使用dnstop
安装部署
安装dns程序
yum install epel-release -y
yum install bind -y
mkdir -p /var/log/named
chown -R named. /var/log/named
dns配置解释
options块中:
listen-on port 监听DNS查询请求的本机IP地址及端口
eg:listen-on port 53 { 192.168.0.78 };监听本机的192.168.0.78的DNS查询,如果不跟这个参数,表示侦听本机所有IP地址收到的DNS
listen-on port 53 { any; };
listen-on-v6 port 监听IPv6的
directory 指定区域配置文件所在的目录
directory "/var/named";
query-source port 指定客户端在提交DNS查询必须使用的源端口
query-source port 53;
allow-query { IP1;ip2;ipn.. };指定接受DNS查询请求的客户端
eg:allow-query { 192.168.0.101;192.168.1.1; };只允许这两个地址查询
allow-recursion 指定允许提交递归查询的客户端,allow-query和allow-recursion区别在于allow-recursion 不负责提交迭代查询
forward only|first
forwarders 指定转发服务器
eg:forwarders { 1.1.1.1; }; 凡是在本机上查询不到的都转发到1.1.1.1上
version 指定DNS客户端在查询的时候显示的BIND版本号,如version “hello,I can't tell you”
interface-interval 指定BIND检查网络接口变化的周期
datasize 服务器可以使用最大内存量
max-cache-size最大缓存,如max-cache-size 10M
recursive-clients DNS服务器同时为客户执行的递归查询最大的数量,默认1000,每个递归查询一次会使用20KB内存
tcp-clients DNS服务同时街艘的tcp连接最大的数量,默认100
allow-transfer 允许区域传输的辅助区域
max-transfer-time-in 设置时间更长的进入的域传输将会被终止,默认120min
max-transfer-idel-in 在设置的时间下没有任何进展的域传输将会被终止,默认60min
max-transfer-time-out 运行时间比设定的时间长的发出的域传输将会被终止
max-transfer-idle-out 在设定的时间下没有任何进展的发出的域传输将会被终止
serial-query-rate 辅助服务器将会定时查询主域名服务器
transfer-format 传输的格式
transfer-in 可以同时运行的进入的域传输最大值
recursion yes|no|off 是否允许客户递归查询
view块
match-clients 指定提交DNS客户端的源IP地址范围
match-destinations 指定提交DNS客户端的目标IP地址范围
match-rescursive-only yes|no 指定是否可以递归查询
include 指定主配置文件,如include "/etc/name.zones";
单节点dns配置
修改/etc/named.conf
listen-on port 53 { 10.0.0.10; };
//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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
//forwarders { 223.5.5.5; };
forwarders { 10.0.0.2; }; //上级网关地址
allow-query { any; };
recursion yes; //使用递归的方法查询
dnssec-enable no;
dnssec-validation no;
检查配置 (没有报错是最好的返回)
named-checkconf
配置bind9
配置区域配置文件 /etc/named/named.rfc1912.zones
zone "host.com" IN {
type master;
file "host.com.zone";
allow-update { 10.0.0.10; };
};
zone "od.com" IN {
type master;
file "od.com.zone";
allow-update { 10.0.0.10; };
};
配置区域数据文件
/var/named/host.com.zone
$ORIGIN host.com.
$TTL 600 ; 10 minutes
@ IN SOA dns.host.com. dnsadmin.host.com. (
2020080801 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS dns.host.com.
$TTL 60 ; 1 minute
dns IN A 10.0.0.10
ops-k8s-master01 IN A 10.0.0.10
ops-k8s-master02 IN A 10.0.0.11
ops-k8s-master03 IN A 10.0.0.12
ops-k8s-node01 IN A 10.0.0.13
ops-k8s-node02 IN A 10.0.0.14
ops-k8s-harbor01 IN A 10.0.0.15
ops-k8s-harbor02 IN A 10.0.0.16
/var/named/od.com.zone
$ORIGIN od.com.
$TTL 600 ; 10 minutes
@ IN SOA dns.od.com. dnsadmin.od.com. (
2020080801 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
@ IN NS dns.od.com.
dns IN A 10.0.0.10
检查配置
named-checkconf
启动服务
systemctl start named
修改完让配置里面生效
测试解析是否生效
# dig -t A ops-k8s-master02.host.com @10.0.0.10 +short
10.0.0.11
高可用架构配置
主节点
配置/etc/named.conf
options {
listen-on port 53 { 192.168.0.0/16; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { 192.168.0.0/16;10.177.99.0/24;172.22.22.0/24;172.18.0.0/16; };
forwarders { 223.5.5.5;8.8.8.8; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-enable no;
dnssec-validation no;
#配置日志
logging {
channel query_log {
file "/var/log/named/bind_query.log" versions 3 size 10M;
severity dynamic;
print-category yes;
print-severity yes;
print-time yes;
};
category queries { query_log; };
};
下面文件添加下面的内容
/etc/named.rfc1912.zones
zone "its.wzs.net" IN {
type master;
file "its.wzs.net.zone";
allow-transfer { 10.0.77.66; };
};
zone "dev.wzs.net" IN {
type master;
file "dev.wzs.net.zone";
allow-transfer { 10.0.77.66; };
};
zone "test.wzs.net" IN {
type master;
file "test.wzs.net.zone";
allow-transfer { 10.0.77.66; };
};
zone "uat.wzs.net" IN {
type master;
file "uat.wzs.net.zone";
allow-transfer { 10.0.77.66; };
};
zone "wzsdns.com" IN {
type master;
file "wzsdns.com.zone";
allow-transfer { 10.0.77.66; };
notify yes;
};
zone "wzs.com" IN {
type master;
file "wzs.com.zone";
allow-transfer { 10.0.77.66; };
notify yes;
};
zone "svc.cluster.local" IN {
type master;
file "svc.cluster.local.zone";
allow-transfer { 10.0.77.66; };
notify yes;
};
/var/named/its.wzs.net.zone
$ORIGIN its.wzs.net.
$TTL 600 ; 10 minutes
@ IN SOA ns1.its.wzs.net. dnsadmin.its.wzs.net. (
2021012801 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
@ IN NS ns1
@ IN NS ns2
$TTL 60 ; 1 minute
ns1 IN A 10.0.66.88
ns2 IN A 10.0.77.66
/var/named/dev.wzs.net.zone
$ORIGIN dev.wzs.net.
$TTL 600 ; 10 minutes
@ IN SOA ns1.dev.wzs.net. dnsadmin.dev.wzs.net. (
2021012801 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
@ IN NS ns1
@ IN NS ns2
$TTL 60 ; 1 minute
ns1 IN A 10.0.66.88
ns2 IN A 10.0.77.66
/var/named/test.wzs.net.zone
$ORIGIN test.wzs.net.
$TTL 600 ; 10 minutes
@ IN SOA ns1.test.wzs.net. dnsadmin.test.wzs.net. (
2021012801 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
@ IN NS ns1
@ IN NS ns2
$TTL 60 ; 1 minute
ns1 IN A 10.0.66.88
ns2 IN A 10.0.77.66
/var/named/uat.wzs.net.zone
$ORIGIN uat.wzs.net.
$TTL 600 ; 10 minutes
@ IN SOA ns1.uat.wzs.net. dnsadmin.uat.wzs.net. (
2021012801 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
@ IN NS ns1
@ IN NS ns2
$TTL 60 ; 1 minute
ns1 IN A 10.0.66.88
ns2 IN A 10.0.77.66
从节点配置
修改/etc/named.conf 同主节点
下面文件添加下面的内容
/etc/named.rfc1912.zones
zone "its.wzs.net" IN {
type slave;
file "slaves/its.wzs.net.zone";
masters {10.0.66.88;};
};
zone "dev.wzs.net" IN {
type slave;
file "slaves/dev.wzs.net.zone";
masters {10.0.66.88;};
};
zone "test.wzs.net" IN {
type slave;
file "slaves/test.wzs.net.zone";
masters {10.0.66.88;};
};
zone "uat.wzs.net" IN {
type slave;
file "slaves/uat.wzs.net.zone";
masters {10.0.66.88;};
};
主从节点启动服务 并设置开机自启
systemctl start named
systemctl enable named
修改完毕后,理解生效
rndc reload
环境使用自建dns服务
在Linux内核2.3.99以后的版本中,可以以-u选项以非root权限运行BIND。该命令表示以nobody用户身份运行BIND,使用nobody身份运行能够降低缓冲区溢出攻击所带来的危险
/usr/local/sbin/named –u nobody
更改主机网卡中dns的配置
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=10.0.0.10
重启网卡
systemctl restart network
查看变化
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.0.10
nameserver 114.114.114.114
主机域添加search 便于使用短域名
cat /etc/resolv.conf
# Generated by NetworkManager
search host.com
nameserver 10.0.0.10
nameserver 114.114.114.114
windows 将这个内网dns添加到dns列表中
vmware workstation 更改 net8的dns地址