1. (60%)實作題:啟動 Server 作業硬碟 - unit09
    1. 網路參數的設定,請依據底下的方式來設定好你的網路環境:
      1. 因為我們的系統是 clone 來的,因此裡面的網路卡連線會跑掉。所以,請先刪除所有的連線界面後, 再依據底下的要求逐次建立好你的網路環境:
      2. 建立 eth0 為外部的連線網卡 (相同的連線界面名稱),使用 ethernet 類型,且:
        • IPv4 的 IP位址: 172.18.255.*/24 ,其中 * 為老師規定的 IP 尾數
        • gateway 為 172.18.255.254
        • DNS 為 172.16.200.254 以及 168.95.1.1
      3. 使用 teamd 的機制建立內部區域網路的備援功能:
        • team 的界面使用 team0 卡號,且連線名稱請命名為 team0
        • team 使用 activebackup 備援功能,不要使用 loadbalance
        • team 的實體網卡 (team slave) 請使用 eth1 及 eth2 ,且其連線名稱名稱亦請命名為 eth1, eth2
        • 內部網路參數為: 172.19.*.254/24,不需要 gateway
      4. 主機名稱指定為: server*.example.dic
      5. 最終你的主機名稱與 IP 的對應為:
        server*.example.dic	172.18.255.*		別名為 server*
        server254.example.dic	172.18.255.254		別名為 server254
        server.lan*.example.dic	172.19.*.254		別名為 server
        client.lan*.example.dic	172.19.*.1		別名為 client
        
    2. 基本的伺服器作業系統設定行為:
      1. 使用崑山的 FTP 網站作為你的 YUM server 來源,並且清除一次 yum 清單快取
      2. 安裝相關的軟體,至少須安裝 vim-enhanced, bash-completion, net-tools, mailx, wget, links, bind-utils
      3. 全系統自動升級,且每天凌晨 3 點也會自動升級一次。(請寫入 /etc/crontab 為主)
      4. 將 SELinux 修改成為 Enforcing 模式,且未來每次開機都自動為 Enforcing 才行
    3. 實際設定好本機防火牆
      1. 請關閉 firewalld 服務,並且自行安裝、啟動 iptables 服務
      2. 將預設的規則轉存到 /root/firewall.sh 這個檔案內
      3. 首先將全部的規則刪除 (應該有三條指令)
      4. 設定好預設政策,讓 INPUT 成為 DROP 而 OUTPUT 與 FORWARD 成為 ACCEPT
      5. 針對 INPUT 前三條規則為 (1)回應封包 (2)放行 lo 界面 (3)放行 icmp 封包
      6. 放行你自己的內部區域網路那個網域的連線要求
      7. 讓 ssh 只對外部的區網放行,不會對 Internet 放行
      8. 讓 http 針對整個 Internet 放行
      9. 最後讓確定的規則轉存到 /etc/sysconfig/iptables 這個設定檔
      10. 重新啟動 iptables 服務,然後觀察規則是否正確
    4. 實際設定好 Server 的路由功能
      1. 讓核心支援 IP 轉遞的功能
      2. 修改 /root/firewall.sh ,增加刪除 nat 表格的規則與自訂鏈
      3. 增加讓來自內部網路的封包,並預計由 eth0 對外網卡出去的封包,全部偽裝成為 eth0 的 public IP
      4. 在 /etc/sysconfig/iptables-config 當中增加 nf_nat_ftp 及 nf_conntrack_ftp 模組功能
      5. 此功能在開機後依舊能夠順利啟動
    5. 建立一個 DNS 服務
      1. 請使用 named-chroot 服務,不要使用 named 服務。
      2. yum install bind
        yum install bind-chroot
        systemctl start named-chroot
        systemctl enable named-chroot
        
      3. 關於 DNS 的整體設定方面,底下的設定請修改掉:
        • DNS 需要針對所有的界面監聽服務
        • DNS 服務必須要放行給全世界來查詢 (allow-query)
        • DNS 僅有你的兩段區網與 127.0.0.0/8 才可以代詢 (allow-recursion)
      4. vim /etc/named.conf
        
        options {
        	listen-on port 53 { any; };
        	listen-on-v6 port 53 { ::1; };	//刪掉
        	allow-query     { any; };
        	allow-recursion { 172.18.255.0/24; 172.19.*.0/24; 127.0.0.0/8; };
        	recursion yes;		//註解
        	//其餘預設不變//
        };	
        
        systemctl restart named-chroot
        
      5. 設定一個正解 zone 為 lan*.example.dic,相關設定須有底下的記錄:
        • 這個 zone 允許 172.19.*.0/24 的來源進行更新
        • TTL 需要設定為 600 秒
        • SOA 的設定中, 伺服器名為 server.lan*.example.dic, email 需為 student@server.lan*.example.dic,序號需為當日的日期相關, 其他請自由設定
        • NS 需要設定使用 server.lan*.example.dic 與 client.lan*.example.dic 這兩部主機
        • server.lan*.example.dic 的 A 為 172.19.*.254
        • client.lan*.example.dic 的 A 為 172.19.*.1
        • pc2.lan*.example.dic 的 A 為 172.19.*.2
        • pc3.lan*.example.dic 的 A 為 172.19.*.3
        • pc4.lan*.example.dic 的 A 為 172.19.*.4
        • www.lan*.example.dic, ftp.lan*.example.dic, web.lan*.example.dic 都使用 CNAME 對應到 server.lan*.example.dic
      6. vim /etc/named.conf
        
        zone "lan*.example.dic" IN {
        	type master;
        	file "named.lan*.example.dic";
        	allow-transfer { 172.19.*.1; };
        };
        
        cp -a /var/named/named.localhost /var/named/named.lan*.example.dic
        vim /var/named/named.lan*.example.dic
        
        $TTL 600
        @	IN SOA		server.lan*.example.dic.	student.server.lan*.example.dic. ( 2019****01 1D 1H 1W 3H )
        @	IN NS		server.lan*.example.dic.
        @	IN NS		client.lan*.example.dic.
        server	IN A		172.19.*.254
        client	IN A		172.19.*.1
        pc2	IN A		172.19.*.2
        pc3	IN A		172.19.*.3
        pc4	IN A		172.19.*.4
        www	IN CNAME	server
        ftp	IN CNAME	server
        web	IN CNAME	server
        
        systemctl restart named-chroot
        
      7. 針對 172.19.*.0/24 的網域設定一個反解的 zone,相關設定須有底下的記錄:
        • 這個 zone 允許 172.19.*.0/24 的來源進行更新
        • TTL, SOA, NS 均沿用與上述正解相同的設定
        • 172.19.*.254 對應到 server.lan*.example.dic
        • 172.19.*.1 對應到 client.lan*.example.dic
        • 172.19.*.2 對應到 pc2.lan*.example.dic
        • 172.19.*.3 對應到 pc3.lan*.example.dic
        • 172.19.*.4 對應到 pc4.lan*.example.dic
      8. vim /etc/named.conf
        
        zone "*.19.172.in-addr.arpa" IN {
        	type master;
        	file "named.172.19.*";
        	allow-transfer { 172.19.*.1; };
        };
        
        cp -a /var/named/named.loopback /var/named/named.172.19.*
        vim /var/named/named.172.19.*
        
        $TTL 600
        @	IN SOA		server.lan*.example.dic.	student.server.lan*.example.dic. ( 2019****01 1D 1H 1W 3H )
        @	IN NS		server.lan*.example.dic.
        @	IN NS		client.lan*.example.dic.
        254 	IN PTR		server.lan*.example.dic.
        1	IN PTR		client.lan*.example.dic.
        2	IN PTR		pc2.lan*.example.dic.
        3	IN PTR		pc3.lan*.example.dic.
        4	IN PTR		pc4.lan*.example.dic.
        
        systemctl restart named-chroot
        
      9. 防火牆需要放行所有的人都能使用你的 DNS
      10. vim /root/firewall.sh
        
        #!/bin/bash
        
        iptables -F
        iptables -X
        iptables -Z
        
        iptables -P INPUT DROP
        iptables -P OUTPUT ACCEPT
        iptables -P FORWARD ACCEPT
        
        iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
        iptables -A INPUT -i lo -j ACCEPT
        iptables -A INPUT -p icmp -j ACCEPT
        iptables -A INPUT -s 172.19.*.0/24 -j ACCEPT
        iptables -A INPUT -s 172.18.255.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
        iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
        iptables -A INPUT -p udp --dport 53 -j ACCEPT		<----- 新增此規則放行 ----->
        iptables -A INPUT -p tcp --dport 53 -j ACCEPT		<----- 新增此規則放行 ----->
        iptables -A INPUT -j REJECT
        
        iptables -t nat -F
        iptables -t nat -X
        iptables -t nat -Z
        iptables -t nat -A POSTROUTING -s 172.19.*.0/24 -o eth0 -j MASQUERADE
        
        iptables-save > /etc/sysconfig/iptables
        
        sh /root/firewall.sh
        
      11. 讓你這部 Server 可以使用自己的 IP 作為 DNS 服務的來源設定 (nmcli...)。
      12. nmcli connection modify eth0 ipv4.dns 172.19.*.254,172.19.*.1,172.16.200.254,168.95.1.1
        nmcli connection up eth0
        
  2. (30%)實作題:啟動 client 作業硬碟
    1. 網路參數的設定,請依據底下的方式來設定好:
      1. 因為我們的系統是 clone 來的,因此裡面的網路卡連線會跑掉。所以,請先刪除所有的連線界面後, 再依據底下的要求逐次建立好你的網路環境:
      2. 建立 eth0 的連線網卡 (相同的連線界面名稱),使用 ethernet 類型,且:
        • IPv4 的 IP位址: 172.19.*.1/24 ,其中 * 為老師規定的 IP 尾數
        • gateway 為 172.19.*.254
        • DNS 為 172.16.200.254 以及 168.95.1.1
      3. 主機名稱指定為: client.lan*.example.dic
      4. 最終你的主機名稱與 IP 的對應為:
        server*.example.dic	172.18.255.*		別名為 server*
        server254.example.dic	172.18.255.254		別名為 server254
        server.lan*.example.dic	172.19.*.254		別名為 server
        client.lan*.example.dic	172.19.*.1		別名為 client
        
    2. 實際設定好本機防火牆
      1. 預設請使用 firewalld 防火牆服務,不要使用 iptables 服務!
      2. 預計放行的服務主要有 ssh 與 http 兩個服務,其他還可能有預設會啟用的 dhcp 用戶端服務。
      3. 查詢 rich rule (man firewalld.richlanguage),確認來自本機同一個 LAN 網段的封包,通通給予放行。
      4. 上述放行的防火牆服務,在下次重新開機後,依舊會存在才行
    3. 架設一個 slave DNS 伺服器
      1. 請使用 named-chroot 服務,不要使用 named 服務。
      2. yum install bind
        yum install bind-chroot
        systemctl start named-chroot
        systemctl enable named-chroot
        
      3. 關於 DNS 的整體設定方面,底下的設定請修改掉:
        • DNS 需要針對所有的界面監聽服務
        • DNS 服務必須要放行給全世界來查詢 (allow-query)
        • DNS 僅有你的兩段區網與 127.0.0.0/8 才可以代詢 (allow-recursion)
      4. vim /etc/named.conf
        
        options {
        	listen-on port 53 { any; };
        	listen-on-v6 port 53 { ::1; };	//刪掉
        	allow-query     { any; };
        	allow-recursion { 172.18.255.0/24; 172.19.*.0/24; 127.0.0.0/8; };
        	recursion yes;		//註解
        	//其餘預設不變//
        };	
        
        systemctl restart named-chroot
        
      5. 設定一個正解 zone 為 lan*.exmpale.dic,相關設定為:
        • 其 master DNS 來源請設定為 172.19.*.254
      6. vim /etc/named.conf
        
        zone "lan*.example.dic" IN {
        	type slave;
        	file "slaves/named.lan*.example.dic";
        	masters { 172.19.*.254; };
        };
        
        systemctl restart named-chroot
        
      7. 針對 172.19.*.0/24 的網域設定一個反解的 zone,相關設定為:
        • 其 master DNS 來源請設定為 172.19.*.254
      8. vim /etc/named.conf
        
        zone "*.19.172.in-addr.arpa" IN {
        	type slave;
        	file "slaves/named.172.19.*";
        	masters { 172.19.*.254; };
        };
        
        systemctl restart named-chroot
        
      9. 防火牆需要放行所有的人都能使用你的 DNS
      10. firewall-cmd --add-service=dns
        firewall-cmd --add-service=dns --permanent
        
        或
        
        firewall-cmd --add-port=53/udp
        firewall-cmd --add-port=53/udp --permanent
        firewall-cmd --add-port=53/tcp
        firewall-cmd --add-port=53/tcp --permanent
        
      11. 讓你這部 Server 可以使用自己的 IP 作為 DNS 服務的來源設定 (nmcli...)。
      12. nmcli connection modify eth0 ipv4.dns 172.19.*.1,172.19.*.254,172.16.200.254,168.95.1.1