Welcome to Sysnet Board คู่มือ การใช้งานอุปกรณ์ Network. Please log in or sign up.
สมาชิกทั้งหมด
17,591
กระทู้ทั้งหมด
10,018
หัวข้อทั้งหมด
4,705

  • การ Set Dynanic DNS บน Mikrotik โดยใช้ Service DynDNS.org
    เริ่มโดย yod
    Read 64,093 times
0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้
yod

 

 

การ Set Dynanic DNS บน Mikrotik โดยใช้ Service DynDNS.org



1. Login โดย Winbox เข้า RouterOS ครับ

2. เข้า Menu System --> Script




3. นำ Code ข้างล่างแปะลงใน Script โดยตั้งชื่อเป็น dynDns (ตัวใหญ่-เล็ก มีผลนะครับ) ครับ


สำหรับ Router OS Version 5.xx

# Set needed variables
:local username "username"
:local password "password"
:local hostname "hostname"

:global dyndnsForce
:global previousIP

# print some debug info
:log info ("UpdateDynDNS: username = $username")
:log info ("UpdateDynDNS: password = $password")
:log info ("UpdateDynDNS: hostname = $hostname")
:log info ("UpdateDynDNS: previousIP = $previousIP")

# get the current IP address from the internet (in case of double-nat)
/tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"
:delay 1
:local result [/file get dyndns.checkip.html contents]

# parse the current IP result
:local resultLen [:len $result]
:local startLoc [:find $result ": " -1]
:set startLoc ($startLoc + 2)
:local endLoc [:find $result "</body>" -1]
:local currentIP [:pick $result $startLoc $endLoc]
:log info "UpdateDynDNS: currentIP = $currentIP"

# Remove the # on next line to force an update every single time - useful for debugging,
# but you could end up getting blacklisted by DynDNS!

#:set dyndnsForce true

# Determine if dyndns update is needed
# more dyndns updater request details http://www.dyndns.com/developers/specs/syntax.html

:if (($currentIP != $previousIP) || ($dyndnsForce = true)) do={
  :set dyndnsForce false
  :set previousIP $currentIP
  :log info "$currentIP or $previousIP"
  /tool fetch user=$username password=$password mode=http address="members.dyndns.org" \
     src-path="nic/update?system=dyndns&hostname=$hostname&myip=$currentIP&wildcard=no" \
     dst-path="/dyndns.txt"
  :delay 1
  :local result [/file get dyndns.txt contents]
  :log info ("UpdateDynDNS: Dyndns update needed")
  :log info ("UpdateDynDNS: Dyndns Update Result: ".$result)
  :put ("Dyndns Update Result: ".$result)
} else={
  :log info ("UpdateDynDNS: No dyndns update needed")
}




สำหรับ Router OS Version 4.xx

# Set needed variables
:local username "username"
:local password "password"
:local hostname "hostname"

:global dyndnsForce
:global previousIP

# print some debug info
#:log info ("dyndns-update: username = $username")
#:log info ("dyndns-update: password = $password")
#:log info ("dyndns-update: hostname = $hostname")
#:log info ("dyndns-update: previousIP = $previousIP")

# get the current IP address from the internet (in case of double-nat)
/tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"
:local result [/file get dyndns.checkip.html contents]

# parse the current IP result
:local resultLen [:len $result]
:local startLoc [:find $result ": " -1]
:set startLoc ($startLoc + 2)
:local endLoc [:find $result "</body>" -1]
:local currentIP [:pick $result $startLoc $endLoc]
:log info "dyndns-update: currentIP = $currentIP"

# Determine if dyndns update is needed
# more dyndns updater request details available at http://www.dyndns.com/developers/specs/syntax.html
:if (($currentIP != $previousIP) || ($dyndnsForce = true)) do={
   :set dyndnsForce false
   :set previousIP $currentIP
   /tool fetch user=$username password=$password mode=http address="members.dyndns.org" src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/dyndns.txt"
   :local result [/file get dyndns.txt contents]
   :log info ("dyndns-update: Dyndns update needed")
   :log info ("dyndns-update: Dyndns Update Result: ".$result)
   :put ("Dyndns Update Result: ".$result)
} else={
   :log info ("dyndns-update: No dyndns update needed")
}



จากนั้นแก้ไข Code ในส่วนนี้ครับ
:local username "username"
:local password "password"
:local hostname "hostname"

