The Ninth Week (Lucklyzpp)
The Ninth Week (Lucklyzpp)
1、簡述DNS伺服器原理,並搭建主-輔伺服器。
[10:36:39 root@lucklyzpp ~]#vim /etc/named.conf options { //listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; // allow-query { localhost; }; allow-transfer { 192.168.33.129; }; [10:41:43 root@lucklyzpp ~]#vim /etc/named.rfc1912.zones zone "lucklyzpp.org" { type master; file "lucklyzpp.org"; }; [10:42:05 root@lucklyzpp ~]#ls /var/named/ data dynamic named.ca named.empty named.localhost named.loopback slaves [10:42:50 root@lucklyzpp ~]#cp -p /var/named/named.localhost /var/named/lucklyzpp.org.zone [10:44:49 root@lucklyzpp ~]#vim /var/named/lucklyzpp.org.zone
輔—伺服器
[05:55:34 root@lcuklyzpp ~]#vim /etc/named.conf options {//listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; // allow-query { localhost; }; allow-transfer { none; }; [05:57:38 root@lcuklyzpp ~]#vim /etc/named.rfc1912.zones zone "lucklyzpp.org" { type slave; masters { 192.168.33.130; }; file "slaves/lucklyzpp.org.slave"; }; [11:42:48 root@lcuklyzpp ~]#systemctl start named
2、搭建並實現智慧DNS。
3 智慧DNS相關技術
1 bind中ACL
ACL:把一個或多個地址歸併為一個集合,並通過一個統一的名稱呼叫
注意:只能先定義後使用;因此一般定義在配置檔案中,處於options的前面
2 bind有四個內建的acl
none 沒有一個主機
any 任意主機
localhost 本機
localnet 本機的IP同掩碼運算後得到的網路地址
3.訪問控制的指令
allow-query {}: 允許查詢的主機;白名單
allow-transfer {}:允許區域傳送的主機;白名單
allow-recursion {}: 允許遞迴的主機,建議全域性使用
allow-update {}: 允許更新區域資料庫中的內容
View:檢視,將ACL和區域資料庫實現對應關係,以實現智慧DNS
一個bind伺服器可定義多個view,每個view中可定義一個或多個zone
每個view用來匹配一組客戶端
多個view內可能需要對同一個區域進行解析,但使用不同的區域解析庫檔案
注意:
一旦啟用了view,所有的zone都只能定義在view中
僅在允許遞迴請求的客戶端所在view中定義根區域
客戶端請求到達時,是自上而下檢查每個view所服務的客戶端列表
options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; // allow-query { localhost; }; allow-transfer { 192.168.33.129; }; options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; // allow-query { localhost; }; allow-transfer { 192.168.33.129; }; recursion yes; dnssec-enable yes; dnssec-validation yes; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */ include "/etc/crypto-policies/back-ends/bind.config"; }; acl beijingnet { 10.0.0.0/24; }; acl shanghainet { 192.168.0.0/24; }; acl othernet { any; }; view beijingview { match-clients { beijingnet;}; include "/etc/named.rfc1912.zones.bj"; }; view shanghaiview { match-clients { shanghainet;}; include "/etc/named.rfc1912.zones.sh"; }; view otherview { match-clients { othernet;}; include "/etc/named.rfc1912.zones.other"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
區域配置
vim /etc/named.rfc1912.zones.bj zone "." IN { type hint; file "named.ca"; }; zone "magedu.org" { type master; file "magedu.org.zone.bj"; }; vim /etc/named.rfc1912.zones.sh zone "." IN { type hint; file "named.ca"; }; zone "magedu.org" { type master; file "magedu.org.zone.sh"; }; vim /etc/named.rfc1912.zones.other zone "." IN { type hint; file "named.ca"; }; zone "magedu.org" { type master; file "magedu.org.zone.other"; }; chgrp named /etc/named.rfc1912.zones.bj chgrp named /etc/named.rfc1912.zones.sh chgrp named /etc/named.rfc1912.zones.other
建立區域資料庫檔案
vim /var/named/magedu.org.zone.bj $TTL 1D @ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 10.0.0.8 websrv A 10.0.0.7 www CNAME websrv vim /var/named/magedu.org.zone.sh $TTL 1D @ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 10.0.0.8 websrv A 172.16.0.7 www CNAME websrv vim /var/named/magedu.org.zone.other $TTL 1D @ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 10.0.0.8 websrv A 127.0.0.1 www CNAME websrv chgrp named /var/named/magedu.org.zone.bj chgrp named /var/named/magedu.org.zone.sh chgrp named /var/named/magedu.org.zone.other
3、使用iptable實現: 放行ssh,telnet, ftp, web服務80埠,其他埠服務全部拒絕
iptables -I INPUT -p tcp -m multiport --dports 21,23,80,139,445 -j ACCEPT iptables -A INPUT -j REJECT
3、NAT原理總結
NAT的作用
IP地址分為公網IP與私網IP。一般情況下,在網際網路中,公網IP可直接訪問,私網IP無法直接訪問。而NAT則是將私網IP地址轉換為公網IP地址(將IP報文頭部的私網IP地址改為可以提供訪問的公網IP地址),從而實現使用者上網功能或伺服器在網際網路上提供服務。NAT還可以使得一個公網IP代表多個不同的內網IP,這樣便節省了IP地址資源。
- 靜態轉換:私有地址與公有地址進行一對一的對映。這種一對一對映無法緩解可用公有地址短缺的問題。
- 動態轉換:私有地址與公有地址進行一對多的對映。首先建立公有地址地址池,私有地址向外通訊時,會從公有地址地址池中選擇非在用的公有地址進行對映,當通訊結束時,釋放對映關係,公有地址重新恢復到地址池中待用。弊端:若私有地址向外通訊,而公有地址地址池中無可用公有地址時,會等待公有地址釋放後在進行通訊。
- 埠轉換:在大多數網路中,一般都使用的是IP上的某個埠(如80、443、3389等),所以不需要進行全地址對映,只需要私有地址埠對映到公有地址埠上,直接訪問公有地址加埠號的形式便可以。這樣可以使得一個公有地址可以對應多個私有地址,從而大大緩解了公有地址緊缺的問題。
- Easy IP:為小型網路,一般為家庭、小型網咖、辦公室等內部主機不多的地方。通過撥號方式獲取一個臨時公網IP地址進行外網的訪問。
4、iptables實現SNAT和DNAT,並對規則持久儲存。
實現SNAT和DNAT都需要開啟核心資料轉發功能
1 SNAT
基於nat表的target,適用於固定的公網IP
SNAT選項: --to-source [ipaddr[-ipaddr]][:port[-port]] --random iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source ExtIP [root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.33.131/24 -j SNAT --to-source 192.168.33.128
2 DNAT
nat表的target,適用於埠對映,即可重定向到本機,也可以支援重定向至不同主機的不同埠,但不支援多目標,即不支援負載均衡功能
DNAT選項: --to-destination [ipaddr[-ipaddr]][:port[-port]] iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --todestination InterSeverIP[:PORT] [root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.33.131 -p tcp --dport 80 -j DNAT --to-destination 192.168.33.128:80
3 iptables規則持久儲存
iptables-save > /PATH/TO/SOME_RULES_FILE
4 CentOS 7、8 重新載入預存規則檔案中規則
iptables-restore選項
-n, --noflush:不清除原有規則
-t, --test:僅分析生成規則集,但不提交
iptables-restore < /PATH/FROM/SOME_RULES_FILE
5 開機自動過載規則
開機時自動載入此規則檔案中的規則,新增到(/etc/rc.d/rc.local)
iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE
我們也可以安裝iptables-services 實現iptables.service的規則儲存。