ขั้นตอนการทำ Mikrotik Forward Port 80 + HOTSPOT + LOOPBACK

ขั้นตอนการทำ Mikrotik Forward Port 80 + HOTSPOT + LOOPBACK
จากบทความเดิมที่ผมเคยเขียนเรื่อง Forward port 80 (แบบไม่ใช้กับ Hotspot) ผู้อ่านสามารถทำตามได้ปกติ
แต่ในกรณีที่จะต้องการ FW Port 80 โดย Server อยู่วงเดียวกับ Hotspot และต้องการให้ข้างนอกและข้างในหน่วยงานสามารถใช้งานได้
และไม่กระทบต่อระบบหน้าจอ login hotspot สามารถทำได้ดังนี้

sss
รูปด้านบนคือ ระบบตัวอย่างที่จะใช้เขียนบทความ มีเน็ต 1 เส้นแบบ pppoe-out1 และ ether2 คือแจก Hotspot ให้กับเครื่องภายในและมีเครื่อง server 80 อยู่ในวงนี้ด้วย

และผมใช้ makham.ddns.net เป็น Dynamic DDNS ให้ผู้ใช้งานเรียกเข้าเครื่อง server ทั้งภายนอกและภายใน

Nat loopback (HarpinNAT) คืออะไร
มันคือการทำ forward port เบอร์นั้นๆ วนกลับไปยังเลขไอพีขา WAN ของ เร้าเตอร์(mikrotik) เพื่อให้ผู้ใช้ข้างใน และ ข้างนอก(โลก) สามารถเรียก WAN IP เพื่อไปยังพอร์ตที่ forward ได้ (จำเบอร์เดียว เข้าได้ทั้งข้างนอกข้างใน)

ขั้นตอนการทำอย่างย่อ
1.เพิ่ม NAT ไปที้ winbox > ip > firewall > nat โดยมีข้อมูลดังนี้
Chain: dstnat
protocol :tcp
dst port:80
in interface: pppoe-out1 (ชื่อ interface เน็ต ขาแวน)
dst address type : local
action : dstnat
toaddress : 10.5.50.250 (ไอพีเครื่องเซิฟ)
toport : 80 (พอร์ตเครื่องเซิฟ)

2.ทำอีก 1 อัน
Chain: dstnat
protocol : tcp
src address: 10.5.50.0/24 (ใส่วงไอพี hotspot /ซับเน็ต)
dst address: 1.1.1.1 (ใส่ไปก่อนเดี๋ยวสคริปมันเปลี่ยนให้เอง)
dst port: 80
dst address type : local
action : dstnat
toaddress : 10.5.50.250 (ไอพีเครื่องเซิฟ)
toport : 80 (พอร์ตเครื่องเซิฟ)
comment : fwport
เสร็จแล้วจะได้ 2 บรรทัดตามรูป
sssss

3.ทำ Bilding เพื่อให้เครื่อง server ไม่ต้อง login hotspot
-ไปที่ ip > hotspot > ip blinding
-ใส่ MAC ADDRESS การ์ดแลนเครื่อง server , address : 10.5.50.250 (ip เครื่องserver) , bypassed
sssssss

4.เปลี่ยน port winbox on web (RouterOS router configuration page) จาก 80 ให้เป็น 81 เพื่อไม่ให้ชนกับระบบ hotspot , forward port 80
-ไปที่ ip > service > คลิก www , เปลี่ยนจาก 80 เป็น 81 ตามรูป
sssssssss

* สามารถใช้วิธีนี้ในการ Forward port อื่นๆที่นอกจาก 80 ได้นะ แค่เปลี่ยนตัวเลข

มีสคริบที่เกี่ยวข้องคือ
1.อัพเดท ddns no-ip (ผู้อ่านสามารถหาโหลดได้เอง)
2.**สคริบ อัพเดท WANIP สำหรับทำ NAT LOOPBACK
ผู้อ่านสามารถอ่านวิธีการเพิ่มscript และทำตั้งเวลารัน ได้ในบทความก่อนๆ

สคริปที่ใช้อัพเดท WANIP สำหรับทำ NAT LOOPBACK

:local inetinterface “ใส่ชื่อ interface เน็ตที่ใช้ เช่น pppoe-out1″
:local currentIP [/ip address get [find interface=”$inetinterface” disabled=no] address]
/log info “$currentIP”
/ip firewall nat set [/ip firewall nat find comment=”fwport”] dst-address=”$currentIP”

สคริปที่ใช้อัพเดท DDNS no-ip แถมให้

# No-IP automatic Dynamic DNS update
#————— Change Values in this section to match your setup ——————

# No-IP User account info
:local noipuser “ใส่userno-ip”
:local noippass “ใส่พาสเวิดno-ip”

# Set the hostname or label of network to be updated.
# Hostnames with spaces are unsupported. Replace the value in the quotations below with your host names.
# To specify multiple hosts, separate them with commas.
:local noiphost “ใส่ชื่อโดเมน noip”

# Change to the name of interface that gets the dynamic IP address
:local inetinterface “ใส่ชื่อ interface เน็ตที่ใช้ เช่น pppoe-out1″

#————————————————————————————
# No more changes need

:global previousIP

:if ([/interface get $inetinterface value-name=running]) do={
# Get the current IP on the interface
:local currentIP [/ip address get [find interface=”$inetinterface” disabled=no] address]

# Strip the net mask off the IP address
:for i from=( [:len $currentIP] – 1) to=0 do={
:if ( [:pick $currentIP $i] = “/”) do={
:set currentIP [:pick $currentIP 0 $i]
}
}

:if ($currentIP != $previousIP) do={
:log info “No-IP: Current IP $currentIP is not equal to previous IP, update needed”
:set previousIP $currentIP

# The update URL. Note the “\3F” is hex for question mark (?). Required since ? is a special character in commands.
:local url “http://dynupdate.no-ip.com/nic/update\3Fmyip=$currentIP”
:local noiphostarray
:set noiphostarray [:toarray $noiphost]
:foreach host in=$noiphostarray do={
:log info “No-IP: Sending update for $host”
/tool fetch url=($url . “&hostname=$host”) user=$noipuser password=$noippass mode=http dst-path=(“no-ip_ddns_update-” . $host . “.txt”)
:log info “No-IP: Host $host updated on No-IP with IP $currentIP”
}
} else={
:log info “No-IP: Previous IP $previousIP is equal to current IP, no update needed”
}
} else={
:log info “No-IP: $inetinterface is not currently running, so therefore will not update.”
}

ข้อความนี้ถูกเขียนใน Mikrotik คั่นหน้า ลิงก์ถาวร

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *