十二月 20

RouterOS要更新版本除了可以手動更新外(請參考更新與升級RouterOS的版本),也可以利用Script來進行更新。

參考mikrotik官方的wiki後,我把Script修改了一下,方便使用。

要使用前,要修改的地方只有1個:local upgradeTo "5.11",

把版本改成你想要更新的版本即可,例如:local upgradeTo "5.13"

執行後,Script會自動去官方網站下載符合該平台的更新檔下來,

下載完會自動重開機進行更新。

請注意:系統更新都有其風險,更新前請自行斟酌

#Script在RouterOS 5.7中測試過
#Date:2011/12/20
#Script Descript:半自動更新RouterOS的系統版本
#reference:http://wiki.mikrotik.com/wiki/Auto_upgrade_script_V3.x

#----------------------------------
#要更新到那一個版本請在這邊設定
:local upgradeTo "5.11";
#----------------------------------

# newest version
:local lMajor;
:local lMinor;

# current version
:local vMajor;
:local vMinor;

:local myVer [/system resource get version];

:for i from=0 to=([:len $myVer] - 1) do={
:if ( [:pick $myVer $i] = ".") do={
:set vMajor [:tonum [:pick $myVer 0 $i]];
:set vMinor [:tonum [:pick $myVer ($i + 1) [:len $myVer]]] ;
}
}
......以下略

完整程式碼可參考(編碼為BIG5)http://www.minitw.com/download/UpgradeROS.txt





九月 01

正常的狀況下,RouterOS會自動管理系統上的IP位置。

像是使用VPN撥接上ROS後,ROS系統會自動給予1個IP位置,斷線後該IP位置會自動刪除。

但有的時候,撥接上來的VPN發生異常斷線後,該IP並沒有自動刪除。

這時就會導致該帳號永遠無法再撥接上來(帳號使用固定VPN IP)

為了解決這狀況,所以需要一個小Script搭配Scheduler來自動刪除ROS上這些無效的IP位置

Script內容如下

#Script TestOS:RouterOS 5.6
#Date:2011/09/01
#Script Description:刪除無效的IP位置

# 把無效的IP位置資料全部讀出來
:foreach i in=[/ip address find invalid=yes] do={
#刪除無效的IP
    /ip address remove $i
}

.
.
懶人包如下,於winbox中開啟Terminal,貼上下面的指令
系統會完成新增上面的Script並每5分鐘於Scheduler中自動執行1次

/system script
add name=DeleteInvalidIP policy=\
    ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api source="#Script T\
    estOS:RouterOS 5.6\r\
    \n#Date:2011/09/01\r\
    \n#Script Description:\A7R\B0\A3\B5L\AE\C4\AA\BAIP\A6\EC\B8m\r\
    \n\r\
    \n# \A7\E2\B5L\AE\C4\AA\BAIP\A6\EC\B8m\B8\EA\AE\C6\A5\FE\B3\A1\C5\AA\A5X\A8\D3\r\
    \n:foreach i in=[/ip address find invalid=yes] do={\r\
    \n#\A7R\B0\A3\B5L\AE\C4\AA\BAIP\r\
    \n    /ip address remove \$i  \r\
    \n}"

/system scheduler
add disabled=no interval=5m name=AutoDeleteIP on-event=\
    "/system script run DeleteInvalidIP" policy=\
    ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api start-date=\
    aug/19/2011 start-time=02:08:36




七月 31

一直以來好像很少看到升級RouterOS的文章

今天就記錄一下過程吧

首先是先下載RouterOS的升級npk檔

可以到官方網站下載

如果你需要之前的版本,可以到本站的這邊下載

依照自已的RouterOS系統別下載好後,打開winbox

20110731_1

把升級的npk檔拖到winbox的Files中

20110731_2

檔案上傳中.....

20110731_3

確認檔案上傳完成

20110731_4

重開RouterOS

20110731_4_1

選擇確定重開後,會花一點時間,此時請勿關閉電源。開機完成後,系統即完成升級

20110731_5





五月 09

當你有多個外面線路想要同時間對映到內部的某一台Server時

或許你是為了備援或Load Balance的考量。在RouterOS下你可以很簡單的達成

首先,我們本次範例的網路架構圖如下,目標是把2條PPPoE對映到內部的那台Server

20110509_1

先給大家Script,大家可以再對照下面的圖,不難的

/interface pppoe-client
add ac-name="" add-default-route=no allow=pap,chap,mschap1,mschap2 \
dial-on-demand=no disabled=no interface=LAN max-mru=1480 max-mtu=1480 \
mrru=disabled name=ISP1 password=99999999 profile=default service-name="" \
use-peer-dns=no user=99999999@hinet.net
add ac-name="" add-default-route=no allow=pap,chap,mschap1,mschap2 \
dial-on-demand=no disabled=no interface=LAN max-mru=1480 max-mtu=1480 \
mrru=disabled name=ISP2 password=99999999 profile=default service-name="" \
use-peer-dns=no user=99999999@hinet.net

/ip firewall mangle
add action=mark-connection chain=prerouting disabled=no in-interface=ISP1 \
new-connection-mark=ISP1_conn passthrough=yes
add action=mark-connection chain=prerouting disabled=no in-interface=ISP2 \
new-connection-mark=ISP2_conn passthrough=yes
add action=mark-routing chain=prerouting connection-mark=ISP1_conn disabled=no \
in-interface=LAN new-routing-mark=to_ISP1 passthrough=yes src-address=\
192.168.55.200
add action=mark-routing chain=prerouting connection-mark=ISP2_conn disabled=no \
in-interface=LAN new-routing-mark=to_ISP2 passthrough=yes src-address=\
192.168.55.200

/ip firewall nat
add action=dst-nat chain=dstnat disabled=no dst-port=80 in-interface=ISP1 \
protocol=tcp to-addresses=192.168.55.200 to-ports=80
add action=dst-nat chain=dstnat disabled=no dst-port=80 in-interface=ISP2 \
protocol=tcp to-addresses=192.168.55.200 to-ports=80
add action=masquerade chain=srcnat disabled=no out-interface=ISP1
add action=masquerade chain=srcnat disabled=no out-interface=ISP2

/ip route
add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=ISP2 routing-mark=\
to_ISP2 scope=30 target-scope=10
add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=ISP1 routing-mark=\
to_ISP1 scope=30 target-scope=10
add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=ISP2,ISP1 scope=30 \
target-scope=10

20110509_2

20110509_3

20110509_4

最後我們實驗一下,確認2個外面的IP都連的進來,並且對映到內部的同一個IP位置,收工

20110509_5

參考資料:Manual:PCC





二月 15

之前幫 RouterOS 加上 IP分享器功能(NAT)這篇文章教大家怎麼把RouterOS當成Gateway

讓內部的IP可以透過RouterOS上網

那如果外部的電腦想連到內部電腦的服務(例如:Web、SSH、SQL Server...等)

這時候就需要轉Port的功能(Port Mapping)

實作的方式也很簡單,使用winbox的介面就可以達成了

首先開啟winbox後,IP -> Firewall -> NAT -> 加入一筆新的規則

接下來就看圖操作吧,要注意的是如果你是ADSL撥接上網的,In Interface請選該ADSL的介面

20110215_1

Action的部份則是選dst-nat,IP與Port則是依自已的需求填寫

20110215_2

最後記得把該新建立的規則拉到masquerade的上面

20110215_3