มือใหม่อยากทำระบบ Wireless Hotspot - Internet LAN



มือใหม่อยากทำระบบ Wireless Hotspot/Internet LAN เชิญทางนี้

ต่อสายแลนจาก ADSL Router เข้าช่องที่ 1 ต่อสายแลนจากคอม เข้าช่องที่ 2
หรือช่องที่ 2 ถ้าใช้ switch/hub เอามาต่อได้เลย ถ้าใช้ wireless access point ก็เอามาต่อได้เลยเช่นกัน
แต่ถ้าใช้ Wireless Router (5 รู) ต้องปิด DHCP Server ตั้งไอพีไม่ให้ชนกับ Mikrotik ก่อน เช่นตั้งเป็น 192.168.88.2 แล้วถึงต่อเข้า mikrotik ช่องที่ 2 และต่อเข้าช่อง LAN (ไม่ใช่ Internet/WAN นะ)

Loadbalance คือ
http://www.overclockzone.com/forums/…1#post52124079
ฺFirewall Mangle + Block speed bittorrent
http://www.overclockzone.com/forums/…1#post52183482
Bypass switch คือ
http://www.overclockzone.com/forums/…1#post52154465
วิธี ให้เว็บ youtube วิ่งใช้เน็ตตามเส้นที่ต้องการ
http://www.overclockzone.com/forums/…1#post52397770
QOS PCQ
http://www.overclockzone.com/forums/…1#post52397774
Queue ใน Mikrotik + (Traffic Shaping & Burst Time)
http://www.overclockzone.com/forums/…1#post52410576


โหลดโปรแกรม winbox ให้พร้อม
http://www.thaicyberupload.com/get/jcGNnXgciM


1. แล้วก็เริ่มทำตามคลิบ 30
http://www.youtube.com/watch?v=qVaI3f9CtfY

2. Upgrade Firmware และติดตั้ง Package Userman
http://mikrotikclub.com/board/index.php/topic,37.0.html
และติดตั้ง package userman ให้เรียบร้อยด้วย

3. แก้ไขหน้าจอ Login ให้เป็นแบบของเรา
http://www.easynetwork.co.th/index.p…otik&Itemid=75

4. แล้วต่อด้วยการทำ Userman +Radius เพื่อออกบัตร Internet ตามใจชอบ
http://www.easynetwork.co.th/index.p…tion&Itemid=75
http://www.easynetwork.co.th/index.p…tik&Itemid=75\

5.เทียบเวลา Mikrotik ให้ตรงกับเวลามาตรฐาน
http://www.easynetwork.co.th/index.p…tion&Itemid=75

6. คล่องแล้วก็ลองหัดทำอย่างอื่นเช่น blockbit,loadbalance รวมเน็ต,ทำระบบ เก็บ LOG…

:::: หัวข้อเรื่อง Mikrotik ::::

ฝากแปะลิ้งนี้ด้วยนะท่านต้น

Mikrotik “ทำ Hotspot ได้ภายใน 30 วินาที”
http://www.youtube.com/watch?v=qVaI3f9CtfY

แล้วก็อยากให้เพิ่มหัวข้อ Guideline สำหรับมือใหม่ที่สนใจจะเล่น Mikrotik นิดนึงประมาณนี้ ขอบคุณครับ

General

-Mikrotik Router คืออะไร

คือ Router ที่ออกแบบมาให้ใช้งานได้สารพัดประโยชน์ทางด้าน network ครับ คนไทยเพิ่งจะรุ็จักได้ไม่กี่ปี มีราคาถุกและคุ้มค่าครับ สามารถเอามาแทน Router / Server แพงๆได้

function ที่นิยมกันคือ เอามาทำ Hotspot ทำหน้าจอ Login ทำระบบบัตรอินเทอร์เน็ต / VPN / รับ Radius นอก / Load Balance รวมเน็ต
ได้ใน ตัวเดียว!

-Mikrotik vs Server

Server ต้องการคนดูแลสูง เพราะคือ PC โดยเฉพาะ Linux จะอ่อนไหวมาก พอๆกับ Windows ถ้าใช้ PC ประกอบประสิทธิภาพก็จะสู้ Server แท้ไม่ได้ จึงเป็นจุดอ่อนสำหรับคนที่ดูแลไม่เป็น หลังจาก mikrotik เข้าไทยมา server ก็เริ่มจะลดความนิยมลงสำหรับงานเล็กๆ เช่น อพาร์ทเม้นเล็กๆ หอพักไม่กี่ร้อยห้อง จะหันมาให้ mikrotik ทำหน้าที่แทนครับ เป้น solution hotspot ที่กำลังมาแรง


-Mikrotik แต่ละรหัส สามารถรองรับได้กี่ user ของจริง!(Peak)


Mikrotik 750 = ไม่เกิน 20 ถ้าใช้ userman (เหมาะกับโครงการ Hotspot SME)
Mikrotik 750GL = ไม่เกิน 20 ถ้าใช้ userman ถ้าไม่ใช้ได้ 30 (เหมาะกับโครงการ Hotspot SME)
Mikrotik 450 = ไม่เกิน 50 ถ้าใช้ userman ถ้าไม่ใช้ได้ 70 (เหมาะกับโครงการ Hotspot SME/หอพัก 50 ห้อง)
Mikrotik 1200 = ไม่เกิน 120 ทั้ง userman และไม่ใช้ (เหมาะกับโครงการ Hotspot ขนาดใหญ่ / หอพักอพาร์ทเม้น 100 ห้อง)
Mikrotik 1100AHx2 = ไม่เกิน 200 ทั้ง userman และไม่ใช้ (เหมาะกับโรงแรม คอนโด 200-300 ห้อง)

