Linux 自動化部署DNS伺服器

来源:https://www.cnblogs.com/yuzly/archive/2019/03/24/10581390.html
-Advertisement-
Play Games

Linux 自動化部署DNS伺服器 1.首先配置主DNS伺服器的IP地址,DNS地址一個寫主dns的IP地址,一個寫從dns的地址,這裡也可以不寫,在測試的時候在/etc/resolv.conf中添加記錄。 2.配置從dns的IP地址 3. 運行腳本,選擇1,部署主DNS伺服器 4.運行完腳本之後, ...


Linux 自動化部署DNS伺服器

1.首先配置主DNS伺服器的IP地址,DNS地址一個寫主dns的IP地址,一個寫從dns的地址,這裡也可以不寫,在測試的時候在/etc/resolv.conf中添加記錄。 

2.配置從dns的IP地址

3. 運行腳本,選擇1,部署主DNS伺服器   

4.運行完腳本之後,主DNS就部署完成了,查看配置文件 /etc/named.conf 

5. 查看區域文件 區域文件在 /var/named/  

6.本地測試主DNS伺服器是否部署成功

 

7. 在從DNS伺服器上運行腳本,選擇2,部署從DNS服務

8.查看 

9.查看 /var/named/slaves/目錄下,可以看到生成兩個文件,說明從dns配置成功,從主dns獲得區域文件

10.在另一個客戶端測試,在/etc/resolv.conf添加如下兩條記錄

11. 測試,下圖可以看到主、從DNS都正常 

 

源碼如下:  

