• 860

[研究所] MikroTik RouterOS 學習 (持續更新)

menchieh wrote:
小弟的rb450g在...(恕刪)

您的問題與#1184樓calven.lai大的問題一模一樣,
重開機後多個PPPoE_out搶一個IPv6 client,但PPPoE_out1老是搶輸

在我看來要靠寫個Scripit延遲來解決,讓PPPoE_out1先連線先佔IPv6 Clinet,
再來才輪到PPPoE_out2~4撥號...

但Scripit語法和範例除了官方wiki介紹http://wiki.mikrotik.com/wiki/Scripts,
坊間根本沒有中文書籍可供參考,就差這道門檻跨不過啊...
WAN 為 Dynamic IP 時如何設定 port forwarding?

這在 1F 的說明裡面有提到做法:
例如將 5000-5006/TCP port forwarding 至 192.168.22.10 (Synology NAS)

之前提到的做法為指定 in-interface

/ip firewall nat
add action=dst-nat chain=dstnat comment="Synology DSM" dst-port=5000-5006 \
in-interface=pppoe-out1 protocol=tcp to-addresses=192.168.22.10 to-ports=\
5000-5006


也可以不要指定 in-interface, 利用 dst-address-type 參數.

/ip firewall nat
add action=dst-nat chain=dstnat comment="Synology DSM" dst-address-type=local \
dst-port=5000-5006 protocol=tcp to-addresses=192.168.22.10 to-ports=\
5000-5006


例如在 multi WAN interface 的情況下, 第二種設定方式不用去指定 in-interface, 會比較方便.
FB: Pctine
Rex0928 wrote:
各位專家好最近我也開...(恕刪)


2013-11-19
目前幾番下來的設定跟問題稍微整理一下

已經確定 從RT-N16/N66U連到 RB-450G上會有下列狀況

1.LAN端VM 必須手動新增Route 才能連到 .2.0/24 , .3.0/24
2.Wireless設備與VPN連線進來的則不用手動新增Route (難道Static Route功能對LAN端的設備失效嗎?)

不過我不死心拿了一台裝Win 7的NB透過Wireless連進RT-N16/N66U 192.168.10.x網段,卻是不能連上RB-450G
但是iPhone 5/New iPad連上RT-N16/N66U 後卻可以????


3.連線到 RB-450G上的任何設備(Linux),下w指令可以確切知道連線IP (ex: 192.168.10.26[vm-ubuntu])


如果從 RB-450G上的任一設備則可以正常連線到 RT-N16/N66U底下的VM

但是出現一個問題

比如連線到 192.168.10.24這台 vm-fedora 上之後

下 w 指令,顯示我的IP來自於 192.168.10.254 (RB-450G eth5的address)

理論上應該是 192.168.2.xx 或是 192.168.3.xx 才對吧 @@?

還是說這樣是正常現象呢? @@

不過這一點我想應該是我有新增兩條 masquerade src 192.168.3.0/24 dest 192.168.10.0/24 與 masquerade src 192.168.2.0/24 dest 192.168.10.0/24的關係 ,但是如果不設定這兩條則RB-450G無法存取 RT-N16/N66U 的 192.168.10.0/24

Rex0928 wrote:
2013-11-19...(恕刪)

您是說RT-N16/N66U利用OpenVPN/PPTP_Client連到RB450G_Server無法LAN TO LAN,
須手動設定Routing Table嗎?

請參照本討論的#220樓,即可有滿意的答覆.
不知道RB750G能不能拿來當L2的純Switch..

有VLAN Tag的Giga Switch都比RB750G貴了

JYHuang wrote:
不知道RB750G能...(恕刪)


RB250GS

RB260GS

JYHuang wrote:
有VLAN Tag的Giga Switch都比RB750G貴了...(恕刪)


術業有專攻, 如果你需要網管功能的 switch, 那麼還是建議你直接去買網管 switch.
FB: Pctine

gfx wrote:
您的問題與#1184...(恕刪)但Scripit語法和範例除了官方wiki介紹http://wiki.mikrotik.com/wiki/Scripts,
坊間根本沒有中文書籍可供參考,就差這道門檻跨不過啊...

感謝gfx大大的回覆!

對會寫script的大大而言,這只是兩三行script即可完成敘述的小問題,不知那位大大可幫忙,感激不盡!

Rex0928 wrote:
2013-11-19
目前幾番下來的設定跟問題稍微整理一下...(恕刪)


看 Rex 兄測的快發瘋了吧! 我明天跟友人借一台 RT-N16 來測看看好了, 不曉得你的 RT-N16 firmware 版本為何?
FB: Pctine
gfx wrote:
在我看來要靠寫個Scripit延遲來解決,讓PPPoE_out1先連線先佔IPv6 Clinet,
再來才輪到PPPoE_out2~4撥號......(恕刪)


底下紅框,用意是讓它在機器開機時只會運行一次.


假設有4個pppoe-out,依序讓它撥號.
1.先關閉4組pppoe撥號.
2.啟用pppoe-out1撥號.
3.等10秒後啟用pppoe-out2撥號,依序下去.

:delay 30
/log info "開機運轉依序pppoe撥號"
:delay 5
/interface pppoe-client set [find name=pppoe-out1] disabled=yes
/interface pppoe-client set [find name=pppoe-out2] disabled=yes
/interface pppoe-client set [find name=pppoe-out3] disabled=yes
/interface pppoe-client set [find name=pppoe-out4] disabled=yes
:delay 2
/interface pppoe-client set [find name=pppoe-out1] disabled=no
:delay 10
/interface pppoe-client set [find name=pppoe-out2] disabled=no
:delay 2
/interface pppoe-client set [find name=pppoe-out3] disabled=no
:delay 2
/interface pppoe-client set [find name=pppoe-out4] disabled=no



