什麼是NASA?跟太空有關嗎?
網路管理及系統管理(Nerwork Administration & System Administation),英文縮寫NASA,跟某太空總署一點關係也沒有。 這是一門台大資工系學士部開設的課程,當你修完這3學分後,視學習成果而定,有機會能參加更進一步的培訓,最後甚至能參與系上的網路與系統管理團隊。 不過這門課在系上也是出了名的「充實」,據上這門課的蔡教授本人稱,每週平均會花10~20小時在這門課的作業上。 而且上課內容通常是比較概論性的(畢竟一個Topic怎麼可能在短短三個小時內講完呢), 而作業通常要求實作,因此很考驗學生在網路上搜尋、看Docs、以及解決問題的能力。
這個系列我大概會分四篇出,一篇寫4週的內容,四篇恰好可以完成16週的課程。
第0週:想修NASA嗎?先做作業吧
雖然前面說這門課很難,但想加選的人依舊絡繹不絕,因此寒假期間會公佈Homework 0,給了大概一個月左右的時間讓想選課的人完成, 最後會依據分數來錄取約70人左右得以參加後續的正式課程。據教授所述,最後加入課程的學生都至少在HW0中拿到100分(滿分為103分)。以下說說筆者今年的情形。
HW0分成NA(網路管理)與SA(系統管理)兩個大章節。NA主要是問答題,內容大概是一些網路常見協定或網路相關的基本知識,包括但不限於:
- VPN
- NAT
- IP/TCP
- DDoS
- HTTP/HTTPS
- …more
諸如此類。不過問題通常不會太細節,主要是考驗你對這些名詞有沒有一個基本的認識。
SA部分則是提供了一個Arch Linux虛擬機,學生要在虛擬機中用sh command,找出各個題目要求的flag:一組特定的答案字串(總之就是CTF啦)。 這邊的題目需要的操作不會太難,指令通常很簡單,資工人不能不會的那種,像是切換目錄、連ssh、調整檔案權限等等,網路基本上都找得到。
第1週:系統管理都在幹嘛?
第1週時,HW0還沒有完成批改,因此本週沒有作業:)
這週的課程主要在討論作為一個「系統管理者」,我們該如何安排我們的計畫。這聽起來簡單,但系統管理最重要的就是「防範未然」以及「處理突發狀況」的能力。 假設今天NTU COOL掛了,全校的師生沒辦法繳交作業、觀看上課錄影、甚至是在期中考週時,在NTU COOL上進行期中考的課程該怎麼辦? 這些都是作為System Admin都要處理的課題。
教授舉了幾個以前管理NTU COOL時的例子,最重要的是必須要有計畫。硬碟內的東西一定要有備份,這樣當某顆硬碟壞掉時,才不會丟了重要的資料。 升級韌體與設備時,必須考慮到如果無法正常運作,那要麼樣恢復為原本的配置與版本?這些都是必須進行事先規劃,才能一邊更動服務的同時,又讓服務持續在線。
第2週:Bash Script
這週的課程主題就是Bash Script啦!Bash是一種unix shell,接收使用者輸入的指令來進行各種互動,而Bash Script就是這些指令的腳本了。 只要將想執行的一連串指令先寫成檔案,需要使用時只要將腳本傳給Bash,就能直接執行裡面的內容,因此,只要會使用Bash Script,就能將許多開發時的固定流程給自動化。 課堂上簡單講解了變數、If-Else、For跟While迴圈、Function,以及一些常用指令的列表。Bash的指令多且複雜,因此可以搭配Bash Cheatsheet當作小抄,以及shellcheck幫助找出錯誤以及風格問題。 另外,為了要在終端機環境中也能編輯檔案,我們也要學習使用Vim,在終端機中只用鍵盤完成文件編輯。Interactive Vim Tutorial這個網頁可以讓你對Vim的操作有基本的認識。
第3週:磁碟分割
這一週的主題是磁碟分割。要完成這週的作業,主要需要使用的技能為:
- 使用fdisk幫磁碟建立GPT partition table並切分磁區
- 使用mdadm建立RAID磁碟陣列
- 使用cryptsetup幫磁碟加密
- 使用lvm建立虛擬磁區
- 在空無一物的磁碟上安裝Archlinux並成功開機
實際上,上課內容以及lab都只提到了1~4點的內容,真正的難點在第5點。這是目前我在NASA課上花最多時間研究的一週,這個Archlinux安裝的部分也占了我繳交出去作業報告中一半的頁數…
Archlinux沒有像Ubuntu那樣的安裝光碟或映像檔,因此連boot loader(在本次作業中使用GRUB)以及initramfs都要自行裝在硬碟中。認識電腦開機流程後,基本上做法可以參考Archlinux wiki的各種頁面來學習。(花了很多時間在看這些頁面呢。)
第4週:乙太網路、VLAN
這週是第一次NA領域的課程,介紹了IP/TCP Model中最基礎的Link Layer。目前最常用的Link Layer技術就是乙太網路了。 乙太網路以前一般是用同軸纜線構成的,意思就是同一個網路的電腦都連接在一條大纜線上,但是纜線一次只能傳送一個封包的訊號, 兩個封包在纜線中會彼此干擾訊號,稱之為碰撞(Collision),所以我們通常使用CSMA/CD協定來偵測及避免碰撞。
另一個有關Link Layer的技術就是VLAN。我們可以設定連接網路的交換器,為各個端口指定一個VLAN編號, 然後在轉送封包時,只轉發那些來源端口跟目的端口擁有相同VLAN的封包,就能在一個實體網路中隔離出多個虛擬的網路。
這週的Lab與Homework要使用Cisco Packet Tracer來練習用cisco cli設定交換器。
除了最重要的設定VLAN外,也要設定交換器的ssh連線和使用者密碼,整體來說是個相對簡單的作業。 Cisco Packet Tracer的使用介面
(待續…)