Posts Tagged With: RouterOS

[RouterOS] 偵測 IPSec 無法連接


先前介紹

[RouterOS] 雙 WAN 備援線路

是為了替

[RouterOS] 建立與 FortiGate 的 IPSec 連線

建立備援線路,當光纖中斷時,自動改用 4G 上網,再觸發 IPSec 重新撥號。

理想很美好,現實很骨感。

我大概每分鐘將光纖網路插入、拔除的連續測試下,大部分情形,從光纖切換到 4G 約 2 秒,IPSec 重新撥號約 3 秒,從 4G 切回光纖,約 12 秒,IPSec 重新撥號約 3 秒。

如果一直穩定都是這樣,基本上是可以接受的,但麻煩就發生在有時 4G 切回光纖時,IPSec 超過 3 分鐘並未觸發重新撥號,導致 LAN 到 WAN 沒問題,但是透過 IPSec VPN 到機房異常。我是判斷可能是 4G 備援線路並未中斷,只是優先緒比光纖差,所以設備認為還連得上線,不算中斷。

首先查了資料,可以使用內建的 netwatch 去偵測網路,可以觸發斷線、恢復連線、測試等三種事件,官方說明如下:

Manual:Tools/Netwatch

Netwatch

我測試了幾個 IP ,分別用不同的方法:

netwatch 清單
1. VPN 內網的總 Gateway (10.0.0.1)

想法很簡單,不論走光纖還是 4G ,只要連不到 VPN 的 Gateway ,砍掉 IPSec ,讓系統自己連線。

但是 netwatch 不能指定從哪個介面 (Interface) 出去,所以造成 netwatch 本身就連不到 IPSec ,直接胎死腹中。

2. ISP 業者的 DNS (168.95.1.1)

想法是能上網,總能連線到 ISP 業者的 DNS 吧?結果不管是走光纖還是走 4G ,都能順利連線,退而求其次,改連線測試目標為光纖出去後第一台 ISP 業者的 Gateway ,測試結果仍是走光纖還是走 4G ,都能順利連線。所以也沒用了。

3. 光纖區網的上層 Gateway (172.16.60.1)

這個倒是滿順利的,我插、拔網路線都會引起對應事件,但這邊有個問題是,要是我 Router 沒事,出事的是光纖數據機或是 ISP 業者機房迴路,對 netwatch 來說,我這個偵測根本沒用,RouterOS 的硬體多半是工業級,可以耐溫到 70 度,但光纖數據機是商用級,只能耐溫到 40 度,經常斷網也是光纖數據機當機造成的,所以效用不大。

system log

從上述 log 可以看出,網孔1 的網路線拔除後,連不上 172.16.60.1 ,就把 IPSec 連線砍掉 (確保改由 4G 連線),系統自動連接後,把網孔1 的網路線插回,又能連上 172.16.60.1 ,仍把 IPSec 連線砍掉 (確保改由光纖連線)。

既然有 netwatch 做思路,我乾脆自己寫 script 來解決偵測問題,也是一種方案。一樣,翻出官方文件來:

Manual:Scripting

我寫兩個公用函數,一個主要功能是在指定介面下呼叫 ping 進行連線測試,一個主要功能是偵測連接不上 VPN 的 Gateway 時,把 IPSec 連線砍掉。

:global CheckConnectHost do={
   :if ( [/ping $Host interface=$Interface count=5 interval=100ms]=0)  do={
      :log warning "[自訂log識別字串]: $Interface connect $Host fail. ";
      :return false;
   } else={
#      :log info "[自訂log識別字串]: $Interface connect $Host success. ";
      :return true;
   }
}

:global CheckIPSecConnectHost do={
   :global CheckConnectHost;
   :if ( [$CheckConnectHost Host=$VpnHost Interface=$Interface]=false ) do={
      :foreach i in=[/ip/ipsec/active-peers find remote-address=$RemoteHost] do={
        :log info "[自訂log識別字串]: IPSec Active-Peers $RemoteHost STATE is $[/ip/ipsec/active-peers get (i) state]. ";
         /ip/ipsec/active-peers kill-connections;
}
      :log warning "[自訂log識別字串]: IPSec down, kill IPSec connection.";
   }
}

公用函數每次重開機需要載入記憶體,所以用開機排程執行:

開機執行排程載入 ScriptCommon

再利用排程指定從介面 BridgeLan (區域網路) 連接 IPSec VPN Gateway:

利用排程檢查遠端 VPN Gateway 是否正常連線

內建 ping 功能可以指定網孔或是 Bridge 的介面來進行連線測試,若有必要,也可以指定用網孔進行 DNS 連線測試,會比 netwatch 好用,但最終還是要看 IPSec 能不能連線,所以我沒做複雜的邏輯分別測試不同的 WAN ,直接測試 IPSec 能否正常連線,不能就砍掉讓系統自動重建。

原則上,在光纖斷網,會自動移轉到 4G ,然後自動重新撥號,我這段只是針對自動變化行為不正常時,強制斷線重連,沒有這段在一般狀況下不會有感覺,我是想,是不是因為我持續插拔網孔,讓系統的 timeout 還沒滿足,就被我當成異常… 但我不希望 IPSec 斷太久,所以超過 90 秒還連不上,我也強制中斷讓他自動重新建立連線了。

Categories: 資訊管理, 工作點滴, 技術分享 | 標籤: | 發表留言

[RouterOS] 雙 WAN 備援線路


先前介紹

[RouterOS] 多孔上行設定

的本質是一個 WAN ,但避免網路線路出問題,所以透過 Bond 將多網孔綁成一孔來上行,得到備援線路機制。

這次介紹的是在已經有 WAN 的情況下,再加一路 WAN 來進行不同網路間的備援,一般情況會選用不同的 ISP 業者,避免單一業者出問題後,備援網路也不通,這次是以 4G 網路做備援,要哪家業者,接哪家的 SIM 卡即可。

開始之前,可以先看一下原廠的文件:

高可用度解決方案 High Availability Solutions

網路架構大概是這樣:

網路分類BridgeGateway
光纖網路WANBridgeWan172.16.60.1/24
行動網路WANBridgeLTE172.22.0.1/24
區域網路LANBridgeLan10.1.*.1/24

行動網路我選擇一台工業級的 4G Router ,其他設備參閱上面連結的文章,網路設備我用停用的庫存備品 RB450 來測試,RouterOS 版本為 v7.7 。

