淺談網路管理
文/sylar 2011/9/6 上午 10:31:29
對中小企業來說,網路管理就是管理好提供對外服務的伺服器,並使它不中斷服務、以及維持企業內部網路連線正常功能,確保內部用戶端電腦主機能使用正常。就對大型企業而言,將前者的管理的設備範圍擴大,面對的是成千上百台的伺服器與系統、環環相扣的網路裝置、資訊安全設備,以及高變動性的用戶端電腦系統。
為什麼要作網路管理?
簡單來說,就是為了『降低因不當使用網路造成的風險』,此處所指的網路,泛指網路上的設備、系統,以及網路頻寬。設備與系統設定的疏忽,甚至是因為設定不當遭到入侵,都是造成網路問題的肇因。不正常的網路流量亦為警訊之一,封包流量過多過少,使用者都必須瞭解原因為何。所謂的不當使用,包括網路設備本身不正確、不安全的設定,例如系統未關閉不必要開啟的服務,或在架設伺服器過程中啟用了有安全疑慮的設定。
IT人員每天的日常作業除了處理終端使用者、解決企業建置新系統的需求、維護舊系統正常運作等日常工作外,還必須對相關網路等設備進行預算控制、協助決策者瞭解現有網路架構,評估是否有調整需求。在如此繁雜的工作內容下,要求管理者每天針對所有設備系統一一盤查是相當沒有效率且曠日費時的。因此,挑選一套可以做到集中管理、自動監控,並提供統計報表的網管軟體,不但能夠讓管理者達到事半功倍的效果,也能對網路架構有全面性與深入的瞭解,作出更能提升網路整體效能的調整。
網路管理管什麼?
企業網路基本上是由串接網際網路的設備、提供服務的主機,以及將主機、設備連結起來的網路所構成。網路上各個節點-包括用戶端主機的正常運作與安全,皆可能影響企業整體網路。在開始管理之前,最先完成的應是了解整個網路架構的圖解與細部說明,包括設備與系統串接的方式、建置使用的頻寬,以及各設備主機的IP位址等,之後網路的升級,設備添加或服務整合等,都應適時調整此狀態說明,以便在網路或系統問題發生或有緊急需求時,能在第一時間迅速瞭解整個概況、找出問題點,以利正確作出判斷。網路管理的標的物最基本的不外乎網路設備、系統主機與網路頻寬:
.網路設備:路由器、集線器、交換器、防火牆等等。
.系統主機:提供各種服務的主機,例如:網頁伺服器、郵件伺服器、檔案伺服器、資料庫,甚至是列印伺服器等。
.網路頻寬:網路流量瞬間過大或過小都屬於流量異常。
在基礎網路管理中,其實應該含括全面的安全管理與無線網路,這兩項也是現今網路管理人最容易忽略的。
.安全管理:檢視所有網路設備與系統主機的預設值,關閉不必要的服務、刪除不應該出現的程序(process),以及只開放必須的網路連結(可透過服務與伺服器本身的連線限制設定或使用本機防火牆)。
.無線網路設定與管理:變更預設密碼!!定期檢測與管理公司內部所有的無線網路據點,避免因員工自已架設的無線網路基地台而造成企業內部網路門戶大開。
.其它事項:定期備份並演練資料回復過程是否能正常運作、定期檢視目前使用的policy是否符合需求、安全性上的標準,以及是否有已經不需要服務的機器仍未完全撤離網路。
常見迷思
無論使用什麼樣的網管工具,管理人員常犯的錯誤之一就是頭痛醫頭腳痛醫腳。
筆者曾遇過,公司架設了自動偵測與告警系統,定時偵測重點主機,在發現異常時提出警告。當系統出現異常狀態、偵測系統無法連線重要伺服器,經三次連線不到,告警系統即發送手機訊息予當天值班的系統或網路工程師。狀況是:某台特定的機器-暫稱為A機器每到了晚上十一點便會出現負載過高狀態(偵測系統可設定負載值高於某設定值提出警告),致使值班人員收到手機簡訊通知。負責該機器的工程師處理方式是進告警系統作ack的動作,並要求不要再發送通知,對A機器本身的處理方式是:『經查測A機器本身沒有任何異常,晚上十一點就是固定會叫(發出異常訊息),一直以來未造成其它機器或網路的影響,因此無須處理』。這種錯誤的處理方式讓告警系統形同虛設,也是平白浪費公司每天的簡訊費用。事實上,最後經其它工程人員查證的結果發現問題點確實不在A機器本身,而在於與該機器連結的某台看似提供非關鍵服務的B機器,而且是在B機器造成企業部份服務無預警中斷時,偶然發現這樣的因果關係。若負責A機器的工程師在第一時間針對A機器詳加檢測後,再進一步深入查詢其相關連結的設備與系統,就能及早發現A機器的異常是由B機器所造成,或許能夠避免企業服務中斷的慘劇,將造成的傷害降到最低。
網路管理小工具
除了著名的Apache網頁伺服器、MySQL資料庫外,Linux也可以被用來被當成擔任網路設備的平台,例如使用Linux架設防火牆、Layer4 Switch等,無論擔任哪種功能,Linux預設提供了許多好用的網路自我檢測的小工具,供管理者在日常維護或Troubleshooting時使用。Linux管理者常用的網路工具舉例如下:
.ping:送出封包,等待目標對象回應。這是無論何種平台的管理人員都會用到的基本工具,用IP位址或網域名稱測試目標物是否有網路回應,也提供相當多的參數供管理者指定特殊查詢。
.traceroute:瞭解從本地端至目的端的路由,也就是從本機抵達目的地機器會經過哪些網路節點,可以利用這個工具檢測網路中斷點。
-----box-----
// 查看由本機連結至168.95.1.1共經過哪些節點,IPv4下預設使用60位元組長度的測試封包;IPv6則為80位元組
$ traceroute 168.95.1.1
traceroute to 168.95.1.1 (168.95.1.1), 30 hops max, 60 byte packets
<略>
4 tp-crs11.router.hinet.net (220.128.1.42) 33.482 ms TPDT-3011.hinet.net (220.128.1.102) 34.009 ms 35.194 ms
5 TPDB-3102.hinet.net (220.128.1.217) 35.620 ms 36.175 ms 36.595 ms
6 210-59-204-189.HINET-IP.hinet.net (210.59.204.189) 37.525 ms 23.460 ms 24.833 ms
7 210-59-204-171.HINET-IP.hinet.net (210.59.204.171) 50.752 ms 22.396 ms 22.945 ms
-----end-----
.netstat:可列出網路連線、路由表、網路介面封包的統計等等。系統管理者最常用來檢視主機當下聆聽的通訊埠有哪些,以及查看與該主機特定通訊埠連結的用戶端,例如有哪些主機正在連線至你的網頁伺服器。
-----box-----
// 瞭解網路當下狀態。參數tlnp分別表示:現在聆聽(l;Listen)的TCP通訊埠(t)有哪些,並以數字(n;number)表示,且必須顯示其程序(p;process)
$ netstat -tlnp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN -
tcp 0 0 :::111 :::* LISTEN -
tcp 0 0 ::1:5432 :::* LISTEN -
-----end-----
.nmap:同樣可用來掃瞄主機開了哪些通訊埠,得到的資訊較沒有netstat詳盡,但nmap能作到掃瞄整個子網路所有IP位址所開啟的通訊埠。
-----box-----
// 查詢本機開啟哪些通訊埠
$ nmap 127.0.0.1
Starting Nmap 5.21 ( http://nmap.org ) at 2011-08-02 15:30 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00083s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
111/tcp open rpcbind
5432/tcp open postgresql
Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds
// 對IP位址192.168.0.0-192.168.0.255所有機器執行ping的動作(-sP),確認機器是不是活著(啟動使用中),並以詳細模式(-v)列出清單
$ nmap -v -sP 192.168.0.0/24
Starting Nmap 5.21 ( http://nmap.org ) at 2011-08-02 15:32 CST
Initiating Ping Scan at 15:32
Scanning 256 hosts [2 ports/host]
Completed Ping Scan at 15:32, 2.51s elapsed (256 total hosts)
Initiating Parallel DNS resolution of 256 hosts. at 15:32
Completed Parallel DNS resolution of 256 hosts. at 15:32, 0.03s elapsed
<略>
Nmap scan report for 192.168.0.104 [host down]
Nmap scan report for 192.168.0.105
Host is up (0.00024s latency).
Nmap scan report for 192.168.0.106 [host down]
<略>
Nmap scan report for 192.168.0.255 [host down]
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.54 seconds
-----end-----
表列顯示192.168.0.105機器使用中(Host is up),且這256個IP裡共有三台機器『活著』(3 hosts up)。
./etc/services:可用來比對通訊埠與服務的對應關係。
-----box-----
// 查看/etc/services檔案內容,找到域名服務伺服器(name-domain server)預設開啟通訊埠為53
$ less /etc/services
<略>
domain 53/tcp # name-domain server
domain 53/udp
whois++ 63/tcp
whois++ 63/udp
-----end-----
網管技術知識
在Linux上架設網管軟體監控伺服器與設備,常用telnet或ping等工具測試目標主機上的服務,但當目標主機為網路設備,例如路由器或交換器時,我們可以利用機器上既有的SNMP通訊協定,瞭解設備的現有狀況。SNMP是一套業界普遍使用的標準,從SNMPv1、SNMPv2c,到可解決SNMPv1與SNMPv2c弱點的最新版本SNMPv3,皆各有其不同的功能(亦不全然相容)。大致而言,SNMPv1與SNMPv2c大同小異,而SNMPv3現今則僅有較高階的網路設備支援。
SNMP(Simple Network Management Protocol)
用來管理IP網路環境中所有裝置的一套通訊協定。可以支援這個通訊協定的裝置通常有路由器、交換器、伺服器、工作站,甚至是印表機、數據機這些設備。SNMP以系統變數的型式揭露管理資料,描述系統組態,而這些變數之後可以透過管理用的應用程式查詢。
所謂SNMP管理式的網路,基本上是由三個元素組成:被管理的設備、代理程式(在被管理設備裡跑的軟體),以及網路管理系統,也就是執行管理程式的軟體。代理程式,是內建於被管理裝置裡的網路管理軟體模組,主要的工作是將資訊轉為SNMP特定格式,或反向運作(將SNMP特定格式內容轉為可用資訊)。
SNMP本身沒有定義被管理的系統應該提供哪些資訊或變數,它是使用一套彈性的設定,可用的資訊都定義在MIB(Management Information bases)裡。
MIB(Management Information bases)
MIB可以說是一套虛擬的資料庫,用來管理通訊網路裡的entity。此資料庫為樹狀結構,裡面的資料是透過OID(Object Identifiers)所定義。它主要是用來指出可用於entity裡的一組完整的管理資訊,不過較常見於指出特定子集合-更精確的說法是MIB-module。MIB描述了裝置子系統管理資料的架構,使用含括OID的分級namespace。每個OID定義了可以透過SNMP讀取或設定的變數。簡單來說,MIB有自已的一套標準,但若廠商設計的設備所提供的特殊功能在標準之外,也可定義自有MIB。
最後
網管系統並非管理者的唯一依據,管理軟體顯示一切正常亦無法保證網路環境都在掌控之中。安全與順暢的網路環境,靠的是系統管理者的勤勞與警覺性,網管軟體所扮演的角色只是讓管理人員能夠更容易掌控網路使用狀態,以便在問題發生時能夠在最短的時間內協助找出問題所在的媒介,進一步協助企業建置更全面性、更自動化,且效率更好的網路環境。