1. 程式人生 > 其它 >The Ninth Week (Lucklyzpp)

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的規則儲存。