在一般範例通常不用 Bridge 而用網孔,用 Bridge 的好處是可以多孔設定,屆時網孔故障後可以快速換孔,必要時可以做 Bond 來多條網路線共用,所以我習慣用 Bridge ,當然用了 Bridge 效能會慢一點。

這篇主要介紹新增第二外網,所以只有一個外網的基礎設定就不再介紹,請參考相關前文。若有需要,可以依流程繼續新增更多的外網。

首先新增一個 Bridge,取名為 BridgeLTE ,其他使用預設值不用動。

新增一個預設的 Bridge

指定網孔加入 BridgeLTE,這邊是測試,就只加入一個網孔,如果網路線只有室內配線通常可以不考慮多孔,也就是一般辦公室環境。工業級設備通常會跨到好幾個不同接地的區塊,就要考慮因浪湧造成直接連接的網孔被擊穿故障,所以就會考慮多孔備援的情形。

網孔2 加入 BridgeLTE

在 Interface List 中,將 BridgeLTE 加到 WAN 。

Interface List

設定 BridgeLTE 在 4G Router 下的 LAN IP,這樣如果有多個網孔,隨便插一孔,也會用 BridgeLTE 的 IP 上網。

LAN IP 設定

在 Route 加入外部 IP 的 Gateway 。優先順序是靠距離 (Distance) 調整。如果是要走負載平衡,也就是同時生效的時候,通常會跟 BridgeWan 相同,在 RouterOS 預設為 1 ,這邊希望 BridgeLTE 是備援架構,BridgeWan 若正常為優先通道,所以 Distance 設定為 2 ,優先順序可以依照此原則調整。

加入 Route 的 Gateway

基本上到這裡就設定完畢,可以透過網路線插拔後,執行 traceroute (內建工具) 或在 Windows 下執行 tracert 來觀測 RouterOS 經過不同網路連接到目的地。

Categories: 資訊管理, 工作點滴, 技術分享 | 標籤: | 1 則迴響

[RouterOS] 建立與 FortiGate 的 IPSec 連線


看這篇前,最好把這一篇看一下,重複的就不說了:

[RouterOS] 建立一主二從的 IPsec 通道

我在 IDC 機房有台 FortiGate 的防火牆,已經有現成的 IPSec 的 Server 端,我需要從 Client 端的 RouterOS 建立規則進行連線。

測試的版本是 winbox 是 v3.37 版,RouterOS 是 v7.7 版。

我直接把前篇文章的 p002 進行還原,省得重新設定,所以最好把前一篇看過。

1. 建立 Profile

在 FortiGate 的設定是:

FortiGate Phase 1 Proposal

所以在 RouterOS 設定這樣:

RouterOS Profile 的設定

其中,Diffie-Hellman Group 5 的意思,稍微 Google 就能查到,這邊只貼出 5 ,其他的自己上網找:

Group 5 to use a modular exponentiation group with a 1536-bit modulus.

所以在 RouterOS 選擇 modp1536 即可。

2. 建立 Proposal

在 FortiGate 的設定是:

FortiGate Authentication
FortiGate Phase 2

在 RouterOS 建立一個新的 Proposal ,因為我上面用 IKEv1 ,所以取名成這樣,相關參數參考上方圖「FortiGate Phase 1 Proposal」、「FortiGate Authentication」

RouterOS Proposal 的設定

3. 建立 Peer

在 RouterOS 建立一個新的 Peer ,Address 輸入 IDC 機房 IPSec 伺服器的 IP,相關參數參考上方圖「FortiGate Authentication」

RouterOS Peer 的設定

4. 建立 Identity

在 RouterOS 建立一個新的 Identity ,Secret 輸入上方圖「FortiGate Authentication」中的 Pre-shared Key,My ID 輸入上方圖「FortiGate Authentication」中的 Peer ID

RouterOS Identity 的設定

5. 建立 Policy

在 RouterOS 建立一個新的 Policy ,Src. Address 輸入 Client 端網段,Dst. Address 輸入 Server 端網段

RouterOS Policy 的設定

到此就完成相關設定。

檢視 Active Peers

如果沒有封包流動,只會看到 Uptime 開始計時,這時有可能還有防火牆或路由問題,所以可以用 ping 來扔封包測試。

檢視 RouterOS Active Peers

如果 Client 端無法正確扔資料到 Server 端,可以在路由表加上設定,如反白的那行,我把遠端的封包指到區域網路內:

RouterOS Route List 加上路徑

最後做雙向測試,從 Client TraceRoute 到 Server ,並連接 Server 的服務,反過來從 Server TraceRoute 到 Client ,並連接 Client 的服務,搞定收工。

Categories: 工作點滴, 技術分享 | 標籤: | 2 則迴響

[RouterOS] 儲存空間滿溢可能會造成無法開機


MikroTik 的 CRS326-24S+2Q+RM:100M RJ45 x1 / 10G SFP+ x24 / 40G QSFP x2

瞧,有 40G 光纖孔 2 孔,又有 10G 光纖孔 24 孔的工業級網路設備,選來做 Router 也是正常的吧?

在 RouterOS v6 之前,韌體比較小,我習慣會把 log 記錄存在 flash 內,而不存在記憶體內。因為通常設備出問題後,最常見的行為是斷電重開,若是存在記憶體內,log 就變得沒有意義,所以必須存記憶卡內,而我過去習慣是保存 10,000 筆,兩個檔案就是 20,000 筆,預設是 1,000 筆兩個檔。

儲存 log 筆數

在 RouterOS v7.2 時,CRS326-24S+2Q+RM 發生 3 次死機,後來升級到 RouterOS v7.5 後,還沒碰上過,本來以為是韌體版本問題,就沒多注意。

前一篇:[RouterOS] CRS326 重設步驟

前一篇在現場跑了一個多月,碰上斷電後,就無法啟動,簡稱 A 機,現場備機先上, A 機帶回來,我依前一篇重設後正常, A 機拿去給同事才知道,實驗室環境先前有一台測掛,簡稱 B 機,但沒跟我說,我就順便拿來試。

先前的問題從 Console 模式可以看到, A 機死機的情況是跑到最後,會顯示 services stop ,B 機升級到 RouterOS v7.6 後,RJ45 網孔只收電腦封包,不回應任何封包,從 Console 模式看, B 機卻是可以登入,所以用 Console 模式登入進去看,網孔的預設參數都不見了,連預設的 bridge 都沒出現。

