在路由器內用腳本實現網絡撥號


網絡撥號備份是網絡解決方案中的一種非常實用的方法,具有很高的性能價格比 。主流路由器內IOS提供了一種腳本語言,可以根據不同的需求進行靈活的網絡配置 。這使我們可以用腳本語言解決特定情況下的特定問題,筆者利用腳本語言解決了撥號備份這個比較復雜的問題,并總結了一種通用的方法來解決此類問題,現在將這種方法介紹給大家, 以便共同交流 。
問題的提出
筆者所在的單位設計了一個撥號備份的網絡方案,所用的撥號客戶端路由器為Cisco 1720和Motorola的3225、3265的調制解調器,中心的撥號服務器為Cisco 3640 ,內置異步Modem 。設計要求當DDN專線出現網絡故障,需要傳輸數據時自動啟動撥號備份,在180秒內沒有數據傳輸時自動掛線 。將設備正確連接,路由器和調制解調器進行常規配置后發現: 使用Usr_courier 型號的Modem 工作完全正常,而使用Motorola 3265的 Modem出現不撥號現象,使用Motorola 3225不但出現不撥號問題,而且應答來電 。
原因分析
如何使客戶端Motorola的3225、3265 的兩種調制解調器與中心Cisco路由器內置的Modem協調工作?Cisco 路由器默認配置只支持下面的調制解調器型號: Codex_3260、Usr_courier、Usr_sportster等17個型號 。其余的以Default類型對待,不與此標準兼容的調制解調器就不能正常工作 。通過AT配置命令集的對比,發現Motorola的3225、3265 的兩種調制解調器與Codex_3260或Default類型要害參數有部分差異,所以自動匹配的配置方法在這種情況下就不能正常工作 ?,F在考慮采用一種比較靈活的方法來解決這個問題: 根據Modem AT配置命令集,在路由器內編寫chat-script撥號腳本,使撥號的命令序列和Modem撥號控制命令序列完全匹配,從而解決此類Modem不兼容的問題 。
解決方法
1. 編寫客戶端的腳本(以Cisco IOS 12.0版本為例) 。
腳本內容為:
chat-script call “ ”“ATS54=03HS0=0&D3” OK “ATDT T” TIMEOUT 60 “CONNECT” d
這里“ATS54=03H”用來設置Modem 接收到 DTR變低后掛機;“S0=0”表示來電不應答;“&D3”表示流量控制方式為 hardware;“OK”意味著Modem響應命令序列后反饋“OK”; “ATDT T”為撥叫端口內由dialer map設置的電話號碼;“TIMEOUT 60”表示等待Modem撥號握手成功,超過60秒,則超時; “CONNECT”意味著等待的反饋信息內容為“CONNECT”; “d”參數表示將命令方式轉換為數據傳輸方式 。
2. 掛線時用下面的腳本解決客戶端調制解調器待機時不應答問題 。
chat-script reset “”“ATS0=0” OK d
也可以用:modemcap entry modem_3225:FD=&fs0=0
這里增加一種Modem: modem_3225 ?!癋D=&f”表示恢復默認參數; “s0=0”表示將默認參數由應答方式改為不應答,這樣做的目的是當掛線時,路由器發送的恢復出廠參數命令序列內自動攜帶了應答方式的設置 。
3. 測試腳本 。
語法:#start-chat 腳本名 端口類型 端口號
例如:
#termino monitor ;顯示系統信息
#debug chat ;打開腳本調試
#start-chat reset tty 1
#start-chat call tty 1
4. 撥號客戶端有關撥號的配置文檔如下:
chat-script call “ ”“ATS54=03HS0=0&D3” OK “ATDT T” TIMEOUT 60 “CONNECT” d
modemcap entry modem_3225:FD=&fs0=0
chat-script reset “”“ATS0=0” OK d
interface Serial0
physical-layer async
no ip address
no ip directed-broadcast
encapsulation ppp
dialer in-band
dialer rotary-group 0
!
interface Dialer0
ip address 192.16.251.25 255.255.255.0
no ip directed-broadcast
encapsulation ppp
ppp authentication chap
dialer in-band

推薦閱讀