1. <dd id="erndk"></dd>
                1. linux_5

                  互聯網 2022/5/2 7:16:14

                  1、簡述DNS服務器原理,并搭建主-輔服務器。 DNS:(Domain Name System,域名系統),應用層協議,是互聯網的一項服務。它作為將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網,基于C/S架構,服務器端:53/udp, 53/tcp 根域: 全球根服務器節點只有…

                  1、簡述DNS服務器原理,并搭建主-輔服務器。

                  DNS:(Domain Name System,域名系統),應用層協議,是互聯網的一項服務。它作為將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網,基于C/S架構,服務器端:53/udp, 53/tcp

                  根域: 全球根服務器節點只有13個,10個在美國,1個荷蘭,1個瑞典,1個日本一級域名:Top Level Domain: tld三類:組織域、國家域(.cn, .ca, .hk, .tw)、反向域arpa通用頂級域名:com, edu, mil, gov, net, org, int

                  二級域名:magedu.com

                  三級域名:blog.magedu.com

                  最多可達到127級域名

                  如:www.google.com. 這個域名,分解后含義如下:

                  . #表示根域.com #表示頂級域google.com #表示二級域www #表示主機名

                  DNS服務器規則(1) 每一個主機都知道根域在哪里;(2) 上級必須知道下級;(3) 下級不知道上級;(4) 查詢兩段式遞歸查詢和迭代查詢;(5) 根域不迭代(根全球有13臺a-m.root-servers.net);(6) 頂級域不迭代;(7) 二級域服務器可以只提供權威查詢不提供迭代或轉發;

                  DNS的工作模式:DNS查詢以各種不同的方式進行解析,客戶機可通過使用從以前查詢獲得的緩存信息就地應答查詢,DNS服務器也可以使用其自身的資源記錄緩存來應答查詢。但更多是使用遞歸查詢和迭代查詢兩種方式。

                  遞歸查詢:DNS服務器收到一個域名解析請求時,如果所要檢索的資源記錄不在本地,DNS服務器將和自己的上一層服務器交互,獲得最終的答案,并將其返回給客戶

                  迭代查詢:DNS服務器收到解析請求,首先在本地的數據庫中查找是否有相應的資源記錄,如果沒有,則向客戶提供另外一個DNS服務器的地址,客戶負責把解析請求發送給新的DNS服務器地址

                  完整的DNS查詢請求經過的流程

                  如:訪問 www.google.com(1)/etc/hosts:查看本地hosts文件有沒有記錄獲取應IP地址,如果沒有,進行下一步(2)/etc/resolv.conf:查詢DNS服務器,如8.8.8.8。若此DNS服務器本地有記錄(如A記錄)或緩存記錄,則直接從本地中獲取對應的IP,如果沒有,進行下一步(3)根DNS:通過8.8.8.8到根DNS服務器(.)去查詢,返回.com主機的DNS服務器IP地址(4).com:通過.com的DNS服務器去查詢,返回google.com主機的DNS服務器IP地址(5)google.com. :通過左側的DNS服務器去查詢,返回www.google.com主機的IP地址(6)訪問 www.google.com:8.8.8.8這臺DNS服務器收到信息后會先把這條記錄在本地,然后把查詢數據結果返回客戶端

                  在這個查詢過程中,從客戶端到本地DNS服務器是屬于遞歸查詢,而DNS服務器之間就是的交互查詢就是迭代查詢。

                  DNS工作原理:1、當在瀏覽器中輸入URL時,瀏覽器會先檢查自己的緩存是否有域名IP的映射關系,有則直接使用IP進行通信2、如瀏覽器沒有緩存,則操作系統檢查本地hosts文件是否有域名IP的映射關系,有則使用IP進行通信3、如果hosts沒有這個域名的映射,則查找本地DNS解析器緩存是否有映射關系,有則直接返回完成域名解析4、如果還未找到映射關系,首先會找TCP/IP參數中設置的首選DNS服務器,也就是本地DNS服務器,如果服務器已緩存了映射關系,則使用這個IP地址映射返回完成域名解析,此時解析不具有權威性5、如果本地DNS服務器緩存已經失效,進行遞歸查詢。

                  2、搭建并實現智能DNS。

                  前提準備
                  關閉SElinux
                  關閉firewalld防火墻
                  時間同步
                  ?
                  需要五臺主機
                  DNS服務器1:配置eth0和eth1,10.0.0.131、192.168.1.130,其中eth0為NAT模式,eth1為橋接模式。
                  web服務器1:10.0.0.132    NAT模式
                  web服務器2:192.168.1.131 橋接模式 
                  DNS客戶端1:10.0.0.133    NAT模式
                  DNS客戶端2:192.168.1.132 橋接模式
                  ?
                  #DNS服務器1 配置   
                  bind服務器包、bind-utils(測試包可以不裝)
                  [root@centos7-01 ~]# yum  -y install bind bind-utils
                  #啟動bind 并設置開機啟動(查看啟動狀態 systemctl status named.service)
                  [root@centos7-01 ~]# systemctl enable --now named.service
                  [root@centos7-01 ~]# vim /etc/named.conf 
                  #更改bind配置,注釋掉以下兩行,開放訪問權限
                  #listen-on port 53 { 127.0.0.1; };
                  #allow-query     { localhost; };
                  #重新加載配置
                  [root@centos7-01 ~]# rndc reload
                  #配置bind實現判斷訪問來源。
                  vim /etc/named.conf
                  #判斷網段acl,在文件最前面加下面行
                  acl beijingnet {
                    10.0.0.0/24;
                  };
                  acl shanghainet {
                    192.168.1.0/24;
                  };
                  ?
                  將以下內容刪除或注釋掉
                  zone "." IN {
                  type hint;
                  file "named.ca";
                  };
                  ?
                  # 創建view,在文件下面加
                  view beijingview {
                  match-clients { beijingnet;};
                  include "/etc/named.rfc1912.zones.bj";
                  };
                  view shanghaiview {
                  match-clients { shanghainet;};
                  include "/etc/named.rfc1912.zones.sh";
                  };
                  ?
                  #include "/etc/named.rfc1912.zones";原有的刪除或注釋掉
                  include "/etc/named.root.key";
                  ?
                  #配置named.rfc1912.zones.bj
                  vim /etc/named.rfc1912.zones.bj
                  zone "." IN {
                  type hint;
                  file "named.ca";
                  };
                  zone "magedu.org" {
                  type master;
                  file "magedu.org.zone.bj";
                  };  
                  ?
                  #配置named.rfc1912.zones.sh
                  vim /etc/named.rfc1912.zones.sh
                  zone "." IN {
                  type hint;
                  file "named.ca";
                  };
                  zone "magedu.org" {
                  type master; 
                  file "magedu.org.zone.sh"; 
                  };  
                  ?
                  #配置magedu.org.zone.bj,master A 10.0.0.131為本機,www    A 10.0.0.132為web服務器
                  vim /var/named/magedu.org.zone.bj
                  $TTL 1D
                  @ IN SOA master admin.magedu.org. (
                  ; serial
                          1D ; refresh
                          1H ; retry
                          1W ; expire
                          3H ) ; minimum
                          NS master
                  master A 10.0.0.131        
                  www    A 10.0.0.132
                  ?
                  #配置magedu.org.zone.sh,master A 192.168.1.130為本機,www    A 192.168.1.131為web服務器
                  vim /var/named/magedu.org.zone.sh
                  $TTL 1D
                  @ IN SOA master admin.magedu.org. (
                  ; serial
                          1D ; refresh
                          1H ; retry
                          1W ; expire
                          3H ) ; minimum
                          NS master
                  master A 192.168.1.130
                  www    A 192.168.1.131
                  #重新加載配置,如果報錯rndc: connect failed: 127.0.0.1#953: connection refused 連接拒絕錯誤,需要進行文件授權
                  [root@centos7-01 ~]# chmod 640 /etc/rndc.key
                  [root@centos7-01 ~]# rndc reload
                  server reload successful
                  #配置web服務器1:10.0.0.132、web服務器2:192.168.1.131
                  安裝httpd,注意最小化安裝有時出現Existing lock /var/run/yum.pid: another copy is running as pid的錯誤,可以運行一下代碼恢復后可正常安裝。
                  [root@centos7-01 ~]# rm -f /var/run/yum.pid
                  [root@centos7-01 ~]# /sbin/service yum-updatesd restart
                  #安裝httpd
                  yum -y install httpd
                  #啟動程序并開機自啟
                  systemctl enable --now httpd
                  #修改以下頁面訪問內容以便區分兩個web服務器
                  #web服務器1:
                  echo www.magedu.org in Beijing > /var/www/html/index.html
                  #web服務器2:
                  echo www.magedu.org in Shanghai > /var/www/html/index.html
                  #配置客戶端1:10.0.0.133 DNS地址為DNS服務器1 eth0的IP、客戶端2:192.168.1.132的DNS地址為DNS服務器1 eth1的IP
                  [root@centos7-03 ~]# service network restart
                  #查看DNS是否生效。
                  #DNS客戶端1
                  [root@centos7-03 etc]# cat  resolv.conf 
                  # Generated by NetworkManager
                  nameserver 10.0.0.131
                  #DNS客戶端2
                  [root@centos7-05 ~]# cat  /etc/resolv.conf 
                  # Generated by NetworkManager
                  nameserver 192.168.1.130
                  #DNS客戶端1訪問www.magedu.org進行測試,可顯示web服務器1的頁面。
                  [root@centos7-04 ~]# curl www.magedu.org
                  www.magedu.org in Beijing
                  #DNS客戶端2訪問www.magedu.org進行測試,可顯示web服務器2的頁面。
                  [root@centos7-05 ~]# curl www.magedu.org
                  www.magedu.org in Shanghai
                  

                  3、使用iptable實現: 放行ssh,telnet, ftp, web服務80端口,其他端口服務全部拒絕

                  前提準備關閉firewalld防火墻

                  #查看當前狀態iptables -nvL,未配置任何規則
                  [root@centos7-02 etc]# ss -ntl
                  Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
                   pkts bytes target     prot opt in     out     source               destination         
                  ?
                  Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
                   pkts bytes target     prot opt in     out     source               destination         
                  ?
                  Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
                   pkts bytes target     prot opt in     out     source               destination   
                  #放行ssh,telnet, ftp, web服務80端口
                  [root@centos7-02 etc]# iptables -A INPUT -p tcp -m multiport --dport 21,22,23,80 -j ACCEPT
                  #拒絕全部端口服務,由于規則從上至下進行規則判斷,ssh,telnet, ftp, web滿足條件會放行,不滿足第一條件的到第二條拒絕全部端口
                  [root@centos7-02 etc]# iptables -A INPUT -j REJECT
                  #查看當前狀態iptables -nvL
                  [root@centos7-02 etc]# iptables -nvL
                  Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
                   pkts bytes target     prot opt in     out     source               destination         
                  ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 21,22,23,80
                  REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
                  ?
                  Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
                   pkts bytes target     prot opt in     out     source               destination         
                  ?
                  Chain OUTPUT (policy ACCEPT 10 packets, 1484 bytes)
                   pkts bytes target     prot opt in     out     source               destination  
                   
                  #ssh測試鏈接正常
                  [root@centos7-04 ~]# ssh 10.0.0.132
                  The authenticity of host '10.0.0.132 (10.0.0.132)' can't be established.
                  ECDSA key fingerprint is SHA256:kX81UzGfABKKtw1oZXc3jM+U+IRFd++YoFuKa26b6UA.
                  ECDSA key fingerprint is MD5:d3:47:82:78:81:d9:bf:ea:da:8c:14:62:84:a5:d9:89.
                  Are you sure you want to continue connecting (yes/no)? yes
                  Warning: Permanently added '10.0.0.132' (ECDSA) to the list of known hosts.
                  root@10.0.0.132's password: 
                  Last login: Sun May  1 15:40:27 2022 from 10.0.0.1
                  [root@centos7-02 ~]# 
                  #web測試鏈接正常
                  [root@centos7-04 ~]# curl 10.0.0.132
                  www.magedu.org in Beijing
                  

                  4、NAT原理總結

                  NAT的實現分為下面類型:

                  SNAT:source NAT ,支持POSTROUTING, INPUT,讓本地網絡中的主機通過某一特定地址訪問

                  外部網絡,實現地址偽裝,請求報文:修改源IP

                  DNAT:destination NAT 支持PREROUTING , OUTPUT,把本地網絡中的主機上的某服務開放給外

                  部網絡訪問(發布服務和端口映射),但隱藏真實IP,請求報文:修改目標IP

                  PNAT: port nat,端口和IP都進行修改

                  1. PC訪問 www.xxx.com,由于存在域名會通過DNS服務器解析域名從而獲得公網IP地址。

                  2. PC收到此網站的公網IP地址后,封裝數據。源IP為PC的IP地址;目的地址為解析獲得的公網IP地址;目的端口號為80。并且將此報文發送給網關設備, 網關設備收到數據報文后通過路由關系發送到出口設備。

                  3. 出口設備配置有NAT轉換關系,將報文中的源IP地址轉換為公網IP地址。重新封裝數據報文后發出。(這一步為SNAT)

                  4. 數據報文到達公有網絡上,由于目的IP地址為公網IP地址,通過公網路由關系轉發到網站端(服務端)。

                  5. 服務端收到報文后,檢查到目的地址為公網IP地址。通過本端配置的NAT映射關系,與公網IP地址相匹配的映射關系中尋找私網IP地址。找到映射關系后,將目的地址轉換為私網IP地址(這一步為DNAT)。在通過內部網絡路由關系將數據報文轉發至相應的服務器。

                  6. 服務器將收到的報文通過相關計算,重新封裝報文,發送給用戶PC。原理不變,經過多次數據交互。最后用戶PC接收到數據報文,網站就被打開了。

                  5、iptables實現SNAT和DNAT,并對規則持久保存。

                  實現SNAT和DNAT都需要開啟內核數據轉發功能

                  [root@centos7-04 ~]# cat /etc/sysctl.conf

                  net.ipv4.ip_forward=1

                  DNAT:nat表的target,適用于端口映射,即可重定向到本機,也可以支持重定向至不同主機的不同端口,但不支持多目標,即不支持負載均衡功能

                  DNAT選項:

                  --to-destination ipaddr[-ipaddr]]

                  DNAT 格式:

                  iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --todestination InterSeverIP[:PORT]

                  范例:

                  iptables -t nat -A PREROUTING -d 192.168.126.83 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.84:80

                  DNAT使用方法DNAT:nat表的target,適用于端口映射,即可重定向到本機,也可以支持重定向至不同主機的不同端口,但不支持多目標,即不支持負載均衡功能

                  DNAT選項:

                  --to-destination ipaddr[-ipaddr]]

                  DNAT 格式:

                  iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --todestination InterSeverIP[:PORT]

                  范例:

                  iptables -t nat -A PREROUTING -d 192.168.126.83 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.84:80iptables規則持久保存:CentOS 7,8

                  iptables-save > /PATH/TO/SOME_RULES_FILE

                  CentOS 6

                  #將規則覆蓋保存至/etc/sysconfig/iptables文件中

                  service iptables save

                   

                  加載規則1.CentOS 7,8 重新載入預存規則文件中規則:

                  iptables-restore < /PATH/FROM/SOME_RULES_FILE

                  iptables-restore選項

                  -n, --noflush:不清除原有規則

                  -t, --test:僅分析生成規則集,但不提交

                  2.CentOS 6:

                  service iptables restart #會自動從/etc/sysconfig/iptables 重新載入規則

                  開機自動重載規則1.用腳本保存各iptables命令;讓此腳本開機后自動運行

                  /etc/rc.d/rc.local文件中添加腳本路徑 /PATH/TO/SOME_SCRIPT_FILE

                  用規則文件保存各規則,開機時自動載入此規則文件中的規則

                  在/etc/rc.d/rc.local文件添加

                  iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE

                  2.定義Unit File, CentOS 7,8 可以安裝 iptables-services 實現iptables.service

                  范例: CentOS 7,8 使用 iptables-services

                  [root@centos8 ~]#yum -y install iptables-services

                  [root@centos8 ~]#cp /etc/sysconfig/iptables{,.bak}

                  #保存現在的規則到文件中方法1

                  [root@centos8 ~]#/usr/libexec/iptables/iptables.init save

                  #保存現在的規則到文件中方法2

                  iptables-save > /etc/sysconfig/iptables

                  #開機啟動

                  [root@centos8 ~]#systemctl enable iptables.service

                  ?

                   

                  隨時隨地學軟件編程-關注百度小程序和微信小程序
                  關于找一找教程網

                  本站文章僅代表作者觀點,不代表本站立場,所有文章非營利性免費分享。
                  本站提供了軟件編程、網站開發技術、服務器運維、人工智能等等IT技術文章,希望廣大程序員努力學習,讓我們用科技改變世界。
                  [linux_5]http://www.yachtsalesaustralia.com/tech/detail-318700.html

                  贊(0)
                  關注微信小程序
                  程序員編程王-隨時隨地學編程

                  掃描二維碼或查找【程序員編程王】

                  可以隨時隨地學編程啦!

                  技術文章導航 更多>
                  国产在线拍揄自揄视频菠萝

                        1. <dd id="erndk"></dd>