看了 B 機 Storage Size 沒有任何空間留下來,經查 log file 超過 2 MB ,把 flash 空間吃完,刪除 log file 後,從 Console 下 Reset-Configuration 重設,就能順利開機登入,並還原參數。

因此我猜可能是 flash 儲存空間滿溢,趕快把我所有 CRS326-24S+2Q+RM 的 log 都先改為保存 2,000 筆紀錄,並把前一次的 log 刪除。

空出儲存空間

完成設備復原後,把 B 機還給同事,上網查一下,官方有說明如何把 log 存到 usb 行動碟去:

Disks – RouterOS – MikroTik Documentation

還有提到,RouterOS v7.7 可以設定當重開或斷電可以自動存到 usb 行動碟去。

從上所述,可能 RouterOS 開機需要自動備份參數或是寫入東西到儲存空間,若是儲存空間滿溢,就無法寫入了。

另外這邊有一個影片教學教把 log 存到 usb 行動碟去。

Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

[RouterOS] CRS326 重設步驟


最近發生幾次 CRS326-24S+2Q+RM 在長時間執行斷電後,呈現死機,不但無法正常開機,連網孔都不回應。檢討可能原因另外開一篇說明,這邊只說明重設步驟。

重設時,我個人偏好開啟 Console 模式,這樣可以監看重設過程,如果不喜歡,就依照個人意願設定即可。

官方網站的重設步驟:Manual:Reset – MikroTik Wiki

我自己實作步驟:

1. 先斷電,Reset 按著不放,送電,約 3 秒,USER 燈閃爍,放開 Reset 鍵。

官方說明是 LED 燈,但 CRS326 除網孔外有四個燈,不知道看哪個,實測是看 USER 燈,這邊要注意,USER 燈開始閃爍就要趕快放開 Reset 鍵,大概閃爍一會熄滅後再放開 Reset 鍵就沒用了。

Console 畫面會顯示如下:

RouterBOOT backup booter 6.48.6

CRS326-24S+2Q+

CPU frequency: 650 MHz
 Memory speed: 300 MHz
  Memory size:  64 MiB
 Storage size:  16 MiB

Press any key within 2 seconds to enter setup
writing settings to flash... OK
..

loading kernel... OK
setting up elf image... OK
jumping to kernel code
Starting...
Resetting system configuration...
Starting services...
MikroTik 7.5 (stable)
MikroTik Login: 

2. 用 admin 登入 192.168.88.1/24

3. 更新韌體

Reset 只是把參數還原到預設值,韌體版本並不會變更,我在實驗室環境用 RouterOS v7.2 ,現場是 v7.5 ,因為正式版的 v7.6 已經出來了,所以我就排入工作步驟,更新到最新韌體。

Rebooting...
installed system-7.6
finishing installation...
[  477.365766] reboot: Restarting system


RouterBOOT booter 6.48.6

CRS326-24S+2Q+

CPU frequency: 650 MHz
 Memory speed: 300 MHz
  Memory size:  64 MiB
 Storage size:  16 MiB

Press any key within 2 seconds to enter setup..

loading kernel... OK
setting up elf image... OK
jumping to kernel code
Starting...
Starting services...
MikroTik 7.6 (stable)
MikroTik Login: 

4. 還原設定檔

現況已經是新韌體的空機,接下來就是把先前備份的參數檔進行還原,還原後登入驗證是否一致。

還原前仍是用 用 admin 登入 192.168.88.1/24 登入,還原後就看參數檔是啥,就改用該參數登入了。

Rebooting...
[  236.300568] reboot: Restarting system


RouterBOOT booter 6.48.6

CRS326-24S+2Q+

CPU frequency: 650 MHz
 Memory speed: 300 MHz
  Memory size:  64 MiB
 Storage size:  16 MiB

Press any key within 2 seconds to enter setup..

loading kernel... OK
setting up elf image... OK
jumping to kernel code
Starting...
Starting services...
MikroTik 7.6 (stable)
[DeviceName] Login:

先寫這篇是為了下一篇的引言,我想重設混在下一篇很亂,不如抽出來寫。

下一篇:[RouterOS] 儲存空間滿溢可能會造成無法開機

Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

[RouterOS] 建立一主二從的 IPsec 通道


接續前篇:[RouterOS] 重設 Mac Address

前面先完成硬體初始化設定,再來做後面的 IPsec 通道建立測試。當然,IPSec 有很多重複的部分,可以把兩篇一起看,這篇第一台初始設定完成後,直接再還原兩台,調整 Mac Address 跟相關參數即可。

測試前有先上網找資料,有人提到 RouterOS v7 跟舊版不相容,比對了一下,是有些參數在 v7 跟 v6 以前不相通,所以如果使用的是舊版 RouterOS ,建議升級到 v7 以後,或是去找其他篇。

測試前,我先把相關軟硬體都更新到最新。winbox 是 v3.37 版,RouterOS 是 v7.6 版。

設備命名WANLAN建立通道
IDC (伺服器區)172.16.60.230/2410.0.0.1/24對 p00?
p001 (設備區1)172.16.60.231/2410.0.1.1/24對 IDC
p002 (設備區2)172.16.60.232/2410.0.2.1/24對 IDC
IPsec 網路概況

各網段的 Gateway 都是尾碼為 1 的 IP ,就不再贅述。

WAN 的部分實際上應該是現場的 Public IP ,因為在測試環境測,所以用虛擬網段來取代。所以 WAN / LAN 實務上不需要都是 Class C ,視需求而定。

有些介面設定其實沒有順序性,但有些介面有,我的說明只是說明順序而已,不一定需要完全依照這個順序,下面說明假定從空機開始。

這邊截圖是用 p001 為準的,因為之後有多個 p??? 可以直接複製還原。

1. 建立 Profile

預設已經有 [default] 這個 Profile ,可以直接用,一般建議是自己建立自己通道要用的加密設定,如果沒有要考慮與其他人相容,通道的加密設定通常支援選項越少越好,自動交握的時間才會短,可以提高性能,Profile 可以重複使用,所以看個人,命名我習慣是項目開頭,以便識別這個是哪個項目,我沒用加密01 (Encryption) 來命名,是因為單字太長,我直接用編碼01 (Encode01) 來命名,所以從這角度來看,命名是看自己爽度。