ถ้าไม่ใช้ userman (เพิ่มuserผ่าน winbox)จะได้ user เพิ่มอีกประมาณ 20-50 คนครับ ซึ่งต้องดูว่า Hardware ไหวด้วยรึเปล่า

ควรเลือกให้เหมาะสมกับงานครับจะได้ไม่ต้องลงทุนบ่อย รุ่นที่นิยมคือ 450 ครับ เพราะเป็นรุ่นกลางๆ รองรับได้พอดี ถ้าทำ PPPoE Server ต้องลดไปประมาณ 10 user ครับ


Userman Active Session กับ Hotspot Active User ต่างกันอย่างไร !!!
http://www.overclockzone.com/forums/…1#post41160067
http://www.overclockzone.com/forums/…1#post41160735

-การตั้งค่า Port Mikrotik ให้เป็น switch + การติดตั้งระบบ Network (Switch,Wireless AP)

ตั้งพอร์ตที่เหลือไม่ได้ใช้งานให้เป็นพอร์ต Switch ได้
http://mikrotikclub.com/board/index.php/topic,79.0.html

ถ้าเป็น Wireless Access Point สามารถต่อใช้งานได้เลย (มี 1 PortLAN)
ถ้าเป็น Wireless Router ต้องปิด DHCP ตั้งไอพีไม่ได้ชนกัน ต่อเข้าที่ช่อง LAN เท่านั้น (มี 5 Port)

-เมื่อได้ Mikrotik มาแล้วอันดับแรกควรทำอะไร + ลิ้งดาวโหลดโปรแกรมที่ใช้ Config

1.Upgrade Firmware

2.ทำให้มันต่อเน็ตให้ได้ก่อนครับ อย่างน้อย 1 เส้น โดยการต่อเน็ตที่นิยม มี 2 แบบคือ

-DHCP (ง่ายสะดวก ใช้กับ ADSL Router/Cable/TOT Winet)
-PPPoE Client (เฉพาะ ADSL Router ที่บริดได้ / Fiber Optic FFTH)

ซึ่ง DHCP จะทำให้กินทรัพยากร Router มากส่งผลให้แฮ้งไ้ด้ง่ายกว่าแบบ PPPoE

วิํ๊๊ธีเซ็ต DHCP ง่ายๆ 30 วิ
http://www.youtube.com/watch?v=qVaI3f9CtfY

วิธีเซ็ตแบบ PPPoE **จำเป็นต้องให้ โมเด็มเป็น บริดโหมดก่อน ถึงใช้ได้**
ซึ่งวิธีการทำโมเด็มให้เป็นบริดโหมดผมไม่ขอกล่าวเพราะเล่าอีกยาวแน่นอน ลองหาใน google ครับ
http://www.easynetwork.co.th/index.p…tion&Itemid=75

3.*** NTP Server Setup ง่ายมาก บรรทัดเดียว***
http://mikrotikclub.com/board/index….pic,172.0.html

4.***ติดตั้งโปรแกรม UserMAN****** จำเป็น
Package > Install UserMAN

5.อ่านการติดตั้ง Hotspot Server + Radius ตาม Youtube นี้
http://www.youtube.com/watch?v=rBDJ2…layer_embedded


-การตั้งค่าระบบ Hotspot แบบง่าย

ดูคลิบ 30 วิเหมือนเดิม
http://www.youtube.com/watch?v=qVaI3f9CtfY
หรือ
http://www.youtube.com/watch?v=rBDJ2…layer_embedded

-การติดตั้ง Package Userman และการใช้งาน userman เพื่อใช้สร้างบัตร Internet

http://www.easynetwork.co.th/index.p…tion&Itemid=75
http://dl.dropbox.com/u/18974644/Mik…t%20Manual.pdf



-แก้ไขหน้า Login HTML / Reset HTML





รับจ้างออกแบบหน้า HTML LOGIN!!
< < < < < รับออกแบบหน้า Login , status , popup ของ Mikrotik > > > > >

การตั้ง Redirect page หลังจาก login http://mikrotikclub.com/board/index….pic,536.0.html
การทำให้หน้า Login เป็นชื่อของเราเอง แทน iphttp://mikrotikclub.com/board/index….pic,482.0.html
แนวทางการแก้ไขหน้า Login http://mikrotikclub.com/board/index.php?topic=507.0

Reset เมื่อทำพลาดไปแล้ว ไปที่ Hotspot > Reset HTML


-วิธีเก้บlog ตาม พรบคอม 50

http://www.overclockzone.com/forums/…1#post40982918

-Howto Reset to Default Factory Setting
วิธีการ Reset RouterBoard http://mikrotikclub.com/board/index….pic,146.0.html
http://www.easynetwork.co.th/index.p…otik&Itemid=75

-Limit Download

Originally Posted by aha2pro
วันนี้ว่างๆ มาแจกวิธี limit download ไฟล์ครับผม ^ ^



จากที่ได้อ่านและได้ลองทำตามจากหลายๆบอร์ด ลองไปลองมาก็ได้สูตร สำหรับตัวผมเองนะครับ ^ ^
ก่อนอื่นดาวน์โหลด สคริปที่ลงไว้นะครับ ก็อบไปวางที่ terminal
จากนั้นท่านจะเห็นเจ้าสคริปนี้ไปโผล่อยู่ใน Simple Queues ชื่อว่า
Limit Download ท่านสามารถดับเบิ้ลคลิกเข้าไปตั้งค่าเพิ่มเติมได้
จะให้มีผลกับ interface ไหนก็ได้ ตามตัวอย่างคือทั้งระบบ?
สำหรับช่อง p2p ลองแล้ว ตั้งจากตรงนี้ไม่ได้ผลครับ กันไม่อยู่ ?- -* ใช้สคริปจากบอร์ดใหญ่เอาครับ



หลังจากที่ได้ Simple Queues มาแล้ว จะสังเกตว่าเจ้าสคริปนี้จะไม่มีผลเมื่อมันตกมาอยู่ด้านล่าง user
ทำให้ต้องคอยมาลากมันไปอยู่ข้างบนตลอด ซึ่งรู้สึกงงๆมากกับระบบ ทำไมไม่ทำให้มาแบบง่ายๆนะ
เราก็ต้องมาหาทางแก้กัน ตามนี้ครับ



โดยเข้าไปกด + เพิ่มที่ Queues Tree
Name ตั้งชื่อตามสะดวก , Parent เลือก interface ที่ต้องการใช้ , Packet Marks ถ้าไม่ได้สร้าง
Simple Queues ก่อน จะไม่มีให้เลือก แต่พอสร้างแล้วจะมาให้เลือกตามภาพครับ
เสร็จเรียบร้อยแ้ล้วจะเห็นชื่อสคริปตามที่ตั้งไว้ที่ Queues Tree ซึ่งจะทำงานตลอดเวลาครับ

จากสูตรนี้เท่าที่ได้ใช้งานมา ยังป้องกันได้ไม่เต็ม100% สำหรับเว็บ youtube ครับ
บางคลิปก็กันได้ บางคลิปก็ไม่ได้ ซึ่งผมก็หาวิธีไม่เจอแบบ 100% สักที
แต่เว็บพวก mthai clipmass หรืออื่นๆ กันได้100% เลยทีเดียว เจ้า youtube นี่เล่นเอามึน
แต่ยังไงซะ user ก็มาติดที่ bandwidth ที่ตั้งไว้อยู่ดีครับ ก็พอช่วยได้ระดับนึง
ท่านใดมีวิธีการเด็ดๆจัดการ youtube ช่วยๆกันนำเสนอหน่อยนะครับผม

ขอจบรีวิวเล็กๆแค่นี้ครับผม ^ ^

-Block Bittorrent ให้อยู่หมัด
การจำกัด Bit Torrent และ Peer 2 Peer อื่นๆhttp://mikrotikclub.com/board/index.php/topic,59.0.html

-FailOver (ไม่ใช่ loadbalance นะ เน็ตเส้นหลักเสียจะใช้เส้นรองแทน)

Originally Posted by TimelineIT
ขอบคุณครับ มันเรียกวา failover นี่เอง
ที่ท่านให้มันมามันของ RouterOS นี่น่า
แต่ผมใช้ routerboard แต่ก็เจอล่ะครับ เอามาฝากท่านอื่นด้วย สั้นๆเอง



โค้ดครับ
/ip route add gateway=192.168.1.1(หรือเกตเวย์หลัก) check-gateway=ping
/ip route add gateway=192.168.2.1(หรือเกตเวย์รอง) distance=2

=================================

Advanced
-การ Allow Website ที่ไม่ต้อง Login ก่อน (Wall Garden)
http://wiki.mikrotik.com/wiki/Manual…/Walled_Garden

-การ Bypass IP Blinding เครื่องคอมไม่ต้อง Login ก่อนใช้งาน
http://mikrotikclub.com/board/index….70.html#msg170

-การ Forward Port / ตั้ง Static DHCP เพื่อใช้กับระบบ CCTV/Game
http://mikrotikclub.com/board/index.php/topic,61.0.html

-Mikrotik Script รวม สคริบที่จำเป็นเช่น Loadbalance Script(ECIM) / Reboot Script
การทำ ECMP Load balance http://mikrotikclub.com/board/index….pic,191.0.html
การทำ NTH Load balance http://mikrotikclub.com/board/index.php/topic,10.0.html
การทำ load balance จาก Address list http://mikrotikclub.com/board/index….pic,243.0.html
การทำ แยกเน็ต แยกเกม http://mikrotikclub.com/board/index….pic,107.0.html
DDNS http://mikrotikclub.com/board/index.php/topic,24.0.html
Reboot Router ตี3ทุกวัน

Originally Posted by ton_secmu
/system script add name=reboot policy=reboot source=”/system reboot”
/system scheduler add name=reboot on-event=reboot disabled=no policy=reboot start-time=0300 interval=1d

-การทำ Passive PoE ใช้เองฝากไฟไปกับสายแลนเพื่อใช้กับ Mikrotik