關於script語法,底下為網上的文章.
四種變數
global - 定義全域變數, 可以要所有的腳本中調用共用
local - 定義本地變數,只能在其所要的腳本下調用,不能被其它腳本共用
loop index variables - 定義在for或foreach裡的索引號變數
monitor variables - 監視變數

ROS算術操作
- 負號;相減。
! 邏輯非。
/ 相除。
. 連接。兩個符串的連接,添加元素到清單
^ 異或(XOR)
~ 取反
* 相剩
& 與(AND)
&& 邏輯與
+ 相加
< 小於
= 大於等於
>> 向右位移
| 或
|| 邏輯或

ROS說明書裡的例子:

計算順序
[admin@MikroTik]> :put (10+1-6*2=11-12=2+(-3)=-1)
false
[admin@MikroTik]> :put (10+1-6*2=11-12=(2+(-3)=-1))
true

邏輯非
[admin@MikroTik]> :put (!true)
false
[admin@MikroTik]> :put (!(2>3))
true

數位取反
[admin@MikroTik]> :put (~255.255.0.0)
0.0.255.255

加法
[admin@MikroTik]> :put (3ms + 5s)
00:00:05.003
[admin@MikroTik]> :put (10.0.0.15 + 0.0.10.0)
cannot add ip address to ip address
[admin@MikroTik]> :put (10.0.0.15 + 10)
10.0.0.25

減法
[admin@MikroTik]> :put (15 - 10)
5
[admin@MikroTik]> :put (10.0.0.15 - 10.0.0.3)
12
[admin@MikroTik]> :put (10.0.0.15 - 12)
10.0.0.3
[admin@MikroTik]> :put (15h - 2s)
14:59:58

乘法
[admin@MikroTik]> :put (12s * 4)
00:00:48
[admin@MikroTik]> :put (-5 * -2)
10

除法
[admin@MikroTik]> :put (10s / 3)
00:00:03.333
[admin@MikroTik]> :put (5 / 2)
2
[admin@MikroTik]> :put (0:0.10 / 3)
00:00:02

比較
[admin@MikroTik]> :put (10.0.2.3 :put (100000s>27h)
true
[admin@MikroTik]> :put (60s,1d!=1m,3600s)
true
[admin@MikroTik]> :put (bridge=routing)
false
[admin@MikroTik]> :put (yes=false)
false
[admin@MikroTik]> :put (true=aye)
false

邏輯與 AND, 邏輯或 OR
[admin@MikroTik]> :put ((yes && yes) || (yes && no))
true
[admin@MikroTik]> :put ((no || no) && (no || yes))
false

數位與AND, 或OR, 異或XOR
[admin@MikroTik]> :put (10.16.0.134 & ~255.255.255.0)
0.0.0.134

位移操作
[admin@MikroTik]> :put (~((0.0.0.1 :put (1 . 3)
13
[admin@MikroTik]> :put (1,2 . 3)
1,2,3
[admin@MikroTik]> :put (1 . 3,4)
13,4
[admin@MikroTik]> :put (1,2 . 3,4)
1,2,3,4
[admin@MikroTik]> :put ((1 . 3) + 1)
14
[admin@MikroTik]> :set a "It\'s "
[admin@MikroTik]> :put ($a . OK)
It\'s OK

ROS腳本保留字
beep execute global list pick time toip typeof
delay find if local put toarray tonum while
do for led log resolve tobool tostr
environment foreach len nothing set toid totime

:beep length=2s frequency=10000
產生2秒10kHz的音訊
length缺省值為100ms
frequency缺省值為1000Hz

:set a "/int dis lan\n/int dis wan"
:execute $a
執行多條命令,例子裡執行了兩條命令。\n是換行

:global
定義全域變數

:list interface
顯示相關命令。顯示目前的目錄及子目錄下有關interface的命令

:pick
取字串或陣列的某一斷。字串(陣列)的第一個為0。
[admin@MikroTik]>:put [:pick "I love you" 2 6]
love

:time
執行命令所需的時間
[admin@MikroTik]> :put [:time [:resole www.sina.com.cn]]
00:00:00.006
執行解析www.sina.com.cn這個功能變數名稱所需的時間

toip toarray tonum tobool tostr toid totime
轉換數值型別

:delay 3
延時3秒,缺省為1秒

:find
查找字串或陣列中第一個出現查找內容的位置
[admin@MikroTik]>:put [:find abcdcba cd]
2
[admin@MikroTik]>:put [:find "1,2,3,4,3,2,1" 2]
1

:put
輸出到螢幕上,上面就很多例子了。

:if
條件選擇
[admin@MikroTik]>:if(1:if(1>2) do={:put true} else={:put flase}
flase
如果條件為真,執行do={}裡面的命令,否則執行else={}裡有命令

:local
定義本地變數

:while
條件為真時迴圈執行do={}裡的指令碼命令
[admin@MikroTik]>:set i 0;:while($i :put [:resolve www.sina.com.cn]
61.172.201.240

:environment print
顯示所有變數及其值

:len
字串或陣列的長度
[admin@MikroTik] > :put [:len hello]
5
[admin@MikroTik] > :put [:len "1,2,23,65,54,6"]
6

:nothing
空值。nothing不等0,不等於空字元""
:find abc a的結果是0
:find abc d的結果是nothing

:set
賦值
[admin@MikroTik] > :set a test
將abc字元賦給變數a
[admin@MikroTik] > :put $a
test
[admin@MikroTik] > :put a
a
引用變數的值要在變數前面加$


  • 860
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 860)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?