Dynamic DNS by Changeip.com
Dynamic DNS มีผู้ให้บริการหลายรายให้เลือก.ในที่นี้ จะกล่าวแค่ Changeip เท่านั้น http://www.changeip.com
ในการสร้าง DDNS สามารถ ทำได้ 2 วิธี
วิธีที่ 1
1. ไปที่ System / Script กด เพิ่ม New Script
1.1. ตั้งชื่อ script ในที่นี้อาจตั้งเป็น "ddns" ก็ได้ ตั้งอย่างไรจำไว้ด้วย เพราะเดียวเราจะต้องกำหนดในScheduler ว่าจะให้ Run Script ไหน
1.2. Copy script ข้างล่างนี้ไปวางได้เลย โดยเปลี่ยน 4 บรรทัดที่ให้แก้ไข (ผมทำเป็นสีเขียวไว้)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# EDIT YOUR DETAILS / CONFIGURATION HERE
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:global ddnsuser "YourChangeIPUserID"
:global ddnspass "PASSWORD"
:global ddnshost "MyRouterHostname.example.org"
:global ddnsinterface "ether1"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# END OF USER DEFINED CONFIGURATION
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:global ddnssystem ("mt-" . [/system package get [/system package find name=system] version] )
:global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface] address ]
:global ddnslastip
:if ([:len [/interface find name=$ddnsinterface]] = 0 ) do={ :log info "DDNS: No interface named
$ddnsinterface, please check configuration." }
:if ([ :typeof $ddnslastip ] = "nothing" ) do={ :global ddnslastip 0.0.0.0/0 }
:if ([ :typeof $ddnsip ] = "nothing" ) do={
:log info ("DDNS: No ip address present on " . $ddnsinterface . ", please check.")
} else={
:if ($ddnsip != $ddnslastip) do={
:log info "DDNS: Sending UPDATE!"
:log info [ :put [/tool dns-update name=$ddnshost address=[:pick $ddnsip 0 [:find $ddnsip
"/"] ] key-name=$ddnsuser key=$ddnspass ] ]
:global ddnslastip $ddnsip
} else={
:log info "DDNS: No changes necessary."
}
}
# END OF SCRIPT
เรียบร้อยแล้ว กด OK ได้เลยครับ
2. การสร้าง Scheduler
2.1. ไปที่ System / Scheduler กด เพิ่ม New Schedule
2.2 Name : ให้ตั้งชื่ออะไรก็ได้
2.3. Interval : ความถี่ในการ Run เช่น 00:15:00 คือ ทุก 15 นาที
2.4.On Event : ใส่ชื่อของ script ที่ต้องการ Run เราก็ใส่ที่เราสร้างไว้เมื่อสักครู่นี้ คือ "ddns"จากนั้นกด OK เป็นอันเสร็จ
วิธีที่ 2 ในการสร้าง script และ schedule ด้วย Terminal
1. ให้ทำการ copy script ข้างล่างนี้ โดยแก้ไข 4 ส่วนเหมือนด้านบน
(สร้าง script และ schedule เสร็จแล้วค่อยไปเปิด script ใน winbox)
#Command
/system script
add name="DDNS by Easy Network" policy=\
ftp,reboot,read,write,policy,test,winbox,password source="# Dynamic DNS Up\
date / Simple Edition\r\
\n# %\r\
\n# %\r\
\n# %\r\
\n# %\r\
\n# % % %\r\
\n# % % %\r\
\n# % % %\r\
\n# %\r\
\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\
\n# EDIT YOUR DETAILS / CONFIGURATION HERE\r\
\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\
\n:global ddnsuser \"YourChangeIPUserID\"\r\
\n:global ddnspass \"PASSWORD\"\r\
\n:global ddnshost \"MyRouterHostname.example.org\"\r\
\n:global ddnsinterface \"ether1\"\r\
\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\
\n# END OF USER DEFINED CONFIGURATION\r\
\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\
\n\r\
\n:global ddnssystem (\"mt-\" . [/system package get [/system package find\
\_name=system] version] )\r\
\n:global ddnsip [ /ip address get [/ip address find interface=\$ddnsinter\
face] address ]\r\
\n:global ddnslastip\r\
\n\r\
\n:if ([:len [/interface find name=\$ddnsinterface]] = 0 ) do={ :log info \
\"DDNS: No interface named \$ddnsinterface, please check configuration.\" \
}\r\
\n\r\
\n:if ([ :typeof \$ddnslastip ] = \"nothing\" ) do={ :global ddnslastip 0.\
0.0.0/0 }\r\
\n\r\
\n:if ([ :typeof \$ddnsip ] = \"nothing\" ) do={\r\
\n\r\
\n:log info (\"DDNS: No ip address present on \" . \$ddnsinterface . \", p\
lease check.\")\r\
\n\r\
\n} else={\r\
\n\r\
\n :if (\$ddnsip != \$ddnslastip) do={\r\
\n\r\
\n :log info \"DDNS: Sending UPDATE!\"\r\
\n :log info [ :put [/tool dns-update name=\$ddnshost address=[:pick \$\
ddnsip 0 [:find \$ddnsip \"/\"] ] key-name=\$ddnsuser key=\$ddnspass ] ]\r\
\n :global ddnslastip \$ddnsip\r\
\n\r\
\n } else={ \r\
\n\r\
\n :log info \"DDNS: No changes necessary.\"\r\
\n\r\
\n }\r\
\n\r\
\n}"
/system scheduler
add comment="" disabled=no interval=15m name="DDNS by Easy Network" on-event=\
"DDNS by Easy Network" policy=read,write,policy,test,password start-time=\
startup
# END DDNS