1. (68%)實作題:啟動 Server 作業硬碟 - unit05
    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. 內部私有 VLAN 的設定
      1. 先取消 team0 的網路設定 (取消 IP 等參數的設定值)
      2. 指定一個名為 vlanXX 的 VLAN 環境,其中 XX 為 VLAN ID,該 ID 為你的 IP 尾數,且該 VLAN 使用 team0 作為實體網卡
      3. 使用 MTU 設定為 1400
      4. vlanXX 的網路參數使用原本設定於 team0 上面的網路參數。
    6. nmcli connection modify team0 ipv4.method disabled ipv6.method ignore ipv4.addresses ""
      nmcli connection add con-name vlan* ifname vlan* type vlan id * dev team0
      nmcli connection modify vlan* 802-3-ethernet.mtu 1400
      nmcli connection modify vlan* ipv4.method manual  ipv4.addresses 172.19.*.254/24
      
    7. DHCP 伺服器的設定
      1. 以 vlanXX 的網路環境為準,定義出一個內部的 DHCP 管理的區域網路,該網路的特色為:
        • 預留 172.19.*.1 ~ 172.19.*.100 作為保留給未來固定 IP 位址所使用
        • 其中 172.19.*.101 ~ 172.19.*.200 作為動態分配給其他用戶端
        • 你的 client 透過網卡,給予固定的 172.19.*.1 的 IP 位址參數
        • 其他參數請參考數周以來的網路環境 (包括主機名稱、gateway、DNS等等)
        • 請記得務必放行 dhcp 的使用權 (防火牆的規範)
    8. yum install dhcp
      vim /etc/dhcp/dhcpd.conf
      
      option domain-name		"lan*.example.dic";
      option domain-name-servers	172.16.200.254,168.95.1.1;
      default-lease-time		600;
      max-lease-time			7200;
      log-facility			local7;
      
      subnet 172.19.*.0 netmask 255.255.255.0 {
      	range 172.19.*.101 172.19.*.200;
      	option routers 172.19.*.254;
      }
      	host client {
      		hardware ethernet 52:54:00:XX:XX:XX;
      		fixed-address 172.19.*.1;
      	}
      
      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 67 -i vlan* -j ACCEPT			<------ 新增此規則放行dhcp
      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
      
      systemctl start dhcpd
      systemctl enable dhcpd
      systemctl status dhcpd
      
    9. 內部私有路由
      1. 讓你的 server 會多一個路由,當發現到 172.19.200.0/24 的封包目標時,將它導向到 172.18.255.200 這部伺服器。
      2. 你可能需要修改防火牆,讓從 eth0 出去的封包,在 172.19.0.0/16 這一區段時,並不要進行偽裝喔!
      3. 當你在你的 Server 上面執行 ping 172.19.200.254 的時候,應該是會發現有回應封包才對。
      4. 這個設定在下次開機也是會生效的。
    10. vim /etc/sysconfig/network-scripts/route-eth0
      
      172.19.200.0/24 via 172.18.255.200 dev eth0
      
      /etc/init.d/network restart
      route -n
      
      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 67 -i vlan* -j ACCEPT
      iptables -A INPUT -j REJECT
      
      iptables -t nat -F
      iptables -t nat -X
      iptables -t nat -Z
      iptables -t nat -A POSTROUTING -d 172.19.0.0/16 -o eth0 -j ACCEPT		<------ 新增此規則在下一條規則前
      iptables -t nat -A POSTROUTING -s 172.19.*.0/24 -o eth0 -j MASQUERADE
      
      iptables-save > /etc/sysconfig/iptables
      
      sh /root/firewall.sh
      
  2. (20%)實作題:啟動 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. 內部私有 VLAN 的設定
      1. 先取消 eth0 的網路設定 (取消 IP 等參數的設定值)
      2. 指定一個名為 vlanXX 的 VLAN 環境,其中 XX 為 VLAN ID,該 ID 為你的 IP 尾數,且該 VLAN 使用 eth0 作為實體網卡
      3. 使用 MTU 設定為 1400
      4. vlanXX 的網路參數請使用 dhcp 自動取得的方式來處理!且自動取得的 IP 必須要跟原本手動設定的網路參數相同才行。
    4. nmcli connection modify eth0 ipv4.method disabled ipv6.method ignore ipv4.addresses "" ipv4.gateway "" ipv4.dns ""
      nmcli connection add con-name vlan* ifname vlan* type vlan id * dev eth0
      nmcli connection modify vlan* 802-3-ethernet.mtu 1400
      nmcli connection modify vlan* ipv4.method auto