Add Profile

2. 建立 Proposal

同上,預設已經有 [default] 這個 Proposal ,可以直接用,我自己建一個,因為我後面要選用 IKEv2 ,所以命名為 IKEv2 。

Add Proposal

3. 建立 Peer

Peer 是一個通道要一個,看到裡面要設定 IP 就知道了,也就是這裡我選了 IKE2 ,所以我前面命名為 IKE2 。

所以在 IDC 就要建立兩個 Peer 對應到 p001 跟 p002 ,所以後續如果增加 p003、p004、…,只要到 IDC 那台去新增 Peer。

圖上的 Peer-VM 是我測試到 VM 的,跟這篇沒關係,可以不用管它。

Add Peer

4. 建立 Identity

建立身分識別時需選擇 Peer ,所以依照需求選即可, 我用預先提供共用金鑰方式,密碼可自訂,但必須兩邊一致。

一樣,無須管圖上的 Peer-VM 。

Add Identity

5. 建立 Policy

建立 Policy 時,需選擇 Peer ,另外記得通道 (Tunnel) 要打勾,[Src. Address] 輸入本地端網段,[Dst. Address] 輸入遠端網段,RouterOS v6 以前在這邊需要輸入 SA (Gateway) ,在 v7 會自動偵測,建立連線後可在 Status 看到兩邊的 SA 。

馬賽克掉的部分就是跟這篇沒關的 Peer-VM 。

Add Policy-General

在 Policy Action 頁籤中,記得選上面建立的 Proposal ,選完後按下 Ok 。

Add Policy-Action

到此就完成相關設定。

檢視 Active Peers

當 IDC 跟 p001 分別設定好後,只要網路通的話,就會自動建立連線,可以從 [Policies]、[Active Peers]、[Installed SAs] 看到,一般來說網管會看 Active Peers ,Uptime 就是建立連線後過多久,斷線會歸 0 重計,後面自然就是封包數量及位元組量。

要看 SA 的話,除了 Policies 單一 Policy 的 Status 可以看外,也可以從 Installed SAs 看到所有的 SA 。

如果要備份還原的話,我會偏向先設定 p001 ,再修改成 IDC ,後面就用 p001 備份還原。但實務上通常會先設定 IDC ,因為網管總是先處理好伺服器群,才會往下做,所以等到 p001 改好後,再備份還原 p001 給 p002 或其他。

View Active Peers

如果沒有自動建立連線,請先檢查兩側分別到兩側的 WAN IP 是否可以通連,確認後再檢查參數,也可以檢查 log ,先前我有加密選錯,試圖建立連線失敗,會顯示在 log 上。

解決 Edge to Edge 防火牆設定

如果 Active Peers 已經可以正確建立,有 Uptime ,但兩邊無法互通,建議先送 ping 封包,然後到 ip / Firewall / Connections 去檢查是不是有對應 IP 一直送封包進來,若有,通常是防火牆問題。

一般建議是向下圖一樣建立 NAT 規則。

[Src. Address] 為本地端網段,[Dst. Address] 為遠端網段。

我自己試的結果是不通,有可能是因為我的上行 WAN 不是指定給網孔而是 Bridge ,所以我用下面的 NAT 可以過。

而我有下圖的 NAT 後,把上圖的 NAT 刪除,也不影響 Edge to Edge 。

Firewall – NAT 2

一主二從測通

在總測通擷圖前,同事跟我說我把 LAN 網段搞錯了,其實應該是下面這樣,參考紅字為修改部分,所以擷圖前我把 LAN 改成最新的後,測通才擷圖。所以也應證先前前面說的,LAN 可以 Class B 跟 Class C 互混。

設備命名WANLAN建立通道
IDC (伺服器區)172.16.60.230/2410.0.0.1/16對 p00?
p001 (設備區1)172.16.60.231/2410.1.1.1/24對 IDC
p002 (設備區2)172.16.60.232/2410.1.2.1/24對 IDC
IPsec 網路修改後概況

Edge 部分分別在各區網 IP 尾碼 207 放上 Win10 電腦,分別用 ping 及瀏覽器進行測通。

可以看到 IDC 有兩個 IPsec 通道,分別來自於 p001 及 p002 。

總測試擷圖

其他

實務上,IDC 與 p001 / p002 並不是主從架構,而是平行架構,可以這樣想像,網管習慣先處理機房端,再建置各部門端,所以習慣上會把機房當主,各部門區域網路當從,但講主從可能會誤會 Client to Server 架構,實際上是 Site to Site 架構,所以要特別在最後進行補充。

就是因為實際上是平行架構,所以 p001 我也可以同時連接 VM 區,例如上面擷圖中有看到 Peer-VM 的設定,所以不是全部只能連線到 IDC ,也可以同時連線其他區網。

另外總測試擷圖看到 traceroute 部分,第一列都不通,這是因為 IPsec 通道並沒有替遠端路由自動加上路徑,若希望第一列能被偵測到,要道 ip / route 去新增,例如在 p001 要新增 10.0.0.0/16 的 Gateway 為 172.16.60.230 。

Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

[RouterOS] 重設 Mac Address


RouterOS 的備份還原機制很強大,可以完全還原成原先設備設定。其中就包含 Mac Address 。

在有鎖定 Mac Address 的環境下,還原很有用,完全不用改上游端設定,但同一網段不能有相同的 Mac Address ,否則會產生封包碰撞,就會造成網路設備時斷時連。

我接受到一個任務,要測試 IPsec 一主兩從的環境進行測通,所以我先拿測試設備依據我上游端測試環境建立主網段,子網段我用主網段備份還原再來修改。

IP 相關設定設好後,發現主網段跟子網段大概 30 ~ 60 秒間會輪流斷網,以前碰過,我大概有印象是重設 Mac Address 即可,但是我忘了先前我怎麼做,為避免日後又忘記,所以我把步驟記錄下來,下次自己查網誌即可。

設定方式不複雜,大概兩個步驟。

1.

將網孔的 Mac Address 恢復成硬體預設值,硬體預設值是出廠時,商家賦予的,理論上是不會重複,但是網路設備這麼多,我認為早就重複了。

