第 5 堂課 - 區域網路的 DHCP server 建置
上次更新日期 2022/10/06
上節課程雖然已經完成了防火牆的功能,同時也將 NAT 的 IP 分享器環境設定妥當。不過,等等!如果只有一兩部 client, 我們手動去設定好 IP 還沒啥,如果像電腦教室內有這麼多電腦,難道要一台一台去設定?這時得要架設 DHCP 才行。 還是不對!我們上課的環境裡面只有一個獨立的內部區網,所有的同學都在同一個區網內,那 DHCP 會互相干擾耶! 這怎辦?這時可能得要玩一玩 VLAN 的設定才行!那,如果區網內的 client 要溝通時,該怎辦呢? 這時,恐怕就得要透過路由功能來處理比較妥當喔!
學習目標
- 了解 VLAN 主要運用在 switch 上,但是 Linux 網卡可以模擬
- 學會以 VLAN 設計自己的 server/client 網路對接
- 學會 DHCP server 的實做,並設計、管理自己的區域網路規劃
- 了解並實際設定額外的路由規劃
- 5.1: 什麼是 VLAN 與達成方式 (Option)
- 5.2: 區網的網路參數自動取得 DHCP 服務設定
- 5.3: 內部私有網域的路由設定(再講到 routing 的互傳概念!)
- 5.4: 課後練習
5.1: 什麼是 VLAN 與達成方式 (Option)
在所謂的星形連線方式中,只要是串接在同一個 switch 上面的所有電腦,在實體上面就是串接在一起,沒辦法隔離的! 也就是所謂的實體區域網路連接的狀態。不過,許多時刻,我們可能需要對不同電腦進行隔離,否則許多封包的傳遞可能會有問題。 但是我們只有一個 switch 可以達到實體分離的狀態嘛?可以的~那就是透過所謂的虛擬區域網路 (virtual local area network, VLAN)。
VLAN 最簡單的想法,就是在一部 switch 裡面,將許多不同的埠口規劃成同一區,非在同一區的其他埠口,就無法讓封包流進這一區。 舉例來說,一部 12 port 的 switch ,將 1~6 劃分成為一個 vlan id 2,另外的 7~12 保留原本的 vlan id 1 設定,那在邏輯的思考上面, 這個 swith 已經被隔離成為兩個區塊,你可以將 1~6 埠口想成是 swtich 1 而 7~12 埠口則為 switch 0,這兩個邏輯的 swtich 裡面的封包是無法互相傳遞的!
這個 vlan 的功能對於只有一個共同實體連線,但是卻想要切割出不同區域網路,且不同 LAN 彼此間不互相干擾的情況時, 就顯的非常的有幫助!舉例來說,我們的上課環境中,大家在虛擬電腦教室系統裡面僅有一個獨立的區網, 所有同學都在此區網裡面使用網路,此時如果我們需要架設類似 DHCP 的服務時,彼此之間就容易產生競爭與干擾。 若能使用 VLAN 技術,每個使用者都有自己的一個虛擬網路,則彼此之間就可以不互相干擾, 此時要架設相關服務就顯的簡單了!畢竟不會被干擾啊!
請注意,這個 VLAN 主要的目的是讓我們上課的環境達到邏輯上面完全分離的效果!對於一般環境來說,不是必須的設定! 架設這個功能之前,請先問你自己,是否需要這個設計!不要看到黑影就開槍...
- VLAN 的 ID 識別碼
其實,基本上,預設的所有網路封包都是在一個 ID 為 1 號的 VLAN 環境下,所以大家都是能夠透過廣播 (broadcast) 來互通訊息的同一 VLAN 內。 因此,如果想要讓你的 VLAN 與原本的網路隔離開來,就給你的網路一個 VLAN 不為 1 的 ID 即可!這樣就能夠讓你的網路隔離開來了。 因此,等一下的實際設定中,同學們需要定義出自己的 VLAN ID 號碼,且不能重複,否則就會互相干擾啊!
- RockyLinux 9 的 VLAN 設定
其實我們的 Linux 可以直接透過網路卡來做 VLAN 的封包表頭喔!你需要做的是:
- 選擇一個實體網卡界面,並且選擇一個 VLAN 的 ID 號碼 (不可以是 1 號)
- 透過 nmcli 的指令,實做一個名為 vlanXXX 的網卡,且這個 VLAN 網卡使用上面談到的那個實體網卡界面
- 給予這個 vlanXXX 的連線名稱實際的 IP 位址與網路參數即可。
- (optional) 有可能因為 VLAN 包太多層,導致 MTU (最大傳輸單位) 無法拆解的問題。所以,建議可以降低 MTU,從標準的 1500 降低到 1400 左右即可。
就這麼簡單!
- 預處理:因為 team0 即將變成 vlan 的實體網卡,因此, team0 的網路參數應該要全部取消才對。 所以,你需要 (1)先關閉 team0 ; (2)讓 team0 的網路參數設定取消,因此 ipv4.method 設定為 disable 以及 ipv6.method 設定為 link-local , 在設定的同時,你可能需要取消其他網路參數,例如加上 ipv4.addresses '' 來將其他有用的參數取消才行
- 先想好,你的網卡類型為 vlan (type vlane) ,你的連線名稱為 vlanXX (con-name),你的網卡名稱為 vlanXX (ifname vlanXX),你的裝置為 team0 (dev team0),你的 vlan id 為 XX ( id XX)
- 將上述的資料以: nmcli connection add ... 加入,最終會產生一個名為 vlanXX 的連線界面與網卡
- 讓 vlanXX 的 IP 來接管原本 team0 的設定!包括 IPv6 及 IPv4
- 讓 MTU 設定為 1400 左右 (802-3-ethernet.mtu 1400)
- 最後記得啟動 vlanXX 喔!此時使用 ip addr show 或 ifconfig,就會看到 vlanXX 的網卡。
完成了上述的設定後,你的 server IP 並沒有改變,依舊具有 192.168.254.*/24 以及 10.255.*.254/24 這兩個網路參數, 不過,在 client 端卻無法 ping 到 10.255.*.254 這個 IP 了!這是因為 server 與 client 的 vlan 已經在不同的網段之故。 所以,接下來你得要開始修改 client 的網路卡設定才行!
- 預處理:跟剛剛 team0 的取消類似,你可以透過 nmcli connection modify ens3 ipv4.method disable ipv4.dns "" ipv4.gateway "" ipv4.addresses "" 來取消所有的網路設定項目。(注意, ipv6 也要同步處理)
- 先想好,你的網卡類型為 vlan (type vlane) ,你的網路連線名稱為 vlanXX (con-name vlanXX),網卡名稱為 vlanXX ( ifname vlanXX), 你的裝置為 ens3 (dev ens3),你的 vlan id 為 XX ( id XX)
- 將上述的資料以: nmcli connection add ... 加入,最終會產生一個名為 vlanXX 的連線界面與網卡
- 讓 vlanXX 的 IP 來接管原本 ens3 的設定!包括 IPv6 及 IPv4
- 讓 MTU 設定為 1400 左右 (802-3-ethernet.mtu 1400)
- 最後記得啟動 vlanXX 以及 ens3,這樣就可以使用 ip addr show 以及 ifconfig 來看到 vlanXX 這張網卡了!
你的 client 也完成如上的設定之後,此時你的 server 與 client 之間的對答只有你們自己可以取得,除非別人也使用跟你的 vlan 相同的 id, 否則,看到你的封包,應該都是直接丟棄的喔!
5.2: 區網的網路參數自動取得 DHCP 服務設定
如果區域網路裡面有超過 5 台以上的電腦,你要怎麼設定好每一台電腦的網路?每一台電腦都手動去設定嘛? 有沒有這麼麻煩?若讓每部電腦都自動取得 IP 的話,那不是很好嘛?就像現在一般無線網路基地台的功能, 每台手機只要連上無線 wifi AP 就可以自動取得網路參數,這才是正解吧?那這是什麼服務呢?即時就是動態主機設定服務 (Dynamic Host Configuration Protocol, DHCP)。 說穿了,就是自動發派 IP 與相關網路參數給各用戶端電腦的服務。
DHCP 服務的 Server 與 client 端的連線如下所示:
基本上,用戶端的網路取得流程為:
- 用戶端:利用廣播封包發送搜索 DHCP 伺服器的封包
- 伺服器端:提供用戶端網路相關的租約以供選擇 (主要透過用戶端 MAC 位址來判斷喔!)
- 用戶端:決定選擇的 DHCP 伺服器提供的網路參數租約並回報伺服器:
- 伺服器端:記錄該次租約行為並回報用戶端已確認的回應封包資訊:
要注意的是,如果區域網路裡面有多部 DHCP 伺服器的話,那麼用戶端會用先回應的那一部 DHCP 伺服器所提供的網路參數為主, 所以,最好區域網路內不要有兩部以上的 DHCP 服務,否則容易產生干擾的狀態喔!
- 固定 IP 與動態給予 IP 的模式:
DHCP 伺服器會依據設定來給予某些主機固定的 IP 喔!透過的方式就是依據用戶端的 MAC 位址來處理的。當用戶端電腦使用自動取得 IP 來探索區域網路內的 DHCP 服務時, 一般來說,你的 DHCP 會做這些動作:
- 到伺服器的登錄檔中尋找該用戶之前是否曾經用過某個 IP ,若有且該 IP 目前無人使用,則提供此 IP 給用戶端;
- 若設定檔針對該 MAC 提供額外的固定 IP (static IP) 時,則提供該固定 IP 給用戶端;
- 若不符合上述兩個條件,則隨機取用目前沒有被使用的 IP 參數給用戶端,並記錄下來。
也就是說,如果你想要讓某部主機永遠取得固定的 IP 時,可以透過取得該主機的網卡卡號,再修改 DHCP 伺服器的設定檔, 讓該網卡 (MAC address) 提供固定的 IP 即可喔!
- DHCP 服務的安裝、設定、啟動與觀察
DHCP 主要的服務軟體名稱為 dhcp-server 這個軟體,相關的檔案主要為:
- /etc/dhcp/dhcpd.conf 主設定檔
- /usr/share/doc/dhcp-server/dhcpd.conf.example 範例檔
- /var/lib/dhcpd/dhcpd.leases 用戶端租約檔
- systemctl [start|enable|stop|status] dhcpd
現在針對我們的伺服器內網 (10.255.*.0/24 那一個網段) 來設定 dhcp 伺服器的行為時,我們預計動態分配從 10.255.*.101~10.255.*.199 為動態取得 IP 的區段, 而 10.255.*.200 之後的區段保留給未來其他需要的內部服務使用,至於 10.255.*.1~10.255.*.100 則保留給固定的某些主機對應使用。 那麼簡單的設定檔就可以寫成如下的模樣: (鳥哥以 * 為 200 來設計如下的樣式!請將下列的 200 改成你的 IP 尾數即可。)
[root@localhost ~]# yum install dhcp-server [root@localhost ~]# vim /etc/dhcp/dhcpd.conf ddns-update-style none; default-lease-time 600; # 預設的租約時間 max-lease-time 7200; # 最大的租約時間 subnet 10.255.200.0 netmask 255.255.255.0 { range 10.255.200.101 10.255.200.199; option routers 10.255.200.254; option domain-name "lan200.dic.ksu"; option domain-name-servers 120.114.100.1, 168.95.1.1; } [root@localhost ~]# systemctl start dhcpd [root@localhost ~]# systemctl enable dhcpd [root@localhost ~]# systemctl status dhcpd ● dhcpd.service - DHCPv4 Server Daemon Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled) Active: active (running) since 六 2017-09-23 23:55:32 CST; 8s ago Docs: man:dhcpd(8) man:dhcpd.conf(5) Main PID: 8531 (dhcpd) Status: "Dispatching packets..." CGroup: /system.slice/dhcpd.service └─8531 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid [root@localhost ~]# vim /var/log/messages Sep 23 23:55:31 pc200 systemd: Starting DHCPv4 Server Daemon... Sep 23 23:55:32 pc200 dhcpd: Internet Systems Consortium DHCP Server 4.2.5 Sep 23 23:55:32 pc200 dhcpd: Copyright 2004-2013 Internet Systems Consortium. Sep 23 23:55:32 pc200 dhcpd: All rights reserved. Sep 23 23:55:32 pc200 dhcpd: For info, please visit https://www.isc.org/software/dhcp/ Sep 23 23:55:32 pc200 dhcpd: Wrote 0 leases to leases file. Sep 23 23:55:32 pc200 dhcpd: Listening on LPF/vlan200/6e:01:19:f2:60:34/10.255.200.0/24 Sep 23 23:55:32 pc200 dhcpd: Sending on LPF/vlan200/6e:01:19:f2:60:34/10.255.200.0/24
因為紀錄的資訊的關係,因此你從 systemctl status dhcpd 裡頭看不到實際的 dhcp 生效的狀態,所以請到 /var/log/messages 裡頭去看看, 要確認出現如上的特殊字體部份,這才確認 server 是順利的在正確的網卡上面生效的! 我們這裡的正確網卡指的是 vlan200 那一張喔!要注意!
- 防火牆的設定
如果要針對用戶端來放行 dhcp 的要求,那麼就得要提供 udp port 67 的放行功能!因此,請修改 /root/firewall.sh 的內容, 加上 dhcp 的協力功能!
[root@localhost ~]# vim /root/firewall.sh iptables -A INPUT -p udp --dport 67 -i vlan200 -j ACCEPT [root@localhost ~]# sh /root/firewall.sh
- 用戶端的自動取得 IP
轉到 client 端的設定上,只要指定 ipv4.method 為 auto 之後,重新啟動網卡即可!
[root@localhost ~]# nmcli connection show NAME UUID TYPE DEVICE ense ba8b05ee-2e76-4a44-a341-cd50874aa49b 802-3-ethernet ens3 vlan200 849f2c14-b52f-4817-8cea-db69502160cc vlan ens3.200 [root@localhost ~]# nmcli connection modify vlan200 ipv4.method auto ipv4.addresses '' .. [root@localhost ~]# nmcli connection up vlan200
這時 ifconfig 就會看到 ens3.200 這張網卡上面的 IP 已經改為 10.255.200.101 囉!接下來,來到 server 端,查看一下租約檔案, 這個檔案的內容就會有點像這樣:
[root@localhost ~]# cat /var/lib/dhcpd/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5
server-duid "\000\001\000\001!Y@tn\001\031\362`4";
lease 10.255.200.101 {
starts 6 2017/09/23 16:17:27;
ends 6 2017/09/23 16:27:27;
cltt 6 2017/09/23 16:17:27;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 52:54:00:41:49:77;
}
這就是 MAC address 搭配 IP 的設定紀錄資料。
- 設定取得固定 IP 的方案
我們的 client IP 尾數會變成 101 啊!這不是我們要的!所以,請查詢到 client 的 MAC address 之後,將它設定成為固定的 IP 位址才好!
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf ddns-update-style none; default-lease-time 600; # 預設的租約時間 max-lease-time 7200; # 最大的租約時間 subnet 10.255.200.0 netmask 255.255.255.0 { range 10.255.200.101 10.255.200.199; option routers 10.255.200.254; option domain-name "lan200.dic.ksu"; option domain-name-servers 120.114.100.1, 168.95.1.1; host client { hardware ethernet 52:54:00:41:49:77; fixed-address 10.255.200.1; } } [root@localhost ~]# systemctl restart dhcpd
接下來,只要回到 client 端,重新執行『 nmcli connection up vlan200 』,這樣就可以更新到正確的 IP 囉! 也同樣記得回到 server 去看一下 /var/lib/dhcp/dhcpd.leases 的檔案紀錄喔!
- 假設有一張網卡 mac address 為 52:54:00:11:11:11 ,這張網卡預計要給予 10.255.*.51 的 IP 位址, 該如何設定與重新啟動 dhcpd 服務?
- 重新啟動 dhcpd 後,觀察 /var/log/messages 裡面與 dhcp 有關的訊息,為何會有一堆『 No subnet declaration for ens3 . 』的訊息? 那代表什麼意思?
- 前往 client,透過 nmcli connection show vlan200 之類的指令,查看一下最後面出現的訊息,有關 DHCP option 的訊息, 嘗試解析這些訊息的意義為何?
由於我們在前一小節 (5.1) 已經設定好了 vlan 了,因此這個 dhcp 的服務會讓大家的網路都是在分離的狀態下運作的, 因此並不會互相干擾的喔!這樣運作就方便多了!連在這個測試環境中,我們也不需要關閉 DHCP 服務囉!從這裡我們也能知道, 如果某些比較重要的場合,我們透過 vlan 來設定,也能夠避免很多被偷聽或被攻擊的問題呢!衍生出來的資安保護,倒是挺不錯的概念。 只是, vlan 真的只能在區網內啊!
5.3: 內部私有網域的路由設定(再講到 routing 的互傳概念!)
現在來想一想,目前我們訓練機的環境中,就是一個稍微龐大一點點的企業私有網路環境,每位同學都是一個單位部門的 IT 管理人員, 所以我們會有一個外部的區網 (192.168.254.0/24),以及好多個子網路 (10.255.*.0/24),那麼來想一想, 能不能讓 10.255.100.1 可以直接連線到 10.255.200.1 呢?這兩個都是子網路喔!
直覺上,這兩個子網路要連線,好像可以吧?不就是已經所有的線路都接在一起嘛?不過,實際上『預設』卻是不可行的! 這是因為路由的問題!先來看看下面這張圖的連結狀況:
在只有目前的 NAT 設定情況下,每一部路由器都只記得自己下一層與自己上一層的路由,隔壁層與下下層的路由就沒有注意到了! 因此,當封包由 PCZ2 的 10.255.200.1 傳出來,目的地想要跑去 PCZ1 的 10.255.100.1 時,封包的傳遞方向是這樣的:
- 先傳送到 Router Z2,亦即 10.255.200.254 這個 IP
- 經過 Z2 的路由判斷,最終交給 192.168.254.254
- 經過 192.168.254.254 的路由判斷,因為沒有設定 10.255.100.254 的目的第位置,因此交給這部主機的 Gateway, 然後就傳出去給 GW 了!
- 其他的 GW 當然就更不知道封包該怎麼傳,然後又是 private 封包,所以該封包就直接被 drop 掉了!
瞧,這封包連 router Z1 那部 192.168.254.100 都還不知道在哪裡呢!真是傷腦筋!其實,最好解決的方案,是直接在 192.168.254.254 那部 router 上面動手腳,讓它記得每一個子網路的路由是那一層 Router 所管理即可。不過該 router 你可能沒辦法動 (例如計中的環境, 我們是無法動手的!),此時只好讓自己的 router 知道彼此的目的在哪裡即可。也就是說:
- 讓 Router Z2 知道 10.255.100.0/24 要交由 192.168.254.100 管理
- 讓 Router Z1 知道 10.255.200.0/24 要交由 192.168.254.200 管理
這樣就搞定了!因為如此一來,當封包由 10.255.200.1 傳出來而要交給 10.255.100.1 的時候,就會透過 Router Z2 再到 Router Z1 然後給 PC Z1, 回應的封包也能夠經由 Router Z1 回傳給 Router Z2 再回給 PC Z2 了!真的要很注意,不能單純的設定 Router Z1 或 Router Z2 而已, 這兩者之間得要互相搭配才行!那該如何設定呢?很簡單!透過 nmcli 裡面的 ipv4.routes 處理即可。設定很簡單,這樣做看看:
[root@localhost ~]# nmcli connection modify ens3 +ipv4.routes '10.255.100.0/24 192.168.254.100' [root@localhost ~]# nmcli connection show ens3 | grep ipv4.routes ipv4.routes: { ip = 10.255.100.0/24, nh = 192.168.254.100 } [root@localhost ~]# nmcli connnection up ens3 [root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.254.254 0.0.0.0 UG 103 0 0 ens3 10.255.100.0 192.168.254.100 255.255.255.0 UG 103 0 0 ens3 10.255.200.0 0.0.0.0 255.255.255.0 U 400 0 0 vlan200 192.168.254.0 0.0.0.0 255.255.255.0 U 103 0 0 ens3
同理,你也得在另一台 Router Z1 上面反向設定回來!兩邊都做好之後,PC Z1 與 PC Z2 就可以隨意互相傳遞資料了!所以, 一切的一切,都是路由的設定啦!
此外,由於我們在之前已經設定過 IP 偽裝的功能,因此從 ens3 出去的封包都會被偽裝成 ens3 的 IP。這對於純粹用於內部的 Server 恐怕會出問題。 因此,你應該要將內部的網段加入 firewall.sh 裡面,且放在偽裝的那行條件之前,使用 ACCEPT 即可放行。
iptables -t nat -A POSTROUTING -d 10.0.0.0/8 -o ens3 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.255.200.0/24 -o ens3 -j MASQUERADE
若內部網路通過這行規則,就不會去使用到後續的 IP 偽裝的規則了!
5.4: 課後練習
- (68%)實作題:啟動 Server 作業硬碟 - unit05
- 網路參數的設定,請依據底下的方式來設定好你的網路環境:
- 建立 ens3 為外部的連線網卡 (相同的連線界面名稱),使用 ethernet 類型,且:
- IPv4 的 IP位址: 172.18.255.*/24 ,其中 * 為老師規定的 IP 尾數
- gateway 為 172.18.255.254
- DNS 為 172.16.200.254 以及 168.95.1.1
- 使用 teamd 的機制建立內部區域網路的備援功能:
- team 的界面使用 team0 卡號,且連線名稱請命名為 team0
- team 使用 activebackup 備援功能,不要使用 loadbalance
- team 的實體網卡 (team slave) 請使用 ens7 及 ens8 ,且其連線名稱名稱亦請命名為 ens7, ens8
- team0 網路參數為: 172.19.*.254/24,不需要 gateway
- 主機名稱指定為: server*.example.dic
- 最終你的主機名稱與 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
- 建立 ens3 為外部的連線網卡 (相同的連線界面名稱),使用 ethernet 類型,且:
- 基本的伺服器作業系統設定行為:
- 依據底下的說明,選擇距離我們最近的成大網站來作為 yum server 的來源:
成大 ccns 網站: https://mirror.ccns.ncku.edu.tw/howto/#rocky-linux
請記得修改過設定檔,應該要將清單清除 (yum clean all) 較佳。 - 安裝相關的軟體,至少須安裝 vim-enhanced, bash-completion, net-tools, bind-utils, kernel
- 全系統自動升級,且每天凌晨 3 點也會自動升級一次。(請寫入 /etc/crontab 為主)
- 將 SELinux 修改成為 Enforcing 模式,且未來每次開機都自動為 Enforcing 才行
- 依據底下的說明,選擇距離我們最近的成大網站來作為 yum server 的來源:
- 實際設定好本機防火牆
- 請關閉 firewalld 服務,並且自行安裝、啟動 iptables 服務
- 將預設的規則轉存到 /root/firewall.sh 這個檔案內
- 修改上述 firewall.sh 腳本,讓內容有點像底下這樣:
- 首先將全部的規則刪除 (應該有三條指令)
- 設定好預設政策,讓 INPUT 成為 DROP 而 OUTPUT 與 FORWARD 成為 ACCEPT
- 針對 INPUT 前三條規則為 (1)回應封包 (2)放行 lo 界面 (3)放行 icmp 封包
- 放行你自己的內部區域網路那個網域的連線要求 (針對 LAN 的信任設定)
- 讓 ssh 只對外部的區網放行,不會對 Internet 放行 (對 ssh 連線做限制較佳)
- 讓 http 針對整個 Internet 放行 (一般公開的服務設計)
- 最後讓確定的規則轉存到 /etc/sysconfig/iptables 這個設定檔
- 重新啟動 iptables 服務,然後觀察規則是否正確
- 實際設定好 Server 的路由功能
- 讓核心支援 IP 轉遞的功能,並且每次重新開機都可以自動生效
- 修改 /root/firewall.sh ,在該檔案加入清除 nat 表格的規則與自訂鏈的設定
- 增加規則:讓來自內部網路的封包,在路由判斷後,並預計由 ens3 對外網卡出去的封包,全部偽裝成為 ens3 的 IP 位址 (一般在數據機上面的就是 public IP)
- 在 /etc/sysconfig/iptables-config 當中增加 nf_nat_ftp 及 nf_conntrack_ftp 模組功能
- 上述功能在開機後依舊能夠順利啟動
- 內部私有 VLAN 的設定
- 先取消 team0 的網路參數設定 (取消 IP 等參數的設定值,保留 team0 網卡,一定要記得 ipv4 跟 ipv6 的 method 通通要關成 disable 與 link-local 才行!)
- 指定一個名為 vlanXX 的 VLAN 環境,其中 XX 為 VLAN ID,該 ID 為你的 IP 尾數,且該 VLAN 使用 team0 作為實體網卡, 且使用 vlan 的網卡名稱同樣取名為 vlanXX。
- 使用 MTU 設定為 1400
- vlanXX 的網路參數使用原本設定於 team0 上面的網路參數。
- DHCP 伺服器的設定
- 以 vlanXX 的網路環境為準,定義出一個內部的 DHCP 管理的區域網路,該網路的特色為:
- 預計發派的網路參數為 172.19.*.0/24 這一段
- 其中 172.19.*.101 ~ 172.19.*.200 作為動態分配給其他用戶端
- 你的 client 主機,則是透過網卡卡號,給予固定的 172.19.*.1 的 IP 位址參數
- 其他參數請參考數周以來的網路環境 (包括主機名稱、gateway、DNS等等)
- 請記得務必放行 dhcp 的使用權 (防火牆的規範)
- 以 vlanXX 的網路環境為準,定義出一個內部的 DHCP 管理的區域網路,該網路的特色為:
- 內部私有路由
- 讓你的 server 會多一個路由,當發現到 172.19.250.0/24 的封包目標時,將它經由 server 的 ens3 網卡導向到 172.18.255.250 這部伺服器。
- 當你在你的 Server 上面執行 ping 172.19.250.1 的時候,應該是會發現有回應封包才對。
- 這個設定在下次開機也是會生效的。
- 網路參數的設定,請依據底下的方式來設定好你的網路環境:
- (20%)實作題:啟動 client 作業硬碟
- 網路參數的設定,請依據底下的方式來設定好:
- 建立 ens3 的連線網卡 (相同的連線界面名稱),使用 ethernet 類型,且:
- IPv4 的 IP位址: 172.19.*.1/24 ,其中 * 為老師規定的 IP 尾數
- gateway 為 172.19.*.254
- DNS 為 172.16.200.254 以及 168.95.1.1
- 主機名稱指定為: client.lan*.example.dic
- 最終你的主機名稱與 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
- 建立 ens3 的連線網卡 (相同的連線界面名稱),使用 ethernet 類型,且:
- 實際設定好本機防火牆
- 預設請使用 firewalld 防火牆服務,不要使用 iptables 服務!
- 請將預設的領域 (zone) 改為 work 領域,且 ens3 為其管理之界面網卡
- 預計放行的服務主要有 ssh 與 http 兩個服務,其他還可能有預設會啟用的 dhcp 用戶端服務。
- 查詢 rich rule (man firewalld.richlanguage),確認來自本機同一個 LAN 網段的封包,通通給予放行。
- 上述放行的防火牆服務,在下次重新開機後,依舊會存在才行
- 內部私有 VLAN 的設定
- 先取消 ens3 的網路設定 (取消 IP 等參數的設定值)
- 指定一個名為 vlanXX 的 VLAN 環境,其中 XX 為 VLAN ID,該 ID 為你的 IP 尾數,且該 VLAN 使用 ens3 作為實體網卡, 且使用 vlan 的網卡名稱同樣取名為 vlanXX。
- 使用 MTU 設定為 1400
- vlanXX 的網路參數請使用 dhcp 自動取得的方式來處理!且自動取得的 IP 必須要跟原本手動設定的網路參數相同才行。
- 網路參數的設定,請依據底下的方式來設定好:
- (12%)簡易問答題:(每題 2 分)
從具有 GUI 及中文的用戶端 Linux ,使用『 ssh root@172.19.*.254 』登入你的 Server ,之後建立 /root/ans.txt 的檔案,並將底下各題目的答案寫入你 server 當中!
- 簡單的說明 VLAN 在 switch 上面設定的目的是什麼 (尤其對大數量 port number 的 switch 來說)?
- 簡單的說明 VLAN 用在內部網路 (LAN) 的功能是什麼?
- 其實預設的環境就是一個 VLAN,這個 VLAN 的 ID 是幾號?
- DHCP 伺服器啟用的 port number 是幾號?用的封包格式是?DHCP 用戶端啟用的 port number 是幾號?用的封包格式又是?
- 在 RockyLinux 9 的系統下,DHCP 伺服器的設定檔完整路徑為?DHCP 租約檔的完整路徑為?
- DHCP 可以提供兩種 IP 取得的方法,其設定值分別是什麼?
- 上傳成績
- 請將 Server/Client 的硬碟通通啟動,並且確認兩者間的連線沒有問題;
- 在 Server 硬碟上面登入,然後用 root 的身份執行 vbird_server_check_unit ,並依據提示資料填寫你的學號與 IP 尾數
- 該程式會偵測你的系統,並且通知你哪個部份可能有問題,你需要持續觀察或者重新處理的部份會交代妥當。
- 若一切沒問題,螢幕就會出現如下的字樣,然後你就能夠使用 links 去檢查你的檔案是否有順利的上傳了!
- Please use links http://172.18.255.250/upload/unit05 to check your filename
- 2022/10/06:修改成為 RockyLinux 9 的版本,調整一些文字與細部說明