-รวมลิ้ง Firmware Upgrade
การ Update ก่อนการติดตั้งทุกครั้ง !!
1.Update RouterOS http://mikrotikclub.com/board/index.php/topic,37.0.html
2.Upgrade Firmware http://mikrotikclub.com/board/index….pic,153.0.html
3.Update License http://mikrotikclub.com/board/index….pic,140.0.html

วิธีทำ MultiHotspot (1 Mikrotik ปล่อย Hotspot หลายย่านไอพี ทุกย่ายไอพีใช้ user ร่วมกันได้ คล้ายกับทำ VLAN)
http://www.overclockzone.com/forums/…6#post41137596

อนาคตจริงๆ

การใช้โปรแกรม NetInstall สำหรับ Upgrade ROShttp://mikrotikclub.com/board/index….pic,270.0.html
แนวทางสำหรับการทำ PPTP VPN http://mikrotikclub.com/board/index….pic,111.0.html
ตัวอย่างการทำ VPN Server – PPTP http://mikrotikclub.com/board/index….2.html#msg4042
การใช้ Mikrotik Route หาเส้นทางระหว่าง Vlan หรือการทำ inter vlanhttp://mikrotikclub.com/board/index….pic,192.0.html

Technique
-การตั้งค่าโปรแกรม Winbox ให้แสดง CPU / RAM / Uptime

Originally Posted by ton_secmu

Thanks: ฝากรูป



คลิกขวา ด้สนบนแล้ว Add ตามในรูปครับผม อยากให้เป็น core ก็ Add ไป 2 อ่ะ อิอิ

Mikrotik 3 in one Userman+Hotspot Login+PPPoE Server Login
http://www.youtube.com/watch?v=rBDJ2…layer_embedded

=================================
http://mikrotikclub.com/board/index.php?topic=213.0
ถ้าเอามาจากที่อื่น ใส่เครดิตด้วยนะครับ ^^
cr easynetwork,thaimikrotikclub,sys2u,sysnetcenter

:::: UPDATE :::::

วิธีเซ็ตให้ Mikrotik ส่ง Log ตามพรบคอม50 ไปให้ Syslog Server / Zyxel NSA210 / …


free syslog on windows limit 5 source นะครับอย่าเกิน เล่นฟรีตลอดชีพ

Syslog Watcher
http://www.snmpsoft.com/downloads.html

การส่งออกLOG ไปเก็บที่ Syslog Server
? แก้ไขครั้งสุดท้าย: พฤษภาคม 09, 2012, 0901 PM โดย Easy Network Support ?


ขาดไม่ได้คือโปรแกรมWinbox โหลดตามลิ้ง
http://www.thaicyberupload.com/get/jcGNnXgciM