從 Interface 進去,針對每一孔網孔點開,按下 [Reset MAC Address] 即可將網孔的 Mac Address 恢復硬體預設值。

重設網孔 Mac Addr.

2.

比較麻煩的是 Bridge ,因為 Bridge 預設是自動編,重設完每一孔網孔 Mac Address 後,可以重新開機,重新開機會自動重編,若發現還是原先的 Mac Address ,就要檢查設定。

出廠預設值會把預設的 bridge 設定 Mac Address ,不過基於安全起見,全部檢查一遍,把每一個 Bridge 打開檢查一遍,有被設定 [Admin. MAC Address] 的,一律點選右邊的上箭號將該設定恢復為空值。

都改完後,重新開機,Bridge 就會自動重新編號。

其中,若是有 Bridge 只綁定單一網孔時,會使用該網孔的 Mac Address ,所以網孔的 Mac Address 一改變,就會跟著改。當然,使用中的網孔或是 Bridge 的 Mac Address 變更時,會斷網自動重連。

移除 Admin. MAC Address

這功能其實平常用不太到,不記錄下來,下次大概率又是又忘了。

Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

[RouterOS] 多孔上行設定


Core Switch 使用

MikroTik 的 CRS326-24S+2Q+RM:100M RJ45 x1 / 10G SFP+ x24 / 40G QSFP x2

其中,預設上行孔為 100 M RJ45 跟 Port1 10G SFP+

上行孔我接 LAN 為 1Gb 的 4G 雙 SIM + WAN 的基地台,後來發現我的上行孔只有 100 Mb ,4G 跟 vDSL 快的時候是可以超過 100 Mb 的,所以就在中間加一台

MikroTik 的 CSS326-24G-2S+RM :1G RJ45 x24 / 10G SFP+ x2

改由光纖孔做為上行埠。

10G SFP+ Port 23/24 跟 40G QSFP Port 1/2 我拿來做 LAN ,所以我挑 10G SFP+ Port 21/22 來做 Bond ,備援線路為 100 M RJ45 。

Bond 可參考先前文章:[RouterOS] 多網孔的 Bond 設定

首先新增一個上行的橋接器,命名為 BridgeWan

新增上行的 BridgeWan

其次,新增 BondingWan 綁定 SFP+ Port 21/22 。

新增上行的 BondingWan

將 BondingWan 跟 100Mb RJ45 都透過 BridgeWan 橋接。

設定 Port 對應 BridgeWan

最後把 BridgeWan 加到 WAN 端,讓它可變上行埠。

將 BridgeWan 對應到 WAN 端

在這個設定下,Port 21/22 可以同時接兩條到上位的 Switch ,可以互相備援及負載平衡,任何一路斷訊指是從 20Gb 掉到 10Gb ,也可以只接一路。若光纖 SFP+ 相容度不佳,還可以改走 RJ45 上行,同時在上位的 Switch 若發生故障,也可以透過 RJ45 直接接到對外的 4G Router ,提高維修的彈性。

Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

[RouterOS] Core Switch 的 VLAN 設定


參考前篇的說明:

[RouterOS] 多網孔的 Bond 設定

這些設備大部分用在無空調的環境,網路架構大概是這樣:

網路架構圖

前篇做 Bond 的就在右上角。

左側有多個分區,呈星狀分布,分布在半徑 3 公里內,採光纖連接,總共約有 1600 個網路設備。

每一區的網路設備中,其中有外商特定設備,設定時須用原廠軟體,採先廣播封包偵測硬體取得的 DHCP 列在軟體界面上後,逐台設定。

因為使用到廣播封包,所以每一區給一個 Class C 作為廣播封包的界線,而各區的監測系統則集中在機房的 CSS326 下。各光纖連接則直接連到 CRS326 上,所以 CRS326 就相當於 Core Switch。

考慮未來維運方便下,各分區的 Switch 採免設定方式,可用任何工業級交換器連接,設定重點僅需考慮 CRS326 這台上。

整個主網域為 10.x.yyy.* ,因為還有後續用途,所以直接用 10 起頭的來作主網域,所有 ID 為方便辨識,一律為 xyyy 編號,所以 10.1.3.* 的 Class C ,我就編成 1003 。

為了方便設定,除第一筆資料用 winbox 介面輸入外,第二筆以後資料,都配合 console 模式,在 Excel 公式組成命令後,直接貼上去來加入,內建設定若不衝突我就保留。

Pool

Pool 是關聯性最少的,先寫。前面說到設備預設為 DHCP ,所以必須開 DHCP Pool 給 Router 分配 IP 池,設備數量是多餘 Pool 的,不過出廠前會先設好,所以 Pool 只需保留給維運人員現場換新機或是插入網路使用,所以沒留很多 IP ,RouterOS 也可以指定一段範圍,不用遮罩計算,不過我覺得這樣比較簡單好記,所以直接用 /29 來限制 IP 範圍。

Pool 設定

Bridge

Bridge 橋接器的基本開設也沒有關聯到其他設定部分,算底層先開設。

Bridge List

VLAN

VLAN ID 同前面所述 ID ,採 xyyy 編碼,反正範圍是 1 ~ 4095 ,夠我用了。

VLAN List

Port

接下來指定每一個網孔對應的 Bridge/VLAN ,因為我採相同的編號方式,閱讀起來會比較容易。

前一篇說過,我把 23/24 孔做成負載平衡 (Bonding0000),可以跑 20G ,所有交換區都在 0000 ,這台有 2 孔 40G 孔,也保留在交換區,另外光纖孔 01 ~ 15 分別對應到 1001 ~ 1015 ,剩下 1000 為機房區域的工作區。

Port List

IP Address

設定每個子網段區間跟對應的 Bridge ,為了方便起見,基本上以 Class C 來切割。

IP Address List

DHCP Server

設定每個 Bridge 對應的 Pool

DHCP Server List

指定每個 DHCP 網段的 Gateway / DNS Server ,大部分指向 Router 服務,減少對外流量。

DHCP Network

Interface

最後指定廣域網路 (WAN) 跟區域網路 (LAN) 的 Interface 。

Interface List

目前相同架構應用在另一個分區有 18 區,約 600 個網路設備的環境下,運作良好,現在挑戰 1600 個網路設備。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[RouterOS] 多網孔的 Bond 設定


一個現場有多台網路設備的案例中,在

