2005-12-09

Cisco router 實作 TFTP Server 備份

關於 TFTP 的介紹請參照TFTP,抓下來後直接安裝,都下一步就可以,安裝完畢記得啟動。

首先使用它的用意是要備份 router 上的 startup-config 的內容,
我們將實作 PC -> Switch -> Router 的方式來實作

首先 Router 請參照[ Cisco Router 設定 ]一文設定,由於這次是走 Ethernet Port,所以在 interface 的選擇上要注意一下,要注意自己的 Router 跟 switch 介接的 port 的 interface name,可由[Router#show int]的方式了解 Router 上有哪些 interface,以即它們的名稱。

設定時要注意一件事,要用來備份的那台 PC,本身必須要跟上面那台 Router 在同一個網段(才找的到對方嘛),Eg:

Router 的 int fa0 設定為 192.168.12.1/24 這個網段,這時要用來啟動 TFTP Server 的 PC 也必須在同一網段,Default Gateway 則直接指向 Router,若要備份到其他與這台 Router 串連的 Router,則只要設定好 Roter 間的 RIP,讓彼此看的到對方即可。

環境 ready 後,指令如下:( 都是在 enable 模式下 )
備份出來,
1.Router#copy startup-config tftp //將 startup-config 備份到 tftp
2.按下 Enter 後,router 會問你 tftp server 的位址,直接輸入 ip 即可(eg:192.168.12.2)
3.然後會問你要備份的檔名,(預設是[router_name+confg],可自己改或按 Enter 用 default)
4.這時就會開始備份。

還原回去的動作剛備份相同,只是把 1. 的指令改成 copy tftp startup-config,然後一樣會問你 source address 跟 config name,最後問你目的端名稱,完成後即完成還原的動作。

P.S.預設 TFTP 會將備份資料夾擺在 Program File 的安裝路徑裡,可能會有讀寫權限的問題,若發生無法備份的問題,可以試著進 TFTP config 修改(最好一開始就改掉)
P.S.S 若在 windowsXP 上,請注意 XP 內建的防火牆會擋掉這個 access,因為 TFTP 預設是走 69 port,對系統來說是不可以開的,如果有安裝其他的防火牆軟體應該也是會發生這個問題。

2005-12-08

Cisco 2970 設定 vlan 的方式

觀念:
1.Cisco 的 vlan ID 範圍為 1 ~ 4094,
2.vlan ID 1 是出廠所有 port 的預設 vlan (不能動),
3.事實上 1002 ~ 1005 這 4 個 IDs 也有其特殊用途,所以也不能動(請參照原廠 document)
4.第 1005 ~ 4094 叫 Extended-range,必須要透過 VTP 的方式使用,而且資料並不存在 vlan database,(基本上有 1000 個 range 可以用,應該是夠了)
5.切割 vlan 一定要在 enable 模式下

首先先把要用的 vlan 規劃出來,

Step1.
//進入 vlan database 下
Switch#vlan database

Step2.
//輸入要建立的 vlan ID 跟 name,語法是:[vlan {id} name {name}],基本上只要不衝突到,沒有規定一定要照順序設 id,name 也不能衝突
Switch(vlan)#vlan 2 name test2 //設定了在 vlan id 為 2,name 叫 test2 的 vlan

Step3.
Switch(vlan)#exit //離開

這時會回到 enable 模式下,輸入

Switch#show vlan

此時會秀出 2970 上的 vlan 訊息,eg:

VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Gi0/1, Gi0/2, Gi0/3, Gi0/4
Gi0/5, Gi0/6, Gi0/7, Gi0/8
Gi0/9, Gi0/10, Gi0/11, Gi0/12
Gi0/13, Gi0/14, Gi0/15, Gi0/16
Gi0/17, Gi0/18, Gi0/19, Gi0/20
Gi0/21, Gi0/22, Gi0/23, Gi0/24
Gi0/25, Gi0/26, Gi0/27, Gi0/28
2 test2 active

我們多了一個 VLAN ID 是 2,name 是 test2,但是目前所有的 port 都還劃給 VLAN 1

在來是要 assign port 給新的 vlan,

Step1.
//進入 terminal 模式
Switch#configure terminal

Step2.
//在來輸入要做變動的 interface,這個名字就是上面顯示在 Ports 欄位的名字
//如果只是要移動 1 個 interface(假設是 Gi0/1 這個 Ports)
Switch(config)#int Gi0/1
//如果要移動 n 個連續的 interface(假設 Gi0/13 ~ Gi024 都要移到 vlan 2)
Switch(config)#int r Gi13-24

Step3.
//這時會進入 interface 變更,如果是單一個,提示會變成"Switch(config-if)#",多個則是"Switch(config-if-range)
//然後設定這個(段) interface 的 mode 為 L2 access port
Switch(config-if-range)#switchport mode access

Step3.
//然後要決定這個(段) interface 要給哪個 vlan (我們要設給 vlan ID 2)
Switch(config-if-range)#switchport access 2

Step4.
Switch(config)#end //離開

這時回到 enable 模式下,一樣輸入:

Switch#swho vlan

此時就可以看到分割好的 vlan 各有哪些 port,eg:
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Gi0/1, Gi0/2, Gi0/3, Gi0/4
Gi0/5, Gi0/6, Gi0/7, Gi0/8
Gi0/9, Gi0/10, Gi0/11, Gi0/12
2 test2 active Gi0/13, Gi0/14, Gi0/15, Gi0/16
Gi0/17, Gi0/18, Gi0/19, Gi0/20
Gi0/21, Gi0/22, Gi0/23, Gi0/24

最後把改變後的結果儲存起來,

Switch#copy running-config startup-config
Destination filename [startup-config]?
Building configuration...
[OK]

以上,完成了基礎的 vlan 分割。

2005-12-07

Kaspersky Anti-Virus Personal 版會衝 XP 的 PPPoE 撥接

ISP:Hinet
我用的是 5.0.237,這個問題發生過兩次,

第一次是怎麼撥都顯示無法連線,打電話去客服詢問,客服直接問我是不是有裝"卡巴斯基",我回答有,他就叫我移除掉再重裝,照做後問題解決了。

那次的問題我推論是 Kaspersky 在更新過後要我 reboot 我沒理他,隔天就發生這問題,所以之後的更新如果要我 reboot 我還是乖乖給他 reboot。

這次的問題就鳥了,一樣開完電腦一撥,居然出現 TCP/IP 資源不足的錯誤訊息。一開始我還以為難道中木馬?後來看工作管理員,應該還算正常,就將電腦 reboot 再試,結果出現一樣的訊息。

基本的重開 atu-r 跟確認電話暢通的動作做完,原本打算打客服電話,但是想起之前的問題,不信邪的把 kaspersky Exit 掉,再撥;果然正常上線了,上線後再開 kaspersky 就好了,真是詭異的程式。

2005-12-03

PHP 在 Big-5 裡處理中文字串切割

一般若是沒裝 mbstring 這個 function 的狀況下,直接以 substr 切割,會有最後一碼中文字被切成一半的問題。

這時一樣先做 substr,再把切割過的字串丟進底下的 func,preg_replace 會先把完整的雙byte中文換成空白,然後判斷字串裡是不是還有中文的前一byte(畢竟被切割掉的一定後一byte),沒有的話就傳回原字串,有的話就傳回原字串再 -1 個 byte,以確保切割過的字串不會出現亂碼

function end_big5($src){
$str = preg_replace("/[\xa1-\xf9][\x40-\x7e\xa1-\xfe]/","",$src);
return (preg_match("/[\xa1-\xf9]$/",$str)) ? substr($src,0,-1) : $src;
}

當然以上做法算是治標之道,尤其是 preg_replace 除了有效能上的問題,也有處理雙 byte 編碼設定的問題。

所以最好是裝 mbstring function 組或改用 UTF-8 來解決問題。

PHP 官方站
Multibyte String Functions

:::zonble’s promptbook » 一片空白的UTF-8網頁:::

如果你用了 Blogger 發現在 IE 裡一片空白,那麼請參考這一頁的內容
:::zonble’s promptbook » 一片空白的UTF-8網頁:::

另外,請到個人設定裡的[範本]->[修改目前的],把[<$BlogMetaData$>]這一行拿到<head>跟<title>中間,讓 IE 能優先讀到<meta>裡的字元編碼設定。

總之一句話:"如果要讓 IE 能正常的 parse UTF-8 網頁,務必要讓 IE 在讀到任何中文前先讀到 <META> 的編碼設定"。

FireFox 在這一點的表現,比 IE 好太多了。

2005-12-02

Cisco Router 設定 - 學校 CCNA 上的內容

環境: 3 顆 router (RA,RB,RC)
網段:192.168.10.1/24 192.168.11.1/24
目的:透過 RB 來做 RA 與 RC 間的 routing

步驟:

//清掉資料
>en
#erase startup
#reload

//設定
Router>en
Router# config t
Router(config)# hostname RA ( 變更 hostname )
Router(config)# int S0 ( 操作 serial 0 的介面 int => interface)
Router(config-if)#ip address 192.168.10.1 255.255.255.0
RA(config-Router)#no shutdown
//如果接線是 DCE
Router(config-if)#clock rate 56000 ( 發送端每 56000s 同步一次 RIP )
ctrl + z

RA#show int S0 //可以秀出 interface S0 的狀態

*DCE 跟 DTE,必須清楚跟 router 上 serial port 接的 cable 線是屬於 DCE 或 DTE
//設 RIP 資料,每一台 Router 都要設定自己的 RIP,RIP 範圍為自己所擁有的網段,
//這樣若有別台 router 的封包 routing 過來,才有辦法將它正確 route 到所屬網段上
RA#config t
RA(config)#Router RIP
RA(config-Router)#Network 192.168.10.0
RA(config-Router)#exit
RA(config)#exit

//其他台設定大同小異,只是要注意 RIP 的設定

RA RB RC
<==>S0 -------- S1<==>S0 -------- S1<==>
| | | |
192.168.10.1/24 | 192.168.11.1/24 192.168.11.2
192.168.10.2/24


RA 設定了 192.168.10.1/24 的網段,
RC 設定了 192.168.11.2/24 的網段,
RB 因為要溝通 RA 與 RC,所以它的 serial port S1 要對接 RA 的 S0,S0 要對接 RC 的 S1
所以 RB 必須要設定兩個介面的 RIP 與網段,才有辦法幫 RA 與 RC 做 routing

設定完後以 RC ping RA 的網段,以 RA ping RC 的網段,會通就是正常啦

MySQL Cluster 初步 Study ( 內容有錯誤,請指教 )

#Mysql 5 up
#內容有錯誤,請指教

MySQL 的 Cluster 是在原本的 MySQL Server 架構下建立一個 in-memory 的 "clustered storage engine"(術語 NDB)

每一個資料庫在這個架構下都稱為一個"node",而這些"node"必要有一台"management server"來管理,而除了將資料庫成為一個"data node",還會產生一個叫"mysql server"的"sql node",以供應用程式 access,當資料透過"sql node"寫進某一個"date node",這時就會將資料由這個"data node"立即的更新到其他的"data node"

*所謂的"management server"指的可以說是一個 mysql cluster 裡的行程,也可以算是一個"node",而且它必須是優先啟動於其他"data node",因為其他的"data node"會讀取它的 configuration data,並且透過它來管理每一個"data node"跟備份還有 log

*"這裡的 data-node" 指的不是單一台電腦,而是在指 mysql cluster 的 process,也就是說,每一台單一實體 mysql server,可以建立許多個"Mysql Cluster 的 data node"

*sql-node指的則是用來跟 data-node"溝通"的管道,在 Mysql Cluster 的架構下,application 是透過 sql-node 來 access,並非直接對"db" access

而NDB也可以設定 failover (意思就是當某一台掛掉,另一台可以接續它的工作繼續服務)跟 load-blance

所以大概得出的結論
1.Mysql 以 process 的方式來"模擬" Cluster
2.因為每個 data-node 都是一個 process,所以所等於是先在 memory 動作,之後它的 cluster 機制會再自己寫回實體 db
3.因此可以達到單一實體 server 做 mysql cluster...( 好像蠻噁心 )

MySQL Cluster Overview
Basic MySQL Cluster Concepts