linux_5
互聯網 2022/5/2 7:16:14
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都進行修改
-
PC訪問 www.xxx.com,由于存在域名會通過DNS服務器解析域名從而獲得公網IP地址。
-
PC收到此網站的公網IP地址后,封裝數據。源IP為PC的IP地址;目的地址為解析獲得的公網IP地址;目的端口號為80。并且將此報文發送給網關設備, 網關設備收到數據報文后通過路由關系發送到出口設備。
-
出口設備配置有NAT轉換關系,將報文中的源IP地址轉換為公網IP地址。重新封裝數據報文后發出。(這一步為SNAT)
-
數據報文到達公有網絡上,由于目的IP地址為公網IP地址,通過公網路由關系轉發到網站端(服務端)。
-
服務端收到報文后,檢查到目的地址為公網IP地址。通過本端配置的NAT映射關系,與公網IP地址相匹配的映射關系中尋找私網IP地址。找到映射關系后,將目的地址轉換為私網IP地址(這一步為DNAT)。在通過內部網絡路由關系將數據報文轉發至相應的服務器。
-
服務器將收到的報文通過相關計算,重新封裝報文,發送給用戶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
- 2022-05-19Linux設置開機自啟動腳本
- 2022-05-19linux及windows下查看進程及端口占用
- 2022-05-19linux 下搭建svn 并且使用鉤子hook更新到指定目錄
- 2022-05-19linux中的重定向符和管道(<,><<,>>,|)
- 2022-05-19Linux環境下Bochs軟件安裝以及可能遇到的問題
- 2022-05-19Linux環境下Python編程注意事項
- 2022-05-19linux 服務器后臺不中斷運行jar
- 2022-05-19linux安裝datax +datax-web踩坑總結
- 2022-05-19linux驅動學習筆記(四)內核配置與編譯
- 2022-05-19Jenkins-Windows環境修改主目錄路徑