Core Switch 使用 MikroTik 的 CRS326-24S+2Q+RM:100M RJ45 x1 / 10G SFP+ x24 / 40G QSFP x2

Edge Switch 使用 MikroTik 的 CSS326-24G-2S+RM :1G RJ45 x24 / 10G SFP+ x2

考慮網路的穩定性,Core Switch 到 Edge Switch 使用兩條光纖跳接線連接,同時使用可讓網速最大到 20G 。

Core Switch 用的是 RouterOS ,Edge Switch 用的是 SwOS ,RouterOS 設定上滿單純的,打開 winbox 設定軟體比較方便,當然有內建 Web winbox ,我喜歡用視窗版的。

新增 Bonding 網孔

在 Interface 點選 Bonding 頁籤,選擇新增,取一個名字。

我習慣後面帶上 VLAN ID 好辨識,ID 0 表示沒 VLAN ,然後到 Bonding 頁籤設定網孔,Slaves 選網孔名,可以多個,我把 Core Switch 23/24 孔接到 Edge Switch 的 SFP+ 1/2 孔。

RouerOS 對於多網孔的 7 種模式都支援,有興趣可以 google bond blance rr 。

設定好就會出現在 Interface 中。

設定好的 Bond

實際上我七種模式都有測試,分別看全速運作的速度跟通訊到一半,把光纖跳接線拔掉,我自己偏好用 blance rr ,因為下游也是同一家設備,可以直接支援,如果下游是不同家設備,可能用 blance alb 比較妥當。

MikroTik 是非常經濟實惠的品牌,可工業用,工作環境溫度超過 60 度,公司是直接聯絡露天賣家的公司安弟進貨,有興趣可以參考。

露天賣場:CRS326-24S+2Q+RM:NT 18,500 / CSS326-24G-2S+RM:NT 5,500 。

Categories: 工作點滴, 技術分享 | 標籤: | 2 則迴響

[RouterOS] 虛擬機試用


這篇最早應該不能算是測試心得,只是最後走到 RouterOS 虛擬機。

2020/07 公司因為業務要經銷資安系統,所以公司也買一套資安系統作為展示與測試的環境。但過了一年,業務決定要放棄,這套資安系統就不續約了,閒置的空主機,在 2021/12 公司決定要導入顧大俠的產品時,就打算安裝在這台閒置主機上。

原先的閒置主機的 OS 是 VMWare ESXi 6.7 (7.0 降級授權) ,當初資安系統虛擬磁碟用了完整佈建 (固定容量大小) ,把閒置主機吃掉近 2 TB 硬碟容量,將近 1/2 實體容量,但虛擬機內實際只吃了 31 GB,而 VMWare ESXi 的相關指令不能縮小這顆虛擬硬碟,所以打算用實體機常用的 ToDo Backup 來做。

由於 VMWare ESXi 實體空間不是很夠,所以分階段降低硬碟容量。

1. 把資安系統的虛擬硬碟做填 0 動作,然後透過磁碟管理盡量縮小容量,縮小後,再找磁碟重整軟體,把後方空間盡量清空,再重作磁碟管理縮小容量,虛擬機關機。

2. 把 Todo Backup 虛擬化開機,然後把資安系統虛擬硬碟掛載到 ToDo Backup ,打算備份到新的虛擬硬碟,沒想到 Todo Backup 免費版不支援空硬碟格式化,挖哩勒…

EaseUS Todo Backup Free 下載點:https://tw.easeus.com/backup-software/todo-backup-free.html

3. 下載 USBoxV6 光碟開機版,裝到 VMWare ESXi ,強制設定永遠從光碟開機,掛載空的虛擬硬碟初始化。

USBoxV6 下載點:https://hsuanthony.pixnet.net/blog/post/225209033

4. 終於 Todo Backup 把新的虛擬硬碟做好,想要備份到檔案伺服器上,才發現 VMWare ESXi 這台在 Server 區,Server 網段不允許 DHCP ,所以 Todo Backup 無法自動取得 IP 連線到檔案伺服器上。

到這邊是我的前提,當然有其他方案可以考慮,我想到我之前還有待辦清單要測試 NTP Server 、Class A、切 16/512/131072 個 IP,所以打算用 RouterOS 虛擬機做橋接,讓 RouterOS 拿 Server 區的固定 IP ,派發虛擬 IP 給 Todo Backup 之類的虛擬機,先用 192.168.0.0/16 來設定,所以在 VMWare ESXi 開了虛擬 Switch192 出來。

RouterOS 虛擬機下載:https://mikrotik.com/download (點選 Cloud Hosted Router 有不同 Host 的虛擬機可下載)

我是掛在 VMWare ESXi ,當然下載 VMDK image 檔,虛擬機配置如下:

項目說明
CPU1 核即可,我配置 2 核
DRAM最好大於 64 MB,我配置 128 MB
HDD選既有的磁碟 (64 MB),配置 IDE (0, 0) ,主要磁碟
網卡 1Server 區的網段
網卡 2vNetwork192
RouterOS 虛擬機配置
啟動配置好的 RouterOS

RouterOS 虛擬機是空機,初始化配置有點複雜,建議對一下既有的硬體配置設定,或是看看相關教材。

網路測通後,Todo Backup 終於能備份到檔案伺服器上,備份完後,我把 Todo 儲存備份檔的虛擬磁碟清空,節省容量。

這又是另一個悲慘的故事,我沒注意到當初資安廠商建立虛擬機時,有用差異快照檔案功能,所以我備份的 vmdk 是建立快照時的空的 Windows ,不含任何資安軟體與 log … 但我已經砍掉了,算了,以後要續約的時候,再請廠商重新安裝。

RouterOS 不同網段測試的部分就不一一列示,我測完 Class A 後,直接把 Class A 的測試檔拿來改,測試切成 16 個 IP 。

快速設定 16 個 IP 網段

IP 計算機可參考:https://www.iptp.net/zh_HK/iptp-tools/ip-calculator/

從 10.1.1.177 切 16 個 IP 範圍是 176 ~ 191 ,前後兩個 IP 不能用,剩下 177 ~ 190 共 14 個 IP 可用,拿 177 做 Gateway ,另外再把 184 ~ 187 共 4 個 IP 設為 DHCP 範圍。

讓 Windows 從 RouterOS 的 DHCP 自動取得 IP :

自動取得 16 個 IP 的網段

