第11周做業

一、詳細敘述ansible的工做原理python

在ansible中定義主機清單
ansible與各主機採用ssh-key免密鑰登錄
ansible經過命令、模塊和playbook,將執行的命令轉換爲python語句,經過ssh協議傳輸到指定的客戶端上,使用python解釋器執行
執行完成後,客戶端返回成功或失敗代碼,返回給ansible服務器
服務器和客戶端刪除執行代碼

 

二、使用ansible在多臺機器上添加用戶react

須要如今/etc/ansible/hosts中定義主機清單,ip或者主機名均可以,一個ip能夠屬於多個主機
[web]
10.0.0.201
10.0.0.202
[db]
10.0.0.203
[lamp]
10.0.0.201
10.0.0.203
可使用user模塊
ansieble all -m user -a "name=a1"
也可使用shell模塊
ansible all -m shell -a "useradd a1"
ansible lamp -m shell -a "useradd apache"

三、用ansible-playbook編譯安裝nginx服務nginx

先定義主機清單
而後編輯playbook
vim nginx.yml

- hosts: web
  remote_user: root
  tasks:
    - name: copy nginx source code
      copy: src=/src/nginx-1.15.12.tar.gz dest=/src/nginx-1.15.12.tar.gz
    - name: install development tools
      yum: 
         name: ['@Development tools', 'openssl-devel', 'pcre-devel']
    - name: install nginx source code
      shell: cd /src ; tar xf nginx-1.15.12.tar.gz ; cd nginx-1.15.12 ; ./configure;make && make install 
    - name: start nginx service
      shell: /usr/local/nginx/sbin/nginx

執行playbook
ansible-playbook nginx.yml

四、描述域名劫持的解決方法web

修改爲可靠的dns服務器
    /etc/resolv.conf
    若是網卡配置中沒有PEERDNS=no,那麼網卡中指定的dns優先級高於resolv.conf
修改/etc/hosts,綁定ip和域名

五、描述dns的遞歸查詢shell

1.客戶端向本機設置的本地DNS服務器發出DNS域名查詢請求
2.本地DNS服務器接收到請求後,查詢本機的緩存,若是有這條記錄,則返回給客戶端,若是沒有這條記錄,則本地DNS服務器將域名查詢請求發送給根域名服務器
3.根域名服務器接收到請求後,把所查詢獲得的所請求的DNS域名中的一級域名的地址返回給本地DNS服務器
4.本地DNS服務器根據根服務器返回的一級域名服務器地址,向一級域名服務器發送前面同樣的域名查詢請求
5.對應的一級域名服務器收到域名查詢請求後,首先查詢本機的緩存,若是有記錄則直接返回給本地DNS服務器,再由本地服務器返回給客戶端,若是沒有,則返回二級域名的地址
6.本地服務器繼續按照前面的方法向三級四級域名發送域名查詢請求,直到最終的對應域名所在的權威服務器返回最終的查詢記錄給本地服務器,本地服務器再返回結果給客戶端,同時本地服務器會緩存這條記錄

六、DNS工做原理詳細解析數據庫

 

DNS是應用層協議,事實上他是爲其餘應用層協議工做的,包括不限於HTTP和SMTP以及FTP,用於將用戶提供的主機名解析爲ip地址。
具體過程以下:

1.用戶主機上運行着DNS的客戶端,就是咱們的PC機或者手機客戶端運行着DNS客戶端了
2.瀏覽器將接收到的url中抽取出域名字段,就是訪問的主機名,好比http://www.baidu.com/, 並將這個主機名傳送給DNS應用的客戶端
3.DNS客戶機端向DNS服務器端發送一份查詢報文,報文中包含着要訪問的主機名字段(中間包括一些列緩存查詢以及分佈式DNS集羣的工做)
4.該DNS客戶機最終會收到一份回答報文,其中包含有該主機名對應的IP地址
5.一旦該瀏覽器收到來自DNS的IP地址,就能夠向該IP地址定位的HTTP服務器發起TCP鏈接

七、dns區域轉發與全局轉發區別與實現方法apache

注意:被轉發的服務器須要可以爲請求者作遞歸,不然轉發請求不予進行
    (1) 全局轉發: 對非本機所負責解析區域的請求,全轉發給指定的服務器
        Options {
        forward first|only;                                    
        # only是隻轉發。first是轉發,若是轉發服務器也找不到記錄,將繼續到根上查詢
        forwarders { ip;};
        };
    (2) 特定區域轉發:僅轉發對特定的區域的請求,比全局轉發優先級高
        zone "ZONE_NAME" IN {
        type forward;
        forward first|only;
        forwarders { ip;};
        };
    注意:關閉dnssec功能
        dnssec-enable no;
        dnssec-validation no;    

八、實現智能DNSvim

1、建立不一樣的區域文件
    cat /var/named/mage.com.zone.bj
        www A 6.6.6.6
        
    cat /var/named/mage.com.zone.sh
        www A 7.7.7.7
        
    cat /var/named/mage.com.zone.sz
        www A 8.8.8.8
        
2、使用acl把多個地址歸併成一個集合,
    格式:
    acl acl_name {
        ip;
        net/prelen;
        ……
    };
    bind中ACL
        bind有四個內置的acl:
            none 沒有一個主機
            any  任意主機
            localhost  本機
            localnet  本機的IP同掩碼運算後獲得的網絡地址
        注意:只能先定義後使用;所以通常定義在配置文件中,處於options的前面
    
    訪問控制的指令:
        allow-query {}: 容許查詢的主機;白名單
        allow-transfer {}:容許區域傳送的主機;白名單
        allow-recursion {}: 容許遞歸的主機,建議全局使用
        allow-update {}: 容許更新區域數據庫中的內容
    
    cat /etc/named.conf
        acl beijing{
            10.0.0.0/24;
        };
        acl shanghai {
            172.16.1.0/24;
        };
        acl shenzhen {
            10.0.10.0/24;
        };
        acl any{
            any;
        };
        # view也在主配置文件中
        view view_beijing{
            match-clinets {beijing;};
            include "/var/named.rfc1912.zones"
        };
        
        複製並修改/var/named.rfc1912.zones.shanghai
        view view_shanghai{
            match-clinets {shanghai;};
            include "/var/named.rfc1912.zones.shanghai"
        };
        
        或者
        
        view view_shanghai {
            match-clients {shanghai;};
            zone "mage.com" IN {
                type master;
                file "/var/named/mage.com.zone.sh";
            };
        };
        
        view view_shanghai {
            match-clients {shenzhen;};
            zone "mage.com" IN {
                type master;
                file "/var/named/mage.com.zone.sz";
            };
        };
        
        zone "." IN {
            type hint;
            file "named.ca";
        };
        # 這段內容須要剪切到/var/named.rfc1912.zones中
        include "/var/named.rfc1912.zones    # 註釋掉
        
3、bind view實現智能dns
    view:視圖:實現智能DNS:
        一個bind服務器可定義多個view,每一個view中可定義一個或多個zone
        每一個view用來匹配一組客戶端
        多個view內可能須要對同一個區域進行解析,但使用不一樣的區域解析庫文件
    注意:
        (1) 一旦啓用了view,全部的zone都只能定義在view中
        (2) 僅在容許遞歸請求的客戶端所在view中定義根區域
        (3) 客戶端請求到達時,是自上而下檢查每一個view所服務的客戶端列表
    格式:
        view VIEW_NAME {
            match-clients { testacl; };
            zone 「magedu.com」 {
                type master;
                file 「magedu.com.zone」;  };
            include 「/etc/named.rfc1912.zones」;
        };
相關文章
相關標籤/搜索