在資訊安全的考量之下,許多企業花了大量的人力和物力來建置VPN。在建置的過程中,難免須要添購許多設備。但在建置完成後,MIS或網管人員往往就把價格昂貴的Cisco Router丟在機房,讓它默默地為企業犧牲奉獻。殊不知,Cisco的Router之所以昂貴,除了它提供為人所稱道的穩定性之外,其實還提供了許許多多看似不起眼卻強大的功能。
透過Cisco Router中這些看似不起眼卻強大的功能,不只可以輕易地滿足某些需求,更可以進一步將這些功能加以變化與結合,以發揮其最大的功效,進而減少網管人員和公司的人力及財務負擔。
以下列舉三個一般網管人員較少使用的功能,並一一介紹其設定方式以及如何作為進階的應用。此外,也會舉例說明其應用的場合,並且實際測試該功能是否能夠有效地運作。以下所要介紹的三個功能分別為IP SLAs、Cisco IOS Embedded Event Manager(EEM)及Cisco IOS Scripting with Tcl。
為了便於說明,在此建立一個簡單並且常見的架構,圖1是一個典型的VPN架構圖。網管人員在Headquarter和Branch之間已經建立VPN的連線。Headquarter所屬電腦的預設通訊閘道(Default Gateway)為路由器的IP位址(192.168.111.254),封包一律先送到路由器,再由路由器來決定VPN的網段要往哪一個Hop發送。
此外,網管人員為避免VPN線路斷線時影響功能的運作,另外規劃了透過Internet線路建立備援的機制,如圖1左下方虛線所示。
|
▲圖1 典型的VPN架構圖。 |
但是,實際進行建置時,路由的調整往往很麻煩並且很容易出錯,倘若路由無法如預期運作時,難免會增加網管人員的困擾。因此,在建置時可以使用以下將要介紹的IP SLAs來加以輔助,以便順利完成透過Internet備援VPN的建置。
Service Level Agreement(SLA)簡介
SLA的全名是Service Level Agreement,顧名思義,是用以確認服務等級是否達到要求的標準。可以簡單地利用ICMP Echo的方式,來確認線路是否有Packet Loss的情形,從而測試線路是否有斷線。其設定方法如下:
以ipIcmpEcho的方式進行測試,測試目的IP為172.16.0.6,所帶的來源IP為172.16.0.2,每10秒測試一次,指定即時開始測試,並且這個測試是永不停止的。在設定完成後,可以驗證一下成效:
由此可以看出Round trip time(回應時間)為176毫秒(ms),並且也得到開始測試的時間、上次的測試結果為何、目前的成功次數等相關資訊。此外,Latest operation return code的部分在之後介紹EEM功能時也會再次使用到。目前已經取得SLA的資訊,接著可以利用它來調整路由,這裡所要使用的是Static Route Tracking機制。
簡單來說,在設定靜態路由時,可以在設定時加上track,讓它去track object的狀態是否為OK。若為OK,則保留此路由,若不為OK,則將此路由從路由表中刪除。設定方式如下:
設定一個track的object,其track的是前述ip sla的reachability。接著,設定往目的地VPN網段的靜態路由,並且將剛設定好的track加在這個靜態路由之上。接著,驗證其成果。在斷線之前,可以看到往192.168.112.0/24的靜態路由在ip sla 1狀態為OK的狀況下,確實是存在的:
接著,把遠端VPN路由器的對口IP 172.16.0.5所屬的Interface shutdown模擬遠端VPN斷線。
此時我們可以看出,ip sla的部分已從原先的OK變成Timeout,「Number of failures:」也從0變為1。在此同時,原先存在的192.168.112.0/24的靜態路由已經從路由表中消失了。此時若路由器收到要前往192.168.112.0/24的封包時,路由器就會依預設路由(0.0.0.0/0)所指派的next hop 192.168.111.2發送。在此時,網管人員所規劃的在VPN線路斷線時的Internet備援機制,就能正常的運行了。
接著介紹Embedded Event Manager(EEM)。EEM是一個有力且有彈性的子系統,它提供了即時網路事件偵測及自動運行機制,能讓管理者具有調整網路設備行為的能力以符合業務上的需求。
Cisco IOS Embedded Event Manager(EEM)介紹
EEM的功能相當強大,先用一個比較簡單的範例來加以介紹,讓讀者可以輕易地理解EEM。目前FTTB、FTTH線路的價格已經慢慢地平民化,因而逐漸壓縮到傳統專線的市場。 但相較於傳統專線,FTTB的線路在斷線時,無法讓所接取的Interface呈現interface down或line protocol down的狀態。因此在線路斷線時,會造成無法切換至備援路由的問題。
有鑑於此,ISP多半採取導入動態路由或者使用前述的IP SLAs,來協助進行路由切換。但不管是動態路由或IP SLAs,在線路有頻繁瞬斷的情形時,會造成路由不斷地切換,從而造成路由反覆收斂,而導致使用者及管理者感覺到網路似乎在運作上有不穩定的情形。
在這種狀況下,可以使用EEM的機制,並且結合前述的IP SLAs,在Latest operation return code狀態為Timeout時,將接取FTTB線路的Interface加以shutdown,讓流量走到備援線路上。待管理者確認線路穩定時,再手動(或自動)將interface no shutdown,以恢復網路的正常運作。這裡所示範的架構同樣如圖1所示。EEM設定方式如下:
首先,建立一個applet,名稱為track_1。接著,設定所要監控的條件:Tunnel0斷線兩次。
往下就是一般的cli command,在偵測到Tunnel0斷線兩次之後,IOS自動將「Interface FastEthernet 0 」shutdown。
在此要先說說明一下,Cisco在EEM 2.2之後的版本才提供Object Tracking的功能,才能偵測到之前所設定的track object狀態,但這也代表著若讀者想使用此功能就必須升級IOS的版本。
為此,筆者採取一個變通的方法:在兩台用戶的路由器之上建立一個Tunnel Interface,利用Interface的up/down來觸發EEM的機制。
這麼做除了避免必須升級IOS的困擾之外,同時也能滿足之前的規劃:在線路不斷up/down時將其介面加以shutdown。
此外,在action後面的數字,可以採取更容易識別的標示,例如1.0、1.1、2.0等。管理者可依自己的使用習慣或需求加以編號。可將同一層的設定用同樣的數字作開頭,或者同一個applet使用同一個數字作開頭,以易於辨識。
此外,在設定Tunnel Interface時,須注意Destination IP的設定,一般是設定對方路由器的WAN IP,因此在設定時須強制設定往對方WAN IP的靜態路由,必須往VPN的介面發送(本例為Interface FastEthernet0),避免此段IP從備援路由連通,導致偵測異常。綜合以上所述,增加的設定如下:
接著讓VPN線路連續斷線兩次,以驗證FastEthernet0是否真的會被shutdown。測試的log如下所示(記得打開logging buffered debugging):
此外,EEM也內建並提供了一些比較方便的功能。例如,在前述的event manager applet track_1設定上,再加上以下的設定:
分別指定Mail Server的IP位址、收件人及寄件人的電子郵件信箱,以及電子郵件的主旨等。就可以在線路不斷up/down的時候,寄一封通知信給管理者。
當然,Mail Server的Relay設定,記得要允許Relay來自路由器IP的電子郵件。接著,同樣地讓線路up/down兩次以上,不久後就可以在管理者的電子郵件信箱收到以下的來函(圖2)。
|
▲圖2 VPN線路up/down時的通知函。 |
由於筆者在設定路由器時忘了校時,因此時間會與目前的時間有所出入。讀者在實作時務必要正確地設定路由器的系統時間,或者利用NTP伺服器進行校時。
Cisco IOS Scripting with Tcl說明
最後要介紹的是Cisco IOS Scripting with Tcl。Cisco在IOS 12.3(2)T之後開始提供TCL Shell的支援。它可以讓管理者自行撰寫及開發TCL的程式,藉以執行一些重複性的操作,並增加管理設備時的彈性。
例如進行大規劃的ping動作,或是執行snmpwalk的操作等,又或者在線路斷線、線路品質不良、ACL及設定被修改時提供寄送電子郵件通知管理者,或者發送主動告警的功能。
不過,要特別注意的是,TCL同樣也增加駭客上傳程式製造後門的風險,管理者須特別小心。以下同樣用一個很簡單的範例來介紹基本TCL的操作。
在此例中,寫了一個很簡單的Script來ping某一個IP網段。須注意的是,所輸入的僅有#右邊的部分。在這個Script中宣告一個變數address,並且執行ping的指令來ping這個變數中所有的成員。
這個範例看起來不太實用,但管理者可以把它寫成Script,如此一來,若須要緊急大規模檢查IP網段時就會很方便。另外,在某些特殊場合,假若要測試Trunk Port所能通過的VLAN數量時也很實用。可以設定4,096個Loopback IP Address,分別綁在不同的VLAN上,並以ping的方式確認是否能ping得到。
接著講述EEM與TCL script結合的部分。事實上,EEM Policy可以透過兩種方式進行定義,第一種是如之前示範的使用Applet來加以設定。很明顯地,使用Applet的方式較適用於簡單的架構和操作。另一種則是透過TCL script,此方式適合用於需要複雜邏輯判斷的場合或是管理者需要靈活運用的時候。
用一個操作範例來加以說明,在網頁「http://forums.cisco.com/eforum/servlet/EEM;jsessionid=A9CF0A9E2B22048D7D43C67A7B4F6C2D.SJ4A?page=search_results&fn=search&catId=0&count=20&skip=0&sortBy=3&order=DESC&mode=browse」有許多Script可以下載運用。
在search欄位輸入「Reload Configuration Diff」。下載此檔案後,將其解壓縮,並將其中的re_load_diff.tcl上傳到路由器的flash中。接著新增以下的設定:
然後,更改一下路由器的設定,並刻意不存檔就輸入reload這個指令。此時便會觸發所指定的re_load_diff.tcl程式。
它會提示使用者目前的configuration與設備中儲存的configuration file不同,使用者是否要檢視startup和running configuration之間不同之處?如果行首為+號,代表此指令在startup configuration中不存在,而行首為-號,則代表在running configuration中不存在(代表已被刪除),使用上和Unix-like系統中的diff相同。
接著它會提示使用者是否要儲存此變更。之後,就看使用者是否要儲存變更後再進行reload,或者逕行reload設備。
結語
本文介紹了一些Cisco Router中較少被使用的功能。IP SLAs不僅可讓管理者觀察線路品質,也能作為路由切換判斷的依據。EEM可以輕鬆地達成一些自動化的功能,減少需要人力操控的部分。而TCL則更為強大,可以做一些更複雜及精細的操作,讓設備更安全更好用。
希望每個讀者都能適當地應用這些強大但鮮為人知的工具,讓公司的網路品質更好,也能減少一些日常例行作業的工作,讓網路管理者能夠投入更有生產力及更具有產值的工作項次,藉以提升自己及公司的產值。