RouterOS 的 DHCP 預設會從 IP Pool 最後一個開始分配,滿了以後,會從 Next Pool 開始分配,若都沒有 IP 了,就會分配失敗。所以從 187 自動取得。

RouterOS 的 NTP client 是內建的,NTP Server 是官方外掛套件。

RouterOS 外掛套件下載:https://mikrotik.com/download (虛擬機下載 x86 的 Extra packages)

安裝好 NTP Server

安裝好 NTP Server 會出現在 System 選單中,通常要啟用 NTP Server 時,通常也要啟用 NTP Client ,NTP Client 用來對上游校時,NTP Server 則是給下游校時用。

上游的 NTP Server 很多,例如說 Windows 內建的是 time.windows.com ,但因為是 Windows 內建的,所以幾乎全球的 Windows 都跟它校時,常常連不上。

在台灣可以使用政府標準檢驗局的標準時,由1969年成立的國家時間與頻率標準實驗室發布,是委託給中華電信研究院負責。

國家時間與頻率標準實驗室 網址:https://www.stdtime.gov.tw/

目前國家提供的時間伺服器 (NTP Server) 有:

  • tick.stdtime.gov.tw
  • tock.stdtime.gov.tw
  • time.stdtime.gov.tw
  • clock.stdtime.gov.tw
  • watch.stdtime.gov.tw

既然是國家標準時,自然一堆政府機關、半官方法人、團體等都是對國家標準時校時,所以用戶多,常常碰上連不上 (逾時) 的情況。

既然是中華電信執行,而且公司網路基本上都在中華電信上,所以我一般都跟中華電信校時。

clock.hinet.net (168.95.192.12)

其次是效能不錯的 Google 時間伺服器,早期 Google 分成 4 台時間伺服器,現在用 DNS 做自動平衡,一般使用者用 time.google.com 即可。

別名NTP ServerIPv4IPv6
timetime1216.239.35.02001:4860:4806::
timetime2216.239.35.42001:4860:4806:4::
timetime3216.239.35.82001:4860:4806:8::
timetime4216.239.35.122001:4860:4806:c::
Google 的時間伺服器

所以 RouterOS 對上游校時的主伺服器設定為中華電信,次伺服器設定為 Google 。

Windows 再對 RouterOS 校時即可。

對 RouterOS 校時。

在有 AD 架構下的網域,Windows Client 會自動對 AD Server 校時,另外 Windows Server 可以透過 regedit 修改啟用 NTP Server ,倒不一定要用到這個方案。

我這個方案是要用在現場,現場沒有 Windows Server,而 RouterOS 的硬體都是便宜大碗的工業級設備,支援多 WAN ,多通道的 Site To Site VPN,唯一的缺點就是設定複雜,現場網路設備多需要校時,統一對 RouterOS 校時最好,把校時流量關在 LAN 裡面,只有 RouterOS 走 WAN 去校時。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[RouterOS] 啟用 PPTP Server


RouterOS 因為價美物廉,一直被我拿來用在現場。大部分的網路硬體環境溫度都超過 65 度,基本上是免空調,網孔在 2012 年就是 Gb 級,功能強悍。

現場有需要建立 Site To Site 的 VPN 通道,讓兩邊網段可以直接互聯,速度不需要很高,所以早期我都是用 ADSL ,client 端用 2M/64k ,Server 端用 8M/640k (1 固+7 浮動 IP),當然後來光纖普及了,就會用光纖。

因為設備真的很穩定,所以很少需要維護,甚至到忘了使用者介面的位置在哪。這篇的目的就是提醒我自己。

協力廠商反映現場 client 端不能連線,工程人員去現場,久到連密碼都不可考,所以拆回來,恢復成原廠狀態,再把出機參數還原,還原後才發現 server 端撥不進去。

用 telnet 在公司測試,port 沒開,連到現場檢查,的確 pptp service 沒作用,所以得把 pptp server 啟動。

但太久沒操作,久到連介面都不知道在哪。

只好到原廠官網查,官網都只有命令列模式,所以從命令列模式去下指令,恢復 pptp Server 啟用:

官網的說明:https://help.mikrotik.com/docs/display/ROS/PPTP

pptp Server 啟用

可以看到,先啟用 Terminal 後輸入以下指令:

interface pptp-server
server set enabled=yes

啟用後,client 就撥通 VPN ,自動建立通道完成。

我印象中,pptp Server 是有介面可以啟用,但是就是想不起來在哪。之後開台 VM 放 RouterOS 的映像檔來測:

pptp Server 啟用

原來是選單 選 [PPP] ,點選工具列的 [PPTP Server] ,就有介面可以啟用。為啥我之前就是找不到呢?

寫一篇文提醒自己,下次找不到,回網誌翻就可以了。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[RouterOS] 沒注意資安新聞就被攻陷的經驗


話說,案場因考慮工業路由器,大量使用 RouterOS ,在 2018/08 月初發布了相關資安新聞,沒注意,到了 09/12 先發現某案場展示網頁會發生 Timeout ,才發現被攻陷變肉雞了。

展示系統大量使用 HTML5 + SVG 來處理畫面,09/12 廠商訪談完,在大廳展示電視發現展示網頁顯示 script 逾時了,開始追蹤這問題,現場是一個雙向 512k 的 ADSL 專線,使用 RouterOS 的基地台,用 Winbox 登入檢查後,從 log 發現不對勁:

防火牆規則異動

防火牆規則異動

防火牆規則被改了?問過同事,沒人連過去。確定被入侵異動,一時之間不確定問題,先升級韌體,改回被異動的參數。

09/13 開始進行更進一步 log 檢視,原先 RouterOS 服務基本上都關閉,只保留 api-ssl / winbox ,原先想說 api-ssl 可能是原廠軟體的通道,但是從 log 看起來不是透過 winbox 軟體登入,查原廠說明:

https://wiki.mikrotik.com/wiki/Manual:API-SSL

靠腰,api-ssl 只有加密,但不認證,嚇了一跳,趕緊連線到各案場普查,由於不同 IT 設定,有些有開,有些沒開,發現有四成案件有被入侵的痕跡,但有些是沒開的,不見得是 api-ssl 問題而已,甚至有些案場被打開服務,使用其他服務登入。

趕緊 google 新聞,原來是 08/03 就有新聞發出,是透過原廠軟體漏洞入侵:

