ไม่ได้เข้ามา update blog ซะนาน ก็ขอเขียน script เอาใจคนที่หันมาเล่นกับ routerboard ซะหน่อย เนื่องจากทาง เจ้าของ blog เองก็ได้ ให้ความสนใจกับตัวนี้แล้วก็มีปัญหา จากการ update ddns ของ dyndns ผ่าน เจ้า mikrotik เหมือนกัน เนื่องจาก script ที่ได้จาก wiki ของ mikrotik นั้น พอใช้กับ ADSL ของ true แล้วดันไม่อัพเดทเป็น ip ของ router แต่ไป update public ip เลยกลายเป็นว่า ไม่สามารถ ใช้งานได้
environment ที่ใช้ในการ config
mikrotik routerboard model : RB951G-2HnD
software version : 6.30
ddns : dyndns host
ISP : true internet ADSL
script ที่ใช้ ก็ตามนี้นะครับ
# Define User account&Host ddns Variables
:global ddnsuser "username"
:global ddnspass "password"
:global ddnshost "***.dyndns.**"
# Define Global Variables
:global ddnsip
:global ddnslastip
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" }
:global ddnssystem ("mt-" . [/system package get system version] )
# Grab the current IP address on pppoe-out1 interface.
:global ddnsip [ /ip address get [/ip address find interface="pppoe-out1" ] address ]
:global ddnsip [:pick $ddnsip 0 [:find $ddnsip "/"]]
# Did we get an IP address to compare?
:if ([ :typeof $ddnsip ] = nil ) do={
:log info ("DynDNS: No ip address present on pppoe-out1 interface , please check.")
} else={
# NORMAL ROUTINE FOR RUN WHEN CHANGE IP
:if ($ddnsip != $ddnslastip) do={
:log info ("DynDNS: Sending UPDATE! IP:".$ddnsip)
:local str "/nic/update\?hostname=$ddnshost&myip=$ddnsip&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG"
/tool fetch address=members.dyndns.org src-path=$str mode=http user=$ddnsuser \
password=$ddnspass dst-path=("/DynDNS.".$ddnshost)
:local str "http://$ddnsuser:$ddnspass@members.dyndns.org/nic/update\?hostname=$ddnshost&myip=$ddnsip&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG"
/tool fetch url=$str
:delay 1
:local str [/file find name="DynDNS.$ddnshost"];
/file remove $str
:global ddnslastip $ddnsip
}
}
เวลาใช้ก็ปรับแก้ส่วน username, password แล้วก็ dyndns host ได้เลยครับ
ส่วน ใครที่ปรับแก้ interface pppoe-out1 ไป ก็ต้องไปแก้ชื่อให้ตรงด้วยนะครับ ไม่อย่างนั้นมันจะหยิบ ip ไป update dyndns ผิดนะครับ
หลังจากที่เราสร้าง script เสร็จเรียบร้อยเราก็ไปสร้าง scheduler มาเพื่อเรียก script ที่เราสร้างก็เป็นอันจบ ขั้นตอน เท่านี้ ก็จะสามารถ update ddns ไปให้ dyndns ได้เรียบร้อยครับ