Browsed by
Tag: gre

詭異的RouterOS v6更新後IPSec連線建立失敗問題

詭異的RouterOS v6更新後IPSec連線建立失敗問題

今天心血來潮,檢查了MikroTik RouterOS v6是否有新版本,發現4月釋出了v6.49.15版,都過了這麼久,也許算是穩定版了,便著手進行系統升版(設備版本為v6.49.11)。

A地更新完後,也許是DDNS更新還需要點時間,IPSec連線無法馬上建立,手動在/ip cloud進行DDNS的強制更新後 (force update),便成功建立IPSec連線與GRE tunnel。

確定上網正常後,便開始進行B地更新(遠端),詎料等待了10分鐘,IPSec連線仍無法建立。使用nslookup檢查了B地的DDNS域名設定,發現也早已更新完成,便使用米家app確認B地米家攝影機是否正常,發現可以正常觀看,表示B地Internet連線沒有問題,只好透過Cloudflare Tunnel連上B地伺服器,再跳到MikroTik設備裡看看有什麼端倪。

確定IPSec設定無誤,手動kill connection也沒效,重新連線,A、B兩端始終都會停在no phase 2的階段,IPSec handshake無法順利完成。於是心生一計,到GRE tunnel設定頁面,將A、B兩端的IPSec secret重新設定一次,沒想到一切都正常了(???)太神奇了,傑克!

RouterOS v6經由GRE Tunnel路由至目的地

RouterOS v6經由GRE Tunnel路由至目的地

若A、B兩地之間已建立GRE Tunnel,且A地想經由B地再路由到某地(例如Internet),可進行以下設定:

  1. 新增路由表
    在IP選項的Routes子選項的Routes頁籤,新增一筆,Dst. address可填0.0.0.0/0、Gateway填寫gre-tunnel1、Routing Mark填寫想要的名稱,例如:Route-to-SiteB
  2. 新增路由規則
    在IP選項的Routes子選項的Rules頁籤,新增一筆,Src. address填寫本地端的某設備IP、Dst. address填寫0.0.0.0/0,table填寫Route-to-SiteB,action填寫lookup

即設定完成!

RouterOS在二地之間建立GRE tunnel over IPSec

RouterOS在二地之間建立GRE tunnel over IPSec

原本在二個住處間建立了IPSec tunnel,使兩地之間的設備可以互相通訊,例如讓B地的小米攝影機能將影像檔上拋至A地的SAMBA伺服器。前一陣子,又有了策略路由需求,例如讓A地某設備經由B地再路由到Internet,但剛好一地是EdgeRouter-X,一地是MikroTik RB750Gr3,被設定搞得很頭疼。恰好雙十一時又淘了一台RB750Gr3回來,本來是要當備用機的,趁著元旦連假有空,便把EdgeRouter-X換成RB750Gr3。如此一來,兩地都是MikroTik設備,RouterOS的設定變得輕鬆許多。

為了滿足前述的PBR (policy-based routing)需求,爬了不少文章,最後決定採用GRE tunnel over IPSec,在此將設定方式簡單做一下筆記:

  1. 建立GRE Tunnel
    在Interfaces選項的GRE Tunnel頁籤,新增一個GRE tunnel,填寫Name、Remote Address、IPSec Secret、取消Allow Fast Path
  2. 為GRE Tunnel介面(例:gre-tunnel1)設定IP位址
    在IP選項的Addresses子選項新增IP,填寫Address和Interfaces。記得兩地的address要錯開,但是必須是同一個網段,例如可以各別填寫172.16.0.1/24和172.16.0.2/24
  3. 建立路由規則
    針對A地RouterOS,可設定往B地網段的閘道為GRE tunnel介面,如gre-tunnel1
  4. 建立NAT規則
    可在srcnat表建立A地網段到B地網段的accept規則

註:只要兩地都填寫一樣的IPSec Secret且IPSec profile有共同的加密和雜湊演算法,RouterOS即可自動建立IPSec Tunnel,不必自己額外進行IPSec設定。