超過17萬台MikroTik路由器淪為駭客挖礦攻擊的跳板 https://www.ithome.com.tw/news/124977

所以展示網頁發生 script 逾時,是因為展示電腦在幫忙挖礦阿…

再找了幾篇文章

Mikrotik的Winbox的任意文檔訪問漏洞的PoC流出,漏洞公佈以後仍舊沒有引起網絡管理者足夠的重視 https://hk.saowen.com/a/8c1dd31786b20e8da4d39cd378ffd85552d89a8e7235b570e16aaace7e923090

近期RouterOS的几个漏洞说明 http://www.irouteros.com/?p=338

大概看出來,漏洞有很多,從 winbox 漏洞備份設定檔後,還可以透過公開金鑰反解出密碼,讓 RouterOS 可以被遠端登入… 解決的方案無他,就是升級韌體,已被入侵的連管理帳號都得改…

下面來看一些慘況吧~

這隻肉雞很慘,多方在上面交戰互相阻擋別人入侵,甚至時間伺服器都被改掉,偽裝舊的時間寫入的規則:

三方互相設定對方 IP 為阻擋清單

三方互相設定對方 IP 為阻擋清單

 

這就是幫人挖礦的嵌入網頁:

挖礦嵌入網頁

挖礦嵌入網頁

防火牆規則區除了 DNS 防禦被關閉 (紅框),也淪為駭客間互相阻擋的方案 (藍框)

DNS 防禦被關閉

DNS 防禦被關閉

IP Pool 也被改:

IP Pool 被新增

IP Pool 被新增

對應 IP Pool 的撥入規則也新增近來:

PPP 也被新增規則

PPP 也被新增規則

對應被加入的 VPN 帳號:

VPN 被新增帳號

VPN 被新增帳號

被加入的排程:

被加入排程

被加入排程

被加入 Script:

被加入 script

被加入 script

被加入 Layer 7 Protocol 規則:

被加入 Layer 7 Protocol

被加入 Layer 7 Protocol

還有 SOCKS 也被設定、加入 IP 等,甚至有些是底層被修改,在介面上完全找不到哪裡被改,當我改完規則後,居然被駭客改掉 admin 帳密,登不進去,只好換機,拿回來洗機重新設定。

看樣子 google 還要訂閱 RouterOS 資安相關訊息了…

對了,我們這幾台最早被入侵大概是在九月初,所以要是有看到新聞,其實還有救…

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[RouterOS] 阻擋外對內的 DNS 遞迴查詢攻擊


先前這篇:
[RouterOS] 上傳流量爆頻寬

會阻擋所有的 DNS 查詢,相對代表另一件事,區域網路無法透過 Router 查詢 DNS ,只能設廣域網路的 DNS ,由於內部系統習慣使用 Router 作為 DNS Server ,便於外部網路的變化,不影響內部網路設定,因此得改防火牆配合。

建好的規則如下圖,在防火牆的過濾規則中設定,將來自於外網的 DNS 的查詢全數拋棄:

將來自於外網的 DNS 的查詢全數拋棄

將來自於外網的 DNS 的查詢全數拋棄

來分別看看此兩規則的設定值,其中 pppoe-HiNet 為外網的名稱,這邊是使用 ADSL 上網,使用 WAN 也可藉此修改:

DNS TCP General

DNS TCP General

DNS TCP Action

DNS TCP Action

DNS UDP General

DNS UDP General

DNS UDP Action

DNS UDP Action

最後,若需如清單畫面中,分群,在清單中按下滑鼠右鍵,在彈跳選單中選擇 [Comment] ,輸入分群名稱即可:

DNS Query TCP Comment

DNS Query TCP Comment

DNS Query UDP Comment

DNS Query UDP Comment

設定完成後,就可以允許 DNS 查詢了。

DNS Settings

DNS Settings

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[RouterOS] 上傳流量爆頻寬


這個問題發生了一陣子了,就是使用 RouterOS 的路由器會由 RouterOS 爆上傳流量。

最早是發生在去年年底,是日本網路公司通知疑似遭受攻擊,已封鎖網路。

一般來說,都是以為電腦被攻擊,但是電腦檢查沒有問題,就不了了之。

慢慢的,一個個使用 RouterOS 路由器的案場接連出事, RouterOS 路由器在 2013/06 開始使用,起初沒想到是路由器問題,但是有部分環境是只有自動介面卡都會出事,而路由器換個 IP 就會正常,就鎖定是路由器問題。

由於去年年底才開始發生,所以誤認為 RouterOS 路由器漏洞,以:
RouterOS 漏洞
RouterOS bug

用 google 找半天,都找不到有用資訊,只好在公司架一台空機等著被轟。

今天終於等到狂轟猛炸,透過封包過濾是 DNS ,有了資訊就很好找,是「DNS遞迴查詢攻擊」,分別找到三個有用資訊:
為何你的ROS WAN口會有莫名的流量 https://ros.tw/wp/?p=2565
RouterOS 被大量流量攻擊 https://www.mobile01.com/topicdetail.php?f=110&t=4468348
DDoS Detection and Blocking http://wiki.mikrotik.com/wiki/DDoS_Detection_and_Blocking

最簡單的當然是從介面處理,所以依據第一個連結方式處理。

首先先看上傳爆流量,這個只有 RouterOS 路由器接 WAN ,後面沒任何設備。

上傳爆流量

上傳爆流量

大部分的環境是用 PPPoE 動態撥接,所以為避免路由器後面設備不能連線,先做 DHCP Server 的 DNS 設定。

選單 DHCP Server

選單 DHCP Server

台灣當然是 HiNet + Google 。

加入 DNS Server

加入 DNS Server

再由 左側選單 [IP] > [DNS] 把 [Allow Remote Requests] 勾勾拿掉。

移除勾選

移除勾選

一套用,馬上流量從 19.2Mbps 降到 390.7 kbps 。不過累積上傳量已經達到 645.4 GiB,想到我就是這垃圾流量的貢獻者,實在汗顏阿~

流量驟降

流量驟降

RouterOS 是個平價的工業級路由器,慣用 RB450G / RB750GR3 環境溫度都可以耐到 70 度,是耐操的好夥伴阿。

Categories: 工作點滴, 技術分享 | 標籤: | 2 則迴響

在 WordPress.com 建立免費網站或網誌.