#!/bin/bash
#該腳本用於自動化部署主DNS伺服器與從DNS伺服器
#作者:雨中落葉
#博客:https://www.cnblogs.com/yuzly/
echo "****************************
1.部署主dns伺服器
2.部署從dns伺服器
****************************"
read -p "請輸入部署選項:" Num
case $Num in
1)
  #關閉防火牆,避免影響實驗
  service iptables stop &>/dev/null
  setenforce 0 &>/dev/null
  named="/etc/named.conf"
  #定義函數
  alterDNS(){
    #配置主文件
    rm -fr $named
    touch $named
    #獲得本機IP
    ETH=$(ifconfig |grep "^eth" |awk '{print $1}')
    lIP=$(ifconfig $ETH |grep "inet addr"|awk  '{print $2}'|awk -F: '{print $2}')
    read -p "請輸入你要創建的正向區功能變數名稱:" AreaName
    read -p "請輸入從DNS伺服器的IP地址:" slaveIP
    fan=$(echo $lIP |awk -F. '{print $3"."$2"."$1}')
    cat >>$named<<OK
options {
        listen-on port 53 { $lIP; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        allow-query     { any; };
};
zone "." IN {
        type hint;
        file "named.ca";
};
zone "$AreaName" IN {
        type master;
        file "$AreaName.zone";
        allow-transfer { $slaveIP; };
};
zone "$fan.in-addr.arpa" IN {
        type master;
        file "$fan.in-addr.arpa.zone";
        allow-transfer { $slaveIP; };
};
OK
#配置正向解析文件
  touch /var/named/$AreaName.zone
cat >>/var/named/$AreaName.zone<<OK
\$TTL 86400
@       IN SOA  $AreaName. admin.$AreaName. (
                                        2019032211       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@    IN    NS    ns1.$AreaName.
    IN    NS    ns2.$AreaName.
    IN    MX 10    mail.$AreaName.
ns1    IN    A    $lIP
ns2    IN    A    $slaveIP
www    IN    A    $lIP
mail    IN    A    $lIP
news    IN    CNAME    www.$AreaName.
OK
#配置反向解析文件
touch /var/named/$fan.in-addr.arpa.zone
fourthlIP=$(echo $lIP |awk -F. '{print $4}')
fourthslaveIP=$(echo $slaveIP |awk -F. '{print $4}')
cat >>/var/named/$fan.in-addr.arpa.zone<<OK
\$TTL 86400
@       IN SOA  $AreaName. admin.$AreaName. (
                                        2019032211       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@           IN      NS      ns1.$AreaName.
            IN      NS      ns2.$AreaName.
$fourthlIP      IN      PTR     ns1.$AreaName.
$fourthslaveIP   IN      PTR     ns2.$AreaName.
$fourthlIP         IN      PTR     www.$AreaName. 
$fourthlIP        IN      PTR     mail.$AreaName.
$fourthlIP        IN      PTR     news.$AreaName.   
OK
}
if [ ! -f $named ]
 then
    echo "當前電腦沒有安裝DNS服務,正在安裝,請稍等....."
    mount /dev/sr0 /mnt &>/dev/null
    #搭建本地yum倉庫
    cd /etc/yum.repos.d
    cat >>yuzly.repo<<OK
[yuzly]
name=yuzly
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
OK
    yum install bind -y &>/dev/null
    #調用函數
    alterDNS
    service named start &>/dev/null
 else
    alterDNS
    service named start &>/dev/null
 fi
;;
2)
    #關閉防火牆
    service iptables stop &>/dev/null
    setenforce 0 &>/dev/null
    #修改配置文件
    #獲得本機IP
    ETH=$(ifconfig |grep "^eth" |awk '{print $1}')
    lIP=$(ifconfig $ETH |grep "inet addr"|awk  '{print $2}'|awk -F: '{print $2}')
    
    named="/etc/named.conf"
    read -p "請輸入主伺服器創建的正向區功能變數名稱:" AreaName
    read -p "請輸入主DNS伺服器的IP地址:" IP
    fan=$(echo $IP |awk -F. '{print $3"."$2"."$1}')    
    setArea(){
    cat >>$named<<OK  
options {
        listen-on port 53 { $lIP; };
        directory       "/var/named";
        allow-query     { any; };
};
zone "$AreaName" IN {
        type slave;
        masters { $IP; };
        file "slaves/$AreaName.zone";
};
zone "$fan.in-addr.arpa" IN {
        type slave;
        masters { $IP; };
        file "slaves/$fan.in-addr.arpa.zone";
};
OK
    service  named start &>/dev/null
}
    if [ ! -f $named ]
    then
       echo "當前電腦沒有安裝DNS服務,正在安裝,請稍等....."
       mount /dev/sr0 /mnt &>/dev/null
       #搭建本地yum倉庫
       cd /etc/yum.repos.d
       cat >>yuzly.repo<<OK
[yuzly]
name=yuzly
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
OK
       yum install bind -y &>/dev/null
       rm -fr $named
       touch $named
       #調用函數
       setArea 
   else
      rm -fr $named
      touch $named
      setArea    
  fi
;;
*)
   echo "請輸入正確的數字!"
;;
esac

 

 

-------------------------------------------------------------------------------------------------------

 Linux DNS服務配置:https://www.cnblogs.com/yuzly/p/10581688.html 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 常用控制項樣式: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> ...
  • 看了老師的教程後,自己一點感悟記錄下來: 1.在頁面提交後,動態生成的控制項會丟失, 但如果生成控制項的代碼在pageload中,就可以,原理是每次生成頁面都執行生成. 2.動態按件或頁面原來控制項, 在頁面往返重新生成時, 都有一個特點.就是控制項裡面的值和狀態會保留下來. 如: 在DorpDownLis ...
  • 項目發佈後 在本地發佈可以運行 在伺服器就會出現這種錯誤 在網上也查找了各種資料 解決方案 都沒有解決 因為我用的C# 首先在 Webconfig配置文件中的 system.web中加入 <customErrors mode="Off"/> 當你在出錯的時候再刷新一下頁面 就會出現 具體的錯誤信息 ...
  • 首先打開vs軟體新建項目創建web中的mvc項目再右擊解決方案創建類庫項目分別創建DAL層和BLL層再把DAL層和BLL層的類重命名在mvc項目中的Models文件夾創建model類在DAL創建ADO.NET實體數據模型後把DAL層中App.Config文件中的鏈接字元串複製到mvc項目的Web.c ...
  • 首先打開vs軟體新建項目創建web中的mvc項目再右擊解決方案創建類庫項目分別創建DAL層和BLL層再把DAL層和BLL層的類重命名在mvc項目中的Models文件夾創建model類在DAL創建ADO.NET實體數據模型後把DAL層中App.Config文件中的鏈接字元串複製到mvc項目的Web.c ...
  • 之前因為學習TensorFlow,所以在自己的Ubuntu上安裝了cuda,cudnn以及Nvidia驅動。但可能是由於自己經常不註重正常關閉自己的Ubuntu,這就導致了一個問題: 某天在查看自己的顯卡信息時,輸入 結果報錯 黑人問好臉???自己之前明明安裝好了Nvidia驅動的呀,怎麼現在就報錯 ...
  • 個人動態功能變數名稱管理系統。Personal DDNS. 來源: "https://www.cnblogs.com/osnosn/p/10591431.html" 來自 "osnosn的博客" 簡單又實用的動態功能變數名稱管理系統, 自建動態功能變數名稱管理系統 使用 bind9 + php + mysql , 創建個人 ...
  • 導語:為什麼要學習linux?學到什麼程度? 大數據技術是運行在集群,且是linux操作系統這樣的集群當中的,所以學習大數據之前,你得先掌握了linux的簡單操作,沒錯,我們不是專門的做linux工作,所以只要學會簡單操作,會用了就行 學習階段不可能專門買四五台伺服器,成本太高了,所以我們就用虛擬化 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...