范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

DNS从入门到放弃系列(2)

  见字如面,大家好,我是小斐,今天带来关于 LDNS 的最佳实践,关于 bind 9 的在生产环境中的使用,本篇文章争取言简意赅的说明 bind 9 在内部企业中的应用。
  环境说明:
  系统:Ubuntu 22.04.1 LTS
  机器:两台做主从(主服务器和辅助服务器)
  主:192.168.10.200
  从:192.168.10.201 bind 9安装默认安装目录
  默认情况下,BIND 将安装在 /usr/local 中,并将文件放在它的这些子目录中: sbin    # named 和所有与 BIND 相关的系统管理工具,例如 rndc、dnssec-keygen、named-checkconf 等。 bin      # 非管理员用户的工具 - 你会在这里找到 dig、host 和 nsupdate lib       # 目标代码库 share   # BIND的手册页和各种子目录 include    # C头文件
  编译时 未更改默认目录 的  BIND  将使用以下目录(相对于根目录 "/") /etc    # 配置文件(例如 named.conf、rndc.conf) /var/run    # named 创建和使用的运行时文件源码编译安装# 新建构建目录 下载的源码包放置在该目录中 root@dns01:/home# mkdir bulids root@dns01:/home/bulids# pwd /home/bulids  # wget可能会比较慢 root@dns01:/home/bulids# wget https://downloads.isc.org/isc/bind9/9.18.9/bind-9.18.9.tar.xz root@dns01:/home/bulids# tar -xvf bind-9.18.9.tar.xz  # 进入解压后的目录中 root@dns01:/home/bulids/bind-9.18.9# pwd /home/bulids/bind-9.18.9  # 查看编译选项参数帮助 root@dns01:/home/bulids/bind-9.18.9# ./configure --help  # 编译依赖库安装 root@dns01:/home/bulids/bind-9.18.9# apt-get install gcc zlib1g-dev build-essential pkg-config autoconf automake libtool libssl-dev libcap-dev libxml2 libxml2-dev libfstrm-dev libprotobuf-c-dev liblmdb-dev libmaxminddb-dev libidn2-dev libreadline-dev libjson-c-dev fstrm-bin protobuf-c-compiler  # 源码编译libuv依赖 辅助服务器使用了 libuv-1.44.2 版本 root@dns01:/home/bulids/libuv-1.42.0# wget https://dist.libuv.org/dist/v1.42.0/libuv-v1.42.0.tar.gz root@dns01:/home/bulids# tar -zxvf libuv-v1.42.0.tar.gz root@dns01:/home/bulids# cd libuv-1.42.0/ root@dns01:/home/bulids/libuv-1.42.0# pwd /home/bulids/libuv-1.42.0 root@dns01:/home/bulids/libuv-1.42.0# sh autogen.sh root@dns01:/home/bulids/libuv-1.42.0# ./configure root@dns01:/home/bulids/libuv-1.42.0# make -j4 root@dns01:/home/bulids/libuv-v1.42.0# make install root@dns01:/home/bulids/libuv-v1.42.0# ldconfig  # 源码编译jemalloc 官方推荐更换内存分配器为jemalloc 解决OOM问题 提高性能 root@dns01:/home/bulids# wget https://github.com/jemalloc/jemalloc/releases/download/5.3.0/jemalloc-5.3.0.tar.bz2 root@dns01:/home/bulids# tar -xjvf jemalloc-5.3.0.tar.bz2 root@dns01:/home/bulids# cd jemalloc-5.3.0 root@dns01:/home/bulids/jemalloc-5.3.0# ./configure root@dns01:/home/bulids/jemalloc-5.3.0# make -j8 root@dns01:/home/bulids/jemalloc-5.3.0# make install root@dns01:/home/bulids/jemalloc-5.3.0# ldconfig  # 官方关于内存OOM问题分析 https://www.isc.org/blogs/jemalloc-glitch/  # 源码编译bind 9  编译帮助执行 ./configure --help root@dns01:/home/bulids# cd bind-9.18.9 root@dns01:/home/bulids/bind-9.18.9# ./configure --prefix=/usr/local/bind --with-openssl --with-json-c --enable-largefile --with-libidn2 --enable-full-report --enable-dnstap --disable-doh root@dns01:/home/bulids/bind-9.18.9# make root@dns01:/home/bulids/bind-9.18.9# make install
  编译安装完成后如下所示: /usr/local/bind
  编译参数说明: --prefix=/usr/local/bind    # 定义安装目录 如不定义则安装默认目录安装 --sysconfdir=$PERFIX/etc    # 如定义安装目录 就根据--prefix参数定义的目录 创建下一级配置文件所在目录 --localstatedir=$PERFIX/var    # 如定义安装目录 就根据--prefix参数目录 创建下一级目录named运行动态生成的文件目录 --with-openssl    # 开启openssl --with-json-c    # HTTP 统计信息格式 --enable-largefile    # 2G以上大文件支持 --with-libidn2    # dig 国际化通用域名 IDN支持 --enable-full-report    # 编译显示全部报告 --enable-dnstap    # 开启dnstap日志记录 --disable-doh    # 关闭DNS over HTTPS
  编译官方文档说明: bind 9运行bind服务器配置角色主服务器 :负责至少解析一个域内的域名,维护所负责解析的域数据库,可对该域数据进行读写操作 辅服务器 :负责从主服务器或其他辅服务器中复制相关解析库,为主服务器缓解解析压力 缓存服务器 :不负责域名解析,仅仅作为缓存,加速解析速度 转发服务器 :发现非本机负责的请求后,不再向根发起请求,而是直接转发给指定的一台或多台服务器,自身并不保存查询
  为了命令方便,把bind 9相关的命令加入环境变量,使得命令不需要绝对路径执行 root@dns01:/usr/local/bind# vim /etc/profile  export PATH=${PATH}:/usr/local/bind/bin:/usr/local/bind/sbin    # 在文件末尾输入这行环境变量 root@dns01:/usr/local/bind# source /etc/profile root@dns01:/usr/local/bind# named -V    # 查看bind 9版本信息和默认路径
  主服务器 - Primary Authoritative Name Server# 为了安全 以非root运行 root@dns01:/usr/local/bind# groupadd -g 53 -r bind root@dns01:/usr/local/bind# useradd -u 53 -s /sbin/nolgin -r bind -g bind  # 授权bind目录 named权限 root@dns01:/usr/local/bind# chown -R bind:bind /usr/local/bind  # 使用rndc-confgen生成rndc.conf配置文件 root@dns01:/usr/local/bind/etc# /usr/local/bind/sbin/rndc-confgen > /usr/local/bind/etc/rndc.conf  # rndc.conf配置文件是运行rndc工具所需 rndc是官方推荐管理bind的远程管理工具 rndc 以953端口运行 root@dns01:/usr/local/bind/etc# vim rndc.conf # Start of rndc.conf key "rndc-key" {         algorithm hmac-sha256;         secret "Ocpnouni6h/ob6Bw9aWAYBoCSYNJQVK/fG3XsYVm56k="; };  options {         default-key "rndc-key";         default-server 127.0.0.1;         default-port 953; }; # End of rndc.conf  # 取rndc.conf文件中最后10行的前面9行重定向named.conf文件中,再去掉每一行前面的#符号 root@dns01:/usr/local/bind/etc# tail -10 rndc.conf | head -9 | sed s/# //g > named.conf #上面为什么这么做呢 是因为rndc要管理bind必须在named.conf中 导入rndc-key信息和controls信息
  named.conf 主服务器配置 key "rndc-key" {   algorithm hmac-sha256;   secret "Ocpnouni6h/ob6Bw9aWAYBoCSYNJQVK/fG3XsYVm56k="; };  // rndc通道 controls {   inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };  // 日志输出 新建日志文件夹logs logging {   channel example_log {   file "logs/example.log" versions 3 size 250k;   severity info;   };   category default {     example_log;   }; };  // 为本地主机提供正向映射区域 zone "localhost" {   type primary;   file "etc/localhost-forward.db";    //这个文件不需要改变   notify no; };  // 为环回口提供反向映射区域 127.0.0.1 zone "0.0.127.in-addr.arpa" {   type primary;   file "etc/localhost.rev";    //这个文件不需要改变   notify no; };  # DNS 全局选项配置文件 include "/usr/local/bind/etc/named.conf.options";  # 自定义区域配置文件 include "/usr/local/bind/etc/named.conf.local"; # 默认区域,例如localhost,其反向和根提示 #include "/usr/local/bind/etc/named.conf.default-zones";
  localhost-forward.db 主服务器配置 $TTL 3h localhost.  SOA      localhost.  nobody.localhost. 42  1d  12h  1w  3h             NS       localhost.             A        127.0.0.1             AAAA     ::1
  localhost.rev 主服务器配置 $TTL 1D @        IN        SOA  localhost. root.localhost. (                         2007091701 ; serial                         30800      ; refresh                         7200       ; retry                         604800     ; expire                         300 )      ; minimum          IN        NS    localhost. 1        IN        PTR   localhost.
  named.conf.options 主服务器配置 options {         version "not currently available";    //隐藏bind版本,为了安全考虑         directory "/usr/local/bind";    //运行时数据的目录         pid-file "/usr/local/bind/var/run/named.pid";    //pid文件         recursion no;    //全局递归关闭         allow-query { any; };    //面向所有源IP提供解析服务         allow-query-cache { none; };    //面向所有源IP不提供查询缓存         listen-on port 53 { any; };    //监听IPv4的53端口  可改为本机IP 192.168.10.200          //forwarders {    除了本地配置的域名,其他都转发DNS查询到上级DNS服务器         //      223.5.5.5;         //      114.114.114.114         //};         //forward only;     针对外网域名只转发上级DNS中         dnssec-validation no;    # DNSSEC验证关闭          listen-on-v6 { none; };    //关闭监听IPv6的53端口 };
  named.conf.local 主服务器配置 // example.com 提供映射区域 zone "example.com" {   // 这是主服务器区域   type primary;   file "zones/primary.example.com";   notify yes;    // 启动区域传输   also-notify { 192.168.10.201; };   // 允许从服务器可以复制   allow-transfer {     192.168.10.201;    //从服务器IP   }; };  // 创建反向区域文件 192.168.10.x zone "10.168.192.in-addr.arpa" {     type primary;     file "zones/db.192.168.10";     notify yes;    // 启动区域传输     also-notify { 192.168.10.201; };     // 允许从服务器可以复制     allow-transfer {       192.168.10.201;    //从服务器IP   }; };
  区域配置文件:example.com 以这个域名为例 #cat primary.example.com 文件 ; BIND data file for example.com $TTL    604800 @       IN      SOA     ns01.example.com. admin.example.com. (                      2022120601         ; Serial                          604800         ; Refresh                           86400         ; Retry                         2419200         ; Expire                          604800 )       ; Negative Cache TTL  @       IN      NS      ns01.example.com. @       IN      A       192.168.10.200 @       IN      AAAA    ::1 ns01    IN      A       192.168.10.200  #cat db.192.168.10 文件  # 192.168.10.rev 官方示例配置文件命名方式:网络位.rev ; BIND reverse data file for local 192.168.10.XXX net $TTL    604800 @       IN      SOA     ns01.example.com. admin.example.com. (                      2022120601         ; Serial                          604800         ; Refresh                           86400         ; Retry                         2419200         ; Expire                          604800 )       ; Negative Cache TTL ; @       IN      NS      ns01.example.com. 200     IN      PTR     ns01.example.com.
  新建systemd管理配置文件:
  vim /lib/systemd/system/named.service [Unit] Description=BIND Domain Name Server Documentation=man:named(8) After=network.target Wants=nss-lookup.target Before=nss-lookup.target  [Service] Type=forking EnvironmentFile=-/usr/local/bind/etc/named ExecStart=/usr/local/bind/sbin/named $OPTIONS ExecReload=/usr/local/bind/sbin/rndc reload ExecStop=/usr/local/bind/sbin/rndc stop Restart=on-failure  [Install] WantedBy=multi-user.target Alias=bind9.service
  在创建named环境变量文件 vim named # run resolvconf? RESOLVCONF=no  # startup options for the server OPTIONS="-u bind -c /usr/local/bind/etc/named.conf"    # 指定启用用户和启动配置文件
  主服务器启动 root@dns01:/usr/local/bind/etc# systemctl daemon-reload root@dns01:/usr/local/bind/etc# systemctl start named.service
  启动失败排错:
  ​
  执行上述操作,无法看到具体的错误信息,故想到named可以前台允许,打印运行信息: # -g 前台运行 -u 启用用户 -c 指定启动配置文件 root@dns01:/usr/local/bind/sbin# named -u bind -c ../etc/named.conf -g  06-Dec-2022 13:23:17.270 loading configuration from "/usr/local/bind/sbin/../etc/named.conf" 06-Dec-2022 13:23:17.274 directory "/usr/local/bind/var/run" is not writable 06-Dec-2022 13:23:17.274 /usr/local/bind/etc/named.conf.options:3: parsing failed: permission denied 06-Dec-2022 13:23:17.274 loading configuration: permission denied 06-Dec-2022 13:23:17.274 exiting (due to fatal error)
  发现问题 directory "/usr/local/bind/var/run" is not writable 指定的运行时数据目录不可写,发现没用创建该目录,新建该目录,并授权bind: root@dns01:/usr/local# mkdir -p /usr/local/bind/var/run root@dns01:/usr/local# chown -R bind:bind /usr/local/bind  root@dns01:/usr/local/bind/sbin# named -u bind -c ../etc/named.conf -g # 第二次运行还是报错,不过是新的错误  06-Dec-2022 13:33:44.844 not using config file logging statement for logging due to -g option 06-Dec-2022 13:33:44.844 checking logging configuration failed: file not found 06-Dec-2022 13:33:44.844 loading configuration: file not found 06-Dec-2022 13:33:44.844 exiting (due to fatal error)  # 检查配置文件named.conf
  ​
  发现日志记录配置文件路径写错了,log应改为logs文件夹:
  ​
  因为我新建的文件夹就是logs文件夹,故日志记录开启日志记录,但由于路径设置错误,故启动失败。
  修改为: touch example.log chown -R bind:bind /usr/local/bind
  启动:
  root@dns01:/usr/local/bind/etc# systemctl start named.service
  root@dns01:/usr/local/bind/etc# systemctl status named.service
  named启动成功
  验证主服务器是否有效:这里的主服务器也即是权威服务器 # 修改客户端机器DNS和DNS后缀搜索列表 vim /etc/netplan/00-installer-config.yaml  # This is the network config written by "subiquity" network:   ethernets:     ens33:       addresses:       - 192.168.10.200/24       gateway4: 192.168.10.254       nameservers:         addresses: [192.168.10.200]    # 修改主服务器DNS地址         search: [example.com]    # 输入搜索域列表 可选   version: 2  # 配置生效 netplan apply
  dig命令测试验证: dig ns01.example.com
  ​
  如上图所示,解析成功,主服务器(primary DNS)安装完成。 辅助服务器 - Secondary Authoritative Name Server
  1、源码编译安装(同上)
  2、辅助服务器启动配置
  rndc.conf 辅助服务器配置 root@dns02:/home/bulids/bind-9.18.9# cd /usr/local/bind/ root@dns02:/usr/local/bind# ls bin  etc  include  lib  sbin  share  # 新建目录 root@dns02:/usr/local/bind# mkdir logs root@dns02:/usr/local/bind# mkdir zones root@dns02:/usr/local/bind# mkdir -p var/run  # 最终目录结构 root@dns02:/usr/local/bind# ls bin  etc  include  lib  logs  sbin  share  var  zones  # 为了安全 以非root运行 root@dns02:/usr/local/bind# groupadd -g 53 -r bind root@dns02:/usr/local/bind# useradd -u 53 -s /sbin/nolgin -r bind -g bind  # 授权bind目录 named权限 root@dns02:/usr/local/bind# chown -R bind:bind /usr/local/bind  # 使用rndc-confgen生成rndc.conf配置文件 root@dns02:/usr/local/bind/etc# /usr/local/bind/sbin/rndc-confgen > /usr/local/bind/etc/rndc.conf  # rndc.conf配置文件是运行rndc工具所需 rndc是官方推荐管理bind的远程管理工具 rndc 以953端口运行 root@dns02:/usr/local/bind/etc# vim rndc.conf # Start of rndc.conf key "rndc-key" {         algorithm hmac-sha256;         secret "D4Ap4JN71LvPpFeIA+pwOoNsUP/+Rf98uI3IhDoA+Ls="; };  options {         default-key "rndc-key";         default-server 127.0.0.1;         default-port 953; }; # End of rndc.conf  # 取rndc.conf文件中最后10行的前面9行重定向named.conf文件中,再去掉每一行前面的#符号 root@dns02:/usr/local/bind/etc# tail -10 rndc.conf | head -9 | sed s/# //g > named.conf #上面为什么这么做呢 是因为rndc要管理bind必须在named.conf中 导入rndc-key信息和controls信息
  named.conf 辅助服务器配置 key "rndc-key" {   algorithm hmac-sha256;   secret "D4Ap4JN71LvPpFeIA+pwOoNsUP/+Rf98uI3IhDoA+Ls="; };  // rndc控制通道 controls {   inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };  // 日志输出 logging {   channel example_log {   file "logs/example.log" versions 3 size 250k;   severity info;   };   category default {     example_log;   }; };  // 为本地主机提供正向映射区域 zone "localhost" {   type primary;   file "etc/localhost-forward.db";   notify no; };  // 为环回口提供反向映射区域 127.0.0.1 zone "0.0.127.in-addr.arpa" {   type primary;   file "etc/localhost.rev";   notify no; };  include "/usr/local/bind/etc/named.conf.options"; include "/usr/local/bind/etc/named.conf.local"; #include "/usr/local/bind/etc/named.conf.default-zones";
  localhost-forward.db 辅助服务器配置 同上 $TTL 3h localhost.  SOA      localhost.  nobody.localhost. 42  1d  12h  1w  3h             NS       localhost.             A        127.0.0.1             AAAA     ::1
  localhost.rev 辅助服务器配置 同上 $TTL 1D @        IN        SOA  localhost. root.localhost. (                         2007091701 ; serial                         30800      ; refresh                         7200       ; retry                         604800     ; expire                         300 )      ; minimum          IN        NS    localhost. 1        IN        PTR   localhost.
  named.conf.options 辅助服务器配置 options {         version "not currently available";         directory "/usr/local/bind";         pid-file "/usr/local/bind/var/run/named.pid";         recursion no;         allow-query { any; };         allow-query-cache { none; };         listen-on port 53 { 192.168.10.201; };    // 修改辅助服务器IP地址          //forwarders {         //      223.5.5.5;         //      114.114.114.114         //};         //forward only;         dnssec-validation no;          listen-on-v6 { none; };    // 关闭IPv6端口监听         //auth-nxdomain no; };
  named.conf.local 辅助服务器配置 // 我们是 example.com 的辅助服务器 zone "example.com" {    // 这是辅助服务器区域   type secondary;   masterfile-format text;    // 默认raw格式 打开时乱码显示 text文本格式 可查看从主服务器更新过来的数据   file "zones/secondary.example.com";   // 主服务器IP   primaries { 192.168.10.200; };    // 注意替换主DNS服务器IP };  // 反向区域文件 192.168.10.x zone "10.168.192.in-addr.arpa" {   type secondary;   masterfile-format text;    // 默认raw格式 打开时乱码显示 text文本格式 可查看从主服务器更新过来的数据   file "zones/db.192.168.10";   primaries { 192.168.10.200; };    // 注意替换主DNS服务器IP };
  启动:
  新建systemd管理配置文件:vim /lib/systemd/system/named.service [Unit] Description=BIND Domain Name Server Documentation=man:named(8) After=network.target Wants=nss-lookup.target Before=nss-lookup.target  [Service] Type=forking EnvironmentFile=-/usr/local/bind/etc/named ExecStart=/usr/local/bind/sbin/named $OPTIONS ExecReload=/usr/local/bind/sbin/rndc reload ExecStop=/usr/local/bind/sbin/rndc stop Restart=on-failure  [Install] WantedBy=multi-user.target Alias=bind9.service
  named文件新建:vim /usr/local/bind/etc/named # run resolvconf? RESOLVCONF=no  # startup options for the server OPTIONS="-u bind -c /usr/local/bind/etc/named.conf"    # 指定启用用户和启动配置文件
  最后执行权限授权:chown -R bind:bind /usr/local/bind root@dns02:/usr/local/bind/zones# systemctl daemon-reload root@dns02:/usr/local/bind/zones# systemctl start named.service root@dns02:/usr/local/bind/zones# systemctl status named.service    # 查看启动成功
  启动后:secondary.example.com和db.192.168.10 会从主服务器中自动更新过来,不用自己新建。
  添加辅助服务器到区域中: # 修改主服务器 zone 区域配置  root@dns01:/usr/local/bind/zones# vim primary.example.com ; BIND data file for example.com $TTL    604800 @       IN      SOA     ns01.example.com. admin.example.com. (                      2022120602         ; Serial                          604800         ; Refresh                           86400         ; Retry                         2419200         ; Expire                          604800 )       ; Negative Cache TTL  @       IN      NS      ns01.example.com. @       IN      NS      ns02.example.com.  ns01    IN      A       192.168.10.200 ns02    IN      A       192.168.10.201  # 修改主服务器 zone 反向区域配置 root@dns01:/usr/local/bind/zones# vim db.192.168.10    # 192.168.254.rev 官方示例配置文件命名方式:网络位.rev ; BIND reverse data file for local 192.168.10.XXX net $TTL    604800 @       IN      SOA     ns01.example.com. admin.example.com. (                      2022120602         ; Serial                          604800         ; Refresh                           86400         ; Retry                         2419200         ; Expire                          604800 )       ; Negative Cache TTL ; @       IN      NS      ns01.example.com. @       IN      NS      ns02.example.com. 200     IN      PTR     ns01.example.com. 201     IN      PTR     ns02.example.com.
  修改完后:可看到辅助服务器配置文件立即更新 # 查看辅助区域文件 root@dns02:/usr/local/bind/zones# vim secondary.example.com  $ORIGIN . $TTL 604800     ; 1 week example.com             IN SOA  ns01.example.com. admin.example.com. (                                 2022120602 ; serial                                 604800     ; refresh (1 week)                                 86400      ; retry (1 day)                                 2419200    ; expire (4 weeks)                                 604800     ; minimum (1 week)                                 )                         NS      ns01.example.com.                         NS      ns02.example.com. $ORIGIN example.com. ns01                    A       192.168.10.200 ns02                    A       192.168.10.201  # 查看辅助区域IP反向映射配置文件 root@dns02:/usr/local/bind/zones# vim db.192.168.10    # 192.168.254.rev 官方示例配置文件命名方式:网络位.rev  $ORIGIN . $TTL 604800     ; 1 week 10.168.192.in-addr.arpa IN SOA  ns01.example.com. admin.example.com. (                                 2022120602 ; serial                                 604800     ; refresh (1 week)                                 86400      ; retry (1 day)                                 2419200    ; expire (4 weeks)                                 604800     ; minimum (1 week)                                 )                         NS      ns01.example.com.                         NS      ns02.example.com. $ORIGIN 10.168.192.in-addr.arpa. 200                     PTR     ns01.example.com. 201                     PTR     ns02.example.com.
  测试区域配置文件:named-checkzone root@dns01:/usr/local/bind# named-checkzone example.com zones/primary.example.com zone example.com/IN: loaded serial 2022120601 OK  # 上面信息代表区域配置文件没有语法错误  root@dns01:/usr/local/bind# named-checkzone db.192.168.10 zones/db.192.168.10  zone db.192.168.10/IN: loaded serial 2022120601 OK
  dig测试验证:
  ​  缓存服务器 - Caching Name Servers
  1、源码编译安装(同上)
  2、缓存服务器启动配置
  配置和安装方式都和主服务器大同小异,配置文件修改下:
  named.conf 配置: key "rndc-key" {   algorithm hmac-sha256;   secret "Ocpnouni6h/ob6Bw9aWAYBoCSYNJQVK/fG3XsYVm56k="; };  // rndc通道 controls {   inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };  // 允许查询并缓存的内部私有IP地址段 acl corpnets {   192.168.4.0/24;   192.168.7.0/24; };  // 日志输出 logging {   channel example_log {   file "logs/example.log" versions 3 size 250k;   severity info;   };   category default {     example_log;   }; };  // 根区域 提示文件 zone "." {   type hint;   file "etc/named.root"; };  // 为本地主机提供正向映射区域 zone "localhost" {   type primary;   file "etc/localhost-forward.db";   notify no; };  // 为环回口提供反向映射区域 127.0.0.1 zone "0.0.127.in-addr.arpa" {   type primary;   file "etc/localhost.rev";   notify no; };  // 为本地IP反向映射区域 zone "10.168.192.in-addr.arpa" {   type primary;   file "etc/192.168.10.rev";   notify no; };  include "/usr/local/bind/etc/named.conf.options"; #include "/usr/local/bind/etc/named.conf.local"; #include "/usr/local/bind/etc/named.conf.default-zones";
  根提示文件下载:named.root 放在/usr/local/bind/etc 目录下
  named.conf.options 配置: options { 	version "not currently available"; 	directory "/usr/local/bind"; 	pid-file "/usr/local/bind/var/run/named.pid"; 	recursion yes; 	allow-query { corpnets; }; 	allow-query-cache { corpnets; };    // 指定哪些主机(IP 地址列表)可以访问此服务器的缓存,从而有效地控制递归。 	listen-on port 53 { 192.168.10.200; }; 	dnssec-validation no; 	listen-on-v6 { none; };         empty-zones-enable yes; };转发服务器 - Forwarding Name Servers
  1、源码编译安装(同上)
  2、缓存服务器启动配置
  配置和安装方式都和主服务器大同小异,配置文件修改下:
  named.conf 配置: key "rndc-key" {   algorithm hmac-sha256;   secret "Ocpnouni6h/ob6Bw9aWAYBoCSYNJQVK/fG3XsYVm56k="; };  // rndc通道 controls {   inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };  // 允许查询并缓存的内部私有IP地址段 acl corpnets {   192.168.4.0/24;   192.168.7.0/24; };  // 日志输出 logging {   channel example_log {   file "logs/example.log" versions 3 size 250k;   severity info;   };   category default {     example_log;   }; };  // 为本地主机提供正向映射区域 zone "localhost" {   type primary;   file "etc/localhost-forward.db";   notify no; };  // 为环回口提供反向映射区域 127.0.0.1 zone "0.0.127.in-addr.arpa" {   type primary;   file "etc/localhost.rev";   notify no; };  // 为本地IP反向映射区域 zone "10.168.192.in-addr.arpa" {   type primary;   file "etc/192.168.10.rev";   notify no; };  include "/usr/local/bind/etc/named.conf.options"; #include "/usr/local/bind/etc/named.conf.local"; #include "/usr/local/bind/etc/named.conf.default-zones";
  named.conf.options 配置:该配置应用在内网有内网域名和公网解析交给公共DNS的场景 options { 	version "not currently available"; 	directory "/usr/local/bind"; 	pid-file "/usr/local/bind/var/run/named.pid"; 	recursion yes; 	allow-query { corpnets; }; 	allow-query-cache { corpnets; };    // 指定哪些主机(IP 地址列表)可以访问此服务器的缓存,从而有效地控制递归。 	listen-on port 53 { 192.168.10.200; }; 	dnssec-validation no; 	listen-on-v6 { none; };         empty-zones-enable yes;         forwarders {             223.5.5.5;             114.114.114.114;         };         // 表示将转发除已定义区域以外的所有查询         forward only; };
  区域转发服务器配置:
  此转发解析器配置仅将区域example.com的递归查询转发到位于 192.168.250.3 和 192.168.230.27 的解析器。所有其他递归查询,除了那些针对已定义区域的查询和那些答案已经在其缓存中的查询,都由这个解析器处理。转发解析器将 缓存来自公共网络和转发解析器的所有响应 。
  named.conf 配置: key "rndc-key" {   algorithm hmac-sha256;   secret "Ocpnouni6h/ob6Bw9aWAYBoCSYNJQVK/fG3XsYVm56k="; };  // rndc通道 controls {   inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };  // 允许查询并缓存的内部私有IP地址段 acl corpnets {   192.168.4.0/24;   192.168.7.0/24; };  // 日志输出 logging {   channel example_log {   file "logs/example.log" versions 3 size 250k;   severity info;   };   category default {     example_log;   }; };  // 为本地主机提供正向映射区域 zone "localhost" {   type primary;   file "etc/localhost-forward.db";   notify no; };  // 为环回口提供反向映射区域 127.0.0.1 zone "0.0.127.in-addr.arpa" {   type primary;   file "etc/localhost.rev";   notify no; };  // 为本地IP反向映射区域 zone "10.168.192.in-addr.arpa" {   type primary;   file "etc/192.168.10.rev";   notify no; };  // 区域文件转发example.com zone "example.com" {   type forward;   forwarders {     192.168.10.100;  // 针对example.com的查询转发到192.168.10.100和192.168.10.101上     192.168.10.101;   };   forward only; };  include "/usr/local/bind/etc/named.conf.options"; #include "/usr/local/bind/etc/named.conf.local"; #include "/usr/local/bind/etc/named.conf.default-zones";
  named.conf.options 配置 options { 	version "not currently available"; 	directory "/usr/local/bind"; 	pid-file "/usr/local/bind/var/run/named.pid"; 	recursion yes; 	allow-query { corpnets; }; 	allow-query-cache { corpnets; };    // 指定哪些主机(IP 地址列表)可以访问此服务器的缓存,从而有效地控制递归。 	listen-on port 53 { 192.168.10.200; }; 	dnssec-validation no; 	listen-on-v6 { none; };         empty-zones-enable yes; };bind 9混杂模式
  不同角色配置起到不同的功能,但是实际情况是主服务器和辅助服务器,可能需要启用缓存和转发服务器的功能,故在实际环境中,主服务器和辅助服务器 同时也是缓存服务器和转发服务器,可以把配置进行结合启用。
  到此就介绍关于bind 9安装和搭建以及基本的运行配置。下一篇将介绍核心配置文件,named.conf配置文件的语法和参数说明。

俄罗斯的首都莫斯科,遭炸弹威胁大家好,本期我们来重点关注,俄乌战争的两大最新热点消息!1俄外长,拉夫罗夫称,西方国家向乌克兰提供远程火箭炮,是对俄罗斯的直接挑衅,后果将非常严重。2俄罗斯的首都莫斯科,一栋商务大美媒叹息中国对俄罗斯的支持并未减弱!唇亡齿寒的道理都懂据媒体报道,日前,华盛顿邮报撰文指出,在不违反西方制裁规定的情况下,中国探寻在财政上帮助俄罗斯的可能性。一位美国官员认为,中国希望与俄罗斯在一起,并向公众发出中立的信号,且在财政计奇瑞小蚂蚁魅上市后,女朋友终于找到上市以来,奇瑞小蚂蚁一直以贴心闺蜜的形象成为大批用户的心头好,近日,奇瑞新能源再打造私属闺蜜小蚂蚁魅,并发布了外形官图以及部分配置,宣布这款备受瞩目的小车即将于5月下旬上市。那么这连烧柴火做不到了?波兰人开始拾柴火,波政府拾柴火得有许可证禁用俄罗斯能源时,波兰政府跳得有多高,波兰民众如今就有多难过。据多家波兰媒体报道,由于燃料价格高涨,连带着把木材价格也抬了上去,波兰目前已陷入木材荒。十分荒诞的是,波兰气候和环境部续写春天的故事福建龙岩特色产业赋能乡村振兴自今年4月30日开放以来,我们村众彩文创项目每天都迎来上千名游客,天气好的时候人气更旺。福建省龙岩市新罗区西陂街道紫阳村党支部书记村委会主任饶晓静说,今年村里格外热闹,花海水系景观朱玲玲两嫁百亿富豪,可是她也有烦心事,两个儿子至今都没有结婚这个世界没谁是绝对幸福的。很多人认为李嘉诚钱这么多,肯定不会有烦心事。可是李嘉诚也有很多无奈的时候。他14岁父亲就去世了,自己事业成功不久,妻子就去世了,如今他的儿子李泽楷一直不结前有丁启阵力挺删除背影,现有罗崇敏痛批屈原,引发网友热议这段时间以来,想必大家都关注到了关于毒教材毒插画的相关报道。很多网友看完这些插图,无不感到愤慨!因为个个都是神态猥琐萎靡不振,全部都是一种唐氏综合征的病态。更让大家无法接受的是,有戍边英雄肖思远的父母偷偷收麦?真相让人动容河南日报客户端记者李虎成李亚伟6月5日,是卫国戍边英雄肖思远烈士的父母延津县石婆固镇东龙王庙村村民肖胜松刘利霞夫妇家小麦收割的日子。早上8点,延津县人武部政委董兴军便带领人武部干部新疆影像7日浓情端午粽享欢乐六一邂逅端午,成长遇见快乐。孩子们在欢度节日的同时,浸润和体验中华优秀传统文化的魅力。浪花飞溅的龙舟赛,演绎着水上速度与激情,飞龙表演,给游客带来飞一般的动感体验,赛场的骑手一马当iOS16到底升不升,看完这四大升级点再说在本次的WWDC22上,众多iPhone用户们最感兴趣的一定就是全新的iOS16了,这次大版本的更新为用户带来了更丰富的功能迭代,让人看得十分眼馋。下面就让我们一起看一下几大升级点多个国家对拉夫罗夫的飞机关闭了领空多个国家对拉夫罗夫的飞机关闭了领空。俄罗斯外交部官方代表指出,西方再次发起中断与莫斯科的通讯。塔斯社6月6日报道,俄罗斯外交部发言人玛丽亚扎哈罗娃证实,谢尔盖拉夫罗夫部长的飞机被拒
星际迷航可以告诉我们AI聊天机器人的陷阱我不是AI专家,但我看过很多星际迷航。在过去的一周里,事实证明这几乎同样有用。在GoogleBard和带有ChatGPT的MicrosoftBing之间,各大公司都在全力投入人工智Python中使用OS和Pathlib模块的7个常见文件操作两个模块中最常用的函数集以及示例在我们日常的Python项目中,我们经常最终使用一种或多种方法来执行各种操作,如读取列出命名以及创建文件和目录,这两个内置模块OS和Pathlib可不用青回,QQ一直在前天恰逢QQ24岁生日,点开微博就看见好几个热搜,QQ24周年QQ首位用户找到了QQ崩了你的QQ号码是几位数等等。作为顶流企鹅,QQ的生日排面属实够大。从用户话题飞升成社会话题,虽新时代新征程新伟业芯片制造5G通信等成果亮相在蚌埠创新馆感受科技范儿大皖新闻讯手机中的五块玻璃包括高铝盖板玻璃,触控玻璃TFTLCD基板玻璃最重要的是这五块玻璃在我们蚌埠都可以生产出来。2月12日上午,记者跟随采访团来到蚌埠市创新馆,蚌埠创造蚌埠制Facebook版本的ChatGPT先驱被忽视的GalacticaMeta是FacebookWhatsApp和Instagram的拥有者,但它却被人们忽视了。该公司花费数十亿美元开发了各种人工智能,并在2013年让首席执行官马克扎克伯格将成为人工学者提出碳水泥生产方法,为水泥行业减排提供新思路北京日报客户端记者白波通讯员谢起贤针对水泥生产过程中大量碳排放问题,南开大学电子信息与光学工程学院光电子薄膜器件与技术研究所教授罗景山课题组提出了基于电化学的石灰石(CaCO3)转土耳其叙利亚地震,如何利用多光谱成像搜寻被困人员?长三角G60激光联盟导读西班牙马德里理工大学ChristyanCruzUlloa研究团队开发了一种多光谱成像和人工智能相结合的自主机器人系统,该系统能够在坍塌的建筑物和难以进入的灾中汽研安铁成汽车产业绿色变革对我国实现双碳目标具有重要意义鼓励国内相关领域技术专家和标准化团队积极参与国际标准制定,促进中国汽车和零部件企业全面融入国际供应链体系,在国际上发出更多的中国声音。2023年2月9日,在由中国汽车技术研究中心有艾克森重返中超意义重大,双赢结局将唤醒桑巴归化大军现年33周岁的国脚艾克森传来喜讯,在巴西处于待业的他即将与中超成都蓉城签约,这则消息对于中国男足和艾克森本人都算是利好消息。国足目前青黄不接,中超联赛在过去3个赛季的运转也极不尽人房企海外融资重启!什么信号?融资总额较去年春节月增长四成点蓝字关注,不迷路1月,受春节假期影响,房企融资同环比大幅下降。值得注意的是,跟2022年春节月(2月)相比,房企融资总额增长了超四成,其中,发债民企范围较之前有所扩大,海外债在连让乌克兰吃定心丸,德国总理保证欧盟国家将集体释放强烈信号不同于去年的远程演讲,泽连斯基在2023年选择了现场访问,同时指出乌克兰的难处,同时当面向欧洲国家致谢。而欧洲国家也吃这一套,明知道泽连斯基的目的不单纯,还是接连入坑。在英国首相确