username --> UserName ที่สมัครใน DynDNS.org
password  --> Password ที่สมัครใน DynDNS.org
hostname --> ชื่อ Host ที่ตั้งไว้ใน DynDNS.org



แล้ว Click [Run Script] แล้ว Click [OK]


4. ตรวจสอบ IP ฝั่งขา WAN ที่ IP --> Address




5. Login เข้า Web DynDNS.org ตรวจสอบ IP ที่ทาง Server ของ DynDNS ตรวจจับได้



ถ้าตรงกันแสดงว่าสำเร็จเรียบร้อยครับ

6. ที่ Winbox ให้ Click เลือก Menu New Terminal ให้ทำการ Copy Script ด้านล่างนี้แปะลงไปใน Terminal แล้วเคาะ Enter ครับ จะเป็นการสั่งให้ RouterOS ทำการ Run Script จากข้อ 3 ทุกๆ 1 นาที ถ้า IP ขา WAN ไม่ตรงกับค่าเดิม ถึงจะทำการส่งข้อมูลไป Update ที่ DynDNS ครับ

/system scheduler add name=dynDNS interval=00:01 on-event="/system script run dynDns\r\n"





ปล.อย่าลืม Update เวลาใน Router ด้วยนะครับ ไม่งั้น Script Update DNS จะไม่ run ต่อเนื่องครับ

การ Config NTP Client เพื่ออ้างอิงเวลาสากล stratum 0




เรียบร้อยครับ  ;D



คุณ yod


     หากผมต้องการใช้กับ dvr ต้องทำส่วนไหนเพิ่มอีกครับ

yod


Forward port ครับ dvr ส่วนใหญ่ จะต้องใช้ 2 port นะครับ ตรวจสอบที่อุปกรณ์ dvr จากนั้นทำการ config forward port ที่ routerboard ครับ

คุณ yod

    ผม Forward port แล้วครับ สามารถดูผ่านวงแลนเดียวกันได้โดยเข้าที่ ip ของ dvr แต่ไม่สามารถดูผ่าน host (dyndns) ได้ครับ
รบกวนขอวิธีด้วยครับ

yod


ตัวอย่างการทำ forward port ครับ

https://www.sysnetcenter.com/board/index.php/topic,997.0/

ในตัวอย่างจะเป็นกล้อง ip camera จะใช้แค่ port เดียว โดยผม config ที่ตัวกล้องเป็น port 9000 ถ้า dvr ส่วนใหญ่จะใช้ 2 port ครับ ให้ตรวจสอบหมายเลขที่หน้า config อุปกรณ์ หรือสอบถามกับทางร้านที่ซื้อครับ ว่าต้อง config port ยังไง

ทดสอบการทำ dynamic dns ด้วยการ connect routerboard โดยผ่านทาง winbox ใส่ค่า hosy ที่สร้างไว้ตรงช่อง connect ถ้า config สำเร็จจะต้องเข้า winbox ได้ครับ ที่เหลือก็จะเป็นการ forward port

ผมทดสอบการทำ dynamic dns ด้วยการ connect routerboard โดยผ่านทาง winbox ใส่ค่า hosy ที่สร้างไว้เข้า winbox ได้ครับ

และก็ทำการ การทำ Port Forward ของผม DVR ใช้ port 37777 (tcp) กับ 37778 (udp) ทำตามที่คุณยอดส่งมาให้ทุกขั้นตอน

ก็ไม่ได้ครับ







yod

yod
ถ้าทำถูกต้องจะเข้าหน้า login ของกล้องได้ครับ จากรูปจะเป็น DVR ของ HiView ครับ





yod


ถ้า config dynamic dns แล้ว login เข้าหน้า config router ได้ ก็ตัดในส่วน dynamic dns ได้เลยครับ

ทีนี้ ลองตรวจสอบ port ของ dvr ครับ ถ้าเป็น dvr ของ HiView (ใช้ที่บ้าน) จะมี 2 Port ไว้ดู Port นึง ผมตั้งวไ้ที่ 10001 และ Remote อีก Port 1 ผมตั้งไว้ที่ 6060 ต้องสร้าง firewall ขึ้นมา 4 ชุดครับ ค่ือ TCP: 10001, UDP: 10001, TCP:6060 และ UDP:6060 ครับ

แต่ที่ผมเจอคือดูผ่าน Internet Explorer ไม่ได้ครับ ผมเลยต้องเปลี่ยนเป็น Firefox