[QUOTE author=moderndog007 link=topic=29059.msg209918#msg209918 date=1336701795]
450G หน่วยงานผม user online พร้อมกันประมาณ 80 user ครับ? ;D (ไม่ได้ใช้ Userman นะครับ)
[/QUOTE]

คลังความรู้จากอีกฝั่งของโลกครับ ^^
http://aacable.wordpress.com/category/mikrotik-related/



รวมหัวข้อเล็กๆน้อยๆสำหรับมือใหม่ที่ผมโพสไว้ เพื่อความสะดวกในการหาครับ ^ ^

>> Keep Log on PC <<

>> Limit Downloads File By Queues Tree <<

>> Limit IDM Downloads Youtube <<

>> Login Page For Modify <<

>> Install RouterOS On PC <<

>> Block keyword By Webproxy <<

>> Login hotspot with Mac Address <<

>> Block Bittorrent By Firewall <<

……(^o^)……..



ที่มา: http://www.overclockzone.com/forums/showthread.php/1721941-Mikrotik-Club

ศึกษาคู่มือการเขียน Script Mikrotik (Terminal)


คู่มือการเขียน Script Mikrotik เรียนรู้ไปพร้อมๆ กันที่ http://wiki.mikrotik.com/wiki/Manual:Scripting
*** ไม่อาจหาญสอนใครๆ ผมบันทึกไว้อ่านเองน่ะครับ ***

ภาษาสคริปต์สร้างขึ้นเพื่อให้ทำงานอัติโนมัติตามชุดคำสั่งที่เราออกแบบเอาไว้ การเขียนสคริปต์มักจะเก็บไว้ในเมนู System > Scriptsซึ่ง Mikrotik wiki เรียกมันว่า Script repository และการเรียกใช้งานสคริปต์ ทำได้ดังนี้
วางคำสั่ง สคริปต์ วางลงใน Terminal(เมนู New Terminal) ได้โดยตรง การใช้งานต้องวางสคริปต์ลงไปใหม่ทุกครั้ง
ทำงานตามเวลาที่ตั้งไว้ใน Schedule (เมนู System > Scheduler) เมื่อถึงเวลาที่ตั้งไว้ ก็จะเรียกสคริปต์ขึ้นมาทำงาน
ใช้เครื่องมือตรวจจับเหตุการณ์ต่างๆ เช่น Traffic Monitor (Tools > Traffic Monitor) และ Netwatch (Tools> Netwatch) เพื่อดักจับเหตุการณ์และสั่งให้สคริปต์ทำงาน

Line structure


สคริปต์ทำงานทีละบรรทัดไปจนจบสคริปต์ หรือจนกว่าจะพบข้อผิดพลาด

[prefix] [path] command [uparam] [param=[value]] .. [param=[value]
[prefix] คือคำขึ้นต้นด้วย “:” หรือ “/” เพื่อใช้แยกความแตกต่างระหว่าง ชุดคำสั่ง และ path ที่อยู่ของไฟล์ อาจจะมีหรือไม่มีก็ได้
[path] relative path ใช้อ้างอิง path ที่อยู่ของชุดคำสั่ง อาจจะมีหรือไม่มีก็ได้
command คือชุดคำสั่งที่ใช้
[uparam] ตัวแปร unnamed บางคำสั่งจำเป็นต้องระบุรายละเอียดตัวแปรเพื่อใช้งานด้วย
[params] ค่าตัวแปร named ซึ่งต้องดูตามคำสั่งนั้นๆ ว่าสามารถระบุตัวแปรอะไรได้บ้าง เรียงกันไปเป็นลำดับ

รูปแบบจบท้ายคำสั่ง(token) ด้วยตัวอักษร “;” หรือขึ้นบรรทัดใหม่ บางครั้งก็ไม่จำเป็นต้องใส่

คำสั่งที่อยู่ภายในวงเล็บ ( ), [ ] หรือ { } ไม่จำเป็นต้องต้องใส่ตัวอักษรจบท้ายบรรทัด


:if ( true ) do={ :put “lala” }



คำสั่งที่อยู่ด้านใน ต้องใส่ไว้ใน “[ ]” ทั้งหมด (คำตอบของคำสั่งด้านในวงเล็บ “[ ]” ส่งค่าออกไปให้คำสั่งด้านนอก)


ตัวอย่าง สคริปต์

:put [/ip route get [find gateway=1.1.1.1]];

ประกอบไปด้วย 3 คำสั่งคือ
:put
/ip route get และ
find gateway

คำสั่ง 1 บรรทัดนี้ เขียนแบบขึ้นบรรทัดใหม่แบ่งออกเป็น 3 บรรทัด ก็ได้ ตามกฎการรวมคำสั่ง

ลองใช้คำสั่งแบบใส่ และ ไม่ใส่ token ปิดท้ายคำสั่ง จะพบว่า กรณีคำสั่ง 1 บรรทัด ไม่ต้องมี token ปิดท้ายคำสั่งก็ได้



Physical Line อักขระบอกการขึ้นบรรทัดใหม่

unix – ASCII LF;
windows – ASCII CR LF;
mac – ASCII CR;

ในภาษา C อักขระในการขึ้นบรรทัดใหม่คือใส่ “\c” ลงใน code

Comments การใส่หมายเหตุ เพื่อใส่คำอธิบายโปรแกรม มีกติกาดังนี้

ใส่ “#” ตำแหน่งแรกของบรรทัด ใส่ก่อนหน้าคำ comment
ห้ามมีเคาะวรรคหน้า “#“
และเครื่องหมาย “#” หากไปโผล่ที่อื่น นอกเหนือจากอยู่ตำแหน่งหน้าบรรทัด ไม่ถือว่าเป็น comment
***ในบรรทัดที่เป็น comment โปรแกรมจะไม่ประมวลผล บรรทัดนั้นๆ

ตัวอย่าง
# this is a comment << เครื่องหมาย "#" อยู่ตำแหน่งแรกของบรรทัด # bad comment << ผิดกฏการ comment เพราะมีเว้นช่องว่าง 1 เคาะเว้นวรรค(white line) หน้าเครื่องหมาย "#" :global a; # bad comment << ผิดกฏการ comment เพราะใส่ #comment ไว้ท้ายประโยคโดยไม่ขึ้นบรรทัดใหม่ :global myStr "lala # this is not a comment" << ไม่ใช่ comment เพราะเครื่องหมาย "#" ไม่อยู่ตำแหน่งเริ่มต้นบรรทัด




Line joining – การเชื่อมต่อบรรทัด


การทำงานของสคริปเป็นลักษณะทำงานรายบรรทัดไปจนจบ กรณีบรรทัดที่เขียนเป็นตรรกกะยาว จนอ่านลำบากในบรรทัดเดียว จึงมีวิธีต่อบรรทัดโดยใช้สัญลักษณ์ “\” เป็นตัวแต่ใช้เชื่อมประโยค comment ยาวๆ ไม่ได้

ตัวอย่าง


:if ($a = true \
and $b=false) do={ :put “$a $b”; } << เป็น pseudo code ทำงานจริงไม่ได้ ใช้เพื่ออธิบายเท่านั้น

:if ($a = true \ # bad comment << ผิดกฏการ comment จะอยู่ตำแหน่งอื่นนอกจากตำแหน่งแรกสุดของบรรทัดไม่ได้
and $b=false) do={ :put “$a $b”; }

# comment \
continued – invalid (syntax error) << ผิดกฎ การเชื่อมต่อบรรทัดใช้กับ comment ไม่ได้



การเว้นวรรค ระหว่างชุดคำสั่ง (Whitespace between tokens)
{ :local a true; :local b false; # whitespace is not required, การใช้ && operator ไม่ต้องเคาะวรรคก็ได้ จะเคาะวรรคก็ไม่มีปัญหา :put (a&&b); # whitespace is required, การใช้ and operator จำเป็นต้องเคาะวรรค เพื่อแยกระหว่างตัวแปรกับ operator :put (a and b); }


ห้ามเว้นวรรค


ระหว่างตัวแปรกับเครื่องหมาย “=” ห้ามเว้นวรรค ‘=‘ เช่น a = 1(ผิด), a=1(ถูก), a= 1(ถูก) และ

ระหว่าง ‘from=‘ ‘to=‘ ‘step=‘ ‘in=‘ ‘do=‘ ‘else=‘ ก็เช่นเดียวกัน

ตัวอย่าง


#แบบที่ผิด เว้นวรรคระหว่าง ‘=‘
:for i from = 1 to = 2 do = { :put $i }

#แบบที่ถูกตามรูปแบบ ‘=‘
:for i from=1 to=2 do={ :put $i }
:for i from= 1 to= 2 do={ :put $i }



#incorrect
/ip route add gateway = 3.3.3.3
#correct
/ip route add gateway=3.3.3.3





Scopes ขอบเขตค่าตัวแปรและการเรียกใช้ค่าตัวแปรต่างๆ มี 2 แบบคือ
Global scope
Global scope หรือ root scope is default scope of the script. It is created automatically and can not be turned off.
Local scope
ตัวแปร หรือค่าต่างๆ ที่อยู่ในวงเล็บ “{ }” ซึ่งจะถูกเรียกใช้ได้บรรทัดถัดไป หลังจากการประกาศตัวแปร หรือการประมวลผลใดๆ และเรียกใช้จากนอกวงเล็บไม่ได้

ตัวอย่าง


{
:local a 3;
{
:local b 4;
:put ($a+$b);
}
#line below will generate error
:put ($a+$b);
}



** :put ($a+$b) ทำงานไม่ได้ ก็เพราะเรียกใช้งานตัวแปร $b นอกวงเล็บของ :local b 4; นั่นเอง

** ข้อควรจำ การพิมพ์โปรแกรมลงไปใน terminal เป็นการทำงานแบบ local scope ดังนั้นการประกาศตัวแปรในบรรทัดแรก จะไม่สามารถเรียกตัวแปรนั้นในในบรรทัดต่อไป

ตัวอย่าง


:local myVar a;
:put $myVar



**คำเตือน ประกาศตัวแปร global ภายใน local scope ถือว่าฟาวล์ ใช้ไม่ได้นะค้าพ

ตัวอย่าง
{ :local a 3; { :global b 4; } :put ($a+$b); }


Keywords


คำสงวนที่ห้ามใช้เด็ดขาดในการเขียนสคริปต์ ซึ่งก็คือคำซ้ำกับ operator นั่นเอง ได้แก่คำว่า and or not in

Delimiters


เครื่องหมายคั่นคำที่ยอมให้ใช้งานได้ () [] {} : ; $ /

Data types – ชนิดของข้อมูลที่ใช้งานได้ประเภทต่างๆ

TypeDescriptionnum(number) – 64bit signed integer – possible hexadecimal input;
bool(boolean) – values can bee true or false;
str (string) – character sequence;
ip – IP address;
ip6-prefix – IPv6 prefix
id (internal ID) – hexadecimal value prefixed by '*' sign. Each menu item has assigned unique number – internal ID;
time – date and time value;
array – sequence of values organized in an array;
nil – default variable type if no value is assigned;



Constant Escape Sequences การพิมพ์ตัวอักษรพิเศษๆ ทำได้โดยการใส่ back slash ไว้ด้านหน้าตัวอักษรนั้น ดังนี้

\"Insert double quote – การเพิ่มอักษร "ฟันหนู"\\ Insert backslash – การเพิ่มอักษร "\"
\n Insert newline – การขึ้นบรรทัดใหม่
\r Insert carriage return – การเพิ่มรหัสให้ cursor ไปต้นบรรทัด
\t Insert horizontal tab – การเพิ่ม tab เว้นวรรค
\$ Output $ character. Otherwise $ is used to link variable. – การแสดงผลตัวอักษร "$" (dollar sign) ถ้าไม่มี "\" อยู่ด้านหน้าจะหมายถึงค่าตัวแปรในสคริปต์
\? Output ? character. Otherwise ? is used to print "help" in console. – การแสดงผลตัวอักษร "?" ถ้าไม่มี "\" จะหมายถึงการเปิด help ใน console terminal
\_ – space การเว้นวรรค
\a – BEL (0x07)
\b – backspace (0x08)
\f – form feed (0xFF)
\v Insert vertical tab
\xx แสดงผลเลขฐาน 16 โดยตัวเลขฐาน 16 ต้องระบุเป็นตัวพิมพ์ใหญ่เท่านั้น



ตัวอย่าง


:put “\48\45\4C\4C\4F\r\nThis\r\nis\r\na\r\ntest”;





Operators – การดำเนินการ

Arithmetic Operators – การดำเนินการทางคณิตศาสตร์

OpearatorDescriptionExample+" binary addition :put (3+4);
–" binary subtraction :put (1-6);
*" binary multiplication :put (4*5);
/" binary division :put (10 / 2); :put ((10)/2)
–" unary negation { :local a 1; :put (-a); }





** การหารค่า ควรเว้นวรรคระหว่างคำด้วย เช่น 10 / 2 เพื่อป้องกันการสับสนกับค่า ip address (10.0.0.1/24)

Relational Operators

OpearatorDescriptionExample<" less :put (3<4 br="">>" greater :put (3>4);
=" equal :put (2=2);
<=" less or equal
>=" greater or equal
!=" not equal





Logical Operators

OpearatorDescriptionExample“!” หรือ “not” logical NOT :put (!true);
“&&” หรือ “and” logical AND :put (true&&true)
“||” “or” logical OR :put (true||false);
“in” ค่าที่มีใน … :put (1.1.1.1/32 in 1.0.0.0/8);







Bitwise Operators การกลับบิทของเลขฐาน 2


Bitwise operators ใช้งานได้กับตัวเลข และ IP Address

“~” bit inversion – การกลับ bit (เลขฐาน 2) ตัวอย่าง :put (~0.0.0.0)


“|” bitwise OR. Performs logical OR operation on each pair of corresponding bits. In each pair the result is “1” if one of bits or both bits are “1”, otherwise the result is “0”. – การทำงานแบบ OR , บิทที่เปรียบเทียบกันหากมีค่าเป็น 1 ผลลัพธ์ของบิทนั้นจะมีค่าเป็น 1 ทันที เช่น 1 OR 1 = 1, 0 OR 0 = 0, 1 OR 0 = 1, 0 OR 1 =1



“^” bitwise XOR. The same as OR, but the result in each position is “1” if two bits are not equal, and “0” if bits are equal. – เทียบหลักของบิทตัวเลข หลักที่เหมือนกัน จะได้ผลลัพธ์เป็นศูนย์ หลักที่เลขต่างกันได้ผลลัพธ์เป็นหนึ่ง พูดย่อๆ เหมือนสมัยเรียนได้ว่าเหมือนศูนย์ต่างหนึ่ง



“&” bitwise AND. In each pair the result is “1” if first and second bit is “1”. Otherwise the result is “0”. – การทำงานแบบ AND จะมีค่าผลลัพธ์เป็น 1 เมื่อ บิทที่เปรียบเทียบทั้งคู่มีค่า 1 เหมือนกันเท่านั้น เช่น 1 AND 1 = 1, 1 AND 0 = 0, 0 AND 1 = 0, 0 AND 0 = 0



“<<” left shift by given amount of bits
“>>” right shift by given amount of bits

Concatenation Operators – ใช้เชื่อมข้อความ การนำผลลัพธ์มาเรียงต่อกัน


“.” นำสองข้อความมาเชื่อมกัน ตัวอย่าง :put (“concatenate” . “ “ . “string”);
“,” นำ Array มาเชื่อมต่อกัน หรือเพิ่มสมาชิกเข้าไปใน Array ตัวอย่าง :put ({1;2;3} , 5 );



การนำข้อความมาต่อกันอีกวิธี เหมือนการเขียนโปรแกรมทั่วๆ ไป

:global myVar “world”;
:put (“Hello ” . $myVar);

# next line does the same as above
:put “Hello $myVar”;





เขียนการแสดงผลลัพธ์ค่าตัวแปรด้วยการใช้สัญญลักษณ์ “$[ ]” และ “$( )”:local a 5; :local b 6; :put " 5x6 = $($a * $b)"; :put " We have $[ :len [/ip route find] ] routes";




Operator อื่นๆ

OpearatorDescriptionExample1. “[ ]” command substitution. Can contain only single command line :put [ :len "my test string"; ];
2. “( )” sub expression or grouping operator :put ( "value is " . (4+5));
3. “$” substitution operator :global a 5; :put $a;
4. “~” binary operator that matches value against POSIX extended regular expression Print all routes which gateway ends with 202 – /ip route print where gateway~"^[0-9 \\.]*202"
5. “->” Get an array element by key :global aaa {a=1;b=2}; :put ($aaa->"a"); :put ($aaa->"b") << ทดสอบแล้วไม่มีผลลัพธ์





Variables ตัวแปรมี 2 ชนิดคือ
ตัวแปร global เข้าถึงได้จากทุกสคริปต์ ใช้คำว่า :global นำหน้าการประกาศตัวแปร
ตัวแปร local เข้าถึงตัวแปรได้เฉพาะใน scope (ในวงเล็บ) ใช้คำว่า :local ในการประกาศตัวแปร


คำเตือน : Starting from v6.2 there can be undefined variables. When variable is undefined parser will try to look for variables set, for example, by DHCP lease-script or Hotspot on-login

ต้องประกาศตัวแปรก่อนการใช้งานเสมอ เพื่อป้องกันผลลัพธ์ผิดพลาด compilation error ตัวอย่างที่ผิด เช่น


# following code will result in compilation error, because myVar is used without declaration
:set myVar “my value”;
:put $myVar



ซึ่งถ้าเราเข้าใจเนื้อหาด้านบน การพิมพ์เข้า console เองโดยตรงนั้น ตัวแปรจะเป็น local scope เฉพาะในบรรทัดนั้นๆ ดังนั้นจึงเขียนใหม่ไว้ในบรรทัดเดียวกันจึงจะเป็นวิธีที่ถูก

จากนั้น ลองประกาศตัวแปรไว้ก่อนใช้งาน จึงเป็นวิธีที่ถูกต้อง และได้ผลลัพธ์ออกมา




หากใช้กับตัวแปรของระบบ ไม่จำเป็นต้องประกาศตัวแปร ตัวอย่าง


/system script
add name=myLeaseScript policy=\
ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \
source=”:log info \$leaseActIP\r\
\n:log info \$leaseActMAC\r\
\n:log info \$leaseServerName\r\
\n:log info \$leaseBound”

ตัวแปรเช่น $leaseActIP และตัวแปรอื่นๆ ไม่ได้ประกาศมาก่อน แต่ก็สามารถสร้างลงใน scripts repo. ได้


/ip dhcp-server set myServer lease-script=myLeaseScript

ตัวแปรควรจะมีเพียงตัวอักษร และตัวเลข หากมีตัวอักขระพิเศษ เช่น “–“, “_” ก็ให้ใช้ฟันหนูครอบตัวแปรไว้ เช่น


#valid variable name
:local myVar;

#invalid variable name
:local my-var;

#valid because double quoted
:global “my-var”;

การประกาศตัวแปรโดยไม่ใส่ค่าเข้าไปโดยมากข้อมูลจะถูกตั้งค่าเป็น ‘nil‘ ก็คือค่าศูนย์อัติโนมัติ หรือเป็นค่าเริ่มต้นตามชนิดของข้อมูล ซึ่งscript engine เป็นผู้ตัดสินใจเอง เลื่อนขึ้นไปอ่าน Data type/ชนิดข้อมูล ด้านบนประกอบ หรือบางครั้งเราก็มีความจำเป็นต้องแปลงรูปแบบก่อนก่อนใช้งาน ตัวอย่างเช่น


#convert string to array
:local myStr “1,2,3,4,5”;
:put [:typeof $myStr];
:local myArr [:toarray $myStr];
:put [:typeof $myArr]



ตัวแปร ใช้หลักการ “คำตรงตัว” ตัว a กับ A ไม่เท่ากัน


:local myVar “hello”
# following line will generate error, because variable myVAr is not defined
:put $myVAr
# correct code
:put $myVar





ใช้คำสั่ง set เพื่อลบค่าในตัวแปร


#remove variable from environment
:global myVar “myValue”
:set myVar;

ประกาศตัวแปร Global MyVar ให้มีค่า “myValue” ดูค่าตัวแปร Global ได้ใน Scripts Environment



ใช้คำสั่ง set เพื่อลบค่าตัวแปร ดูในช่อง Environment อีกทีเพื่อตรวจสอบ




Forward Port ด้วย Router Mikrotik

Port Forward คืออะไร

Port Forward คือการส่งต่อ package ที่วิ่งเข้ามาทาง port นั้นไปหา ปลายทางที่เรากำหนดไว้ โดยอาศัยการทำงานของ NAT ( Network Address Translation ) โดยใน Mikrotik นั้นจะใช้ dstnat ในการทำงาน

ประโยชน์ของ Port Forward
  • นิยมใช้ใช้กับกล้องวงจรปิด
  • ใช้กับ Application Server ที่มีทรัพยากร Public IP ที่มากกว่าจะนวน server ขององค์กร


กำหนดการตั้งค่า
  1. Forward port จากภายนอกเข้ามาหา CCTV ซึ่งอยู่ในวงแลน
  2. กล้อง IP 192.168.1.8 port 81
  3. ต้องการเข้ามาดูจากภายนอกด้วย port 8181


การตั้งค่า Mikrotik
เข้าไปที่เมนู IP > Firewall > NAT


จากนั้นกด Add (+)
ช่อง Chain = dstnat
ช่อง Protocal = TCP
ช่อง Dst.Port = 8181 คือพอตที่จะให้เขามาจากภายนอก


จากนั้นกด Tab Action
Action= dst-nat
To Address = 192.168.1.8
To Ports. = 81
จากนั้นกด OK

เมื่อกดบันทึกแล้ว ลองเข้าจาก DDNS  ที่เราทำไว้แล้วใน Mikrotik Cloud สมมติเป็น 
http://cctv.dyndns.org:8181


Cr : cmmikrotik.blogspot.com

MikroTik Block Facebook และ Youtube ด้วย Layer 7 Protocols

วิธี Block Facebook หรือ Youtube ด้วย MikroTik Firewall


สร้าง Layer 7 Protocol โดยใส่ Rexexp ดังนี้
^.+(facebook.com).*$
^.+(youtube.com).*$







จากนั่นทำการเพิ่ม Firewall Rule ดังนี้

เลือก Layer 7 ตามที่เราได้สร้างไว้



เลือก Action เป็น Drop

จะได้หน้าตาประมาณนี้

เมื่อมีการ Block Package จะสังเกตได้ว่าตัวเลข Counter จะวิ่ง

ในกรณีที่ต้องการ Block บาง IP เท่านั่นสามารถทำได้ดังนี้ โดยการสร้าง Address List ขึ้นมาแล้วใส่ IP ที่ต้องการ Block ลงไป

จากนั่นให้ไปแก้ Firewall ตัวที่เราสร้างมาโดยเรียกใช้ Address List ที่สร้างมาครับ

เพียงเท่านี้เราก็ Block ได้ตามที่เราต้องการแล้วครับ


Cr : mikrotikshop.blogspot.com