Mikrotik: การใช้ Jump กับ Return

Mikrotik: การใช้ Jump กับ Return


การใช้ Jump ใน Firewall ของ MikroTik (โดยเฉพาะ Filter Rules) เป็นการทำเพื่อจัดกลุ่มของกฎ (Rules) ให้เป็นระเบียบและประมวลผลได้เร็วขึ้น การทำงานของ router จะไม่ต้องอ่านทุกข้อจะเป็นการ "ถ้าเจอเงื่อนไขนี้ ให้กระโดดข้ามไปตรวจที่เฉพาะส่วนนั้นเลย ไม่ต้องอ่านข้ออื่นให้เสียเวลา"

รู้จักคำสั่ง Jump กับ Return

  1. Jump: ใช้สั่งให้กระโดดไปตามเส้นทางที่กำหนด เช่น จาก Chain:forward ไปยังเส้นทางใหม่ที่สร้างขึ้นเช่น Chain:LAN (Custom Chain).
  2. Return: สั่งให้กระโดดกลับมายังเส้นทางหลัก ณ จุดเดิมที่เพิ่งจากมา เพื่ออ่านกฎข้อถัดไป (ในกรณีที่เส้นทางย่อยนั้นไม่มีกฎไหนที่แมตช์เลย)


ตัวอย่างการใช้ Jump กับ Return

ส่วนที่ 1: สร้าง jump จาก Chain หลัก

เช่น เราจะกำหนดให้เฉพาะ vlan200 วิ่งมาเข้าห้อง หรือ chain ที่ชื่อ "FROM-GUEST"

เลือก
Chain: forward
In. Interface: vlan200


Action: Jump
Jump Target: FROM-GUEST (ตรงนี้พิมพ์ตั้งชื่อเองเลย)

/ip firewall filter add chain=forward in-interface=vlan200 action=jump jump-target=FROM-GUEST comment="Jump traffic from Guest"

ส่วนที่ 2: สร้าง Firewall filter rule ใช้ภายใน Chain "FROM-GUEST"

  • อนุญาติให้ ออกอินเตอร์เน็ทได้ (TCP: 80,443) สำหรับวง GUEST (VLAN200)

/ip firewall filter add chain=FROM-GUEST protocol=tcp dst-port=80,443, action= accept commant="GUEST:Allow internet access HTTP,HTTPS"

ส่วนที่ 3: ใส่ Return (ในกรณีที่ไม่จบใน chain ที่ให้ jump ไป หรือต้องการให้ไปทำงานต่อ)

เช่นในตัวอย่าง ถ้า traffic ไม่ใช่ 80,443 หรือ 10000-10020 หรือ 3478-3481 ถ้าไม่ใส่ return หรือ drop ทั้งหมดไว้ก็เท่ากับวั้น traffic อื่นๆก็จะวิ่งผ่านไปได้ทั้งหมด โดยสามข้อที่ตั้งไว้ไม่มีความหมาย

/ip firewall filter add chain=FROM-GUEST action=return comment="GUEST:Return to forward"

ใส่ Chain: FROM-GUEST


Action: return
เพื่อให้ traffic หลุดออกจากห้อง "FROM-GUEST" เพื่อที่จะกลับไปตรวจสอบที่ Chain หลักต่อไป ณ จุดเดิมที่เพิ่งจากมา เพื่ออ่านกฎข้อถัดไป (ในกรณีที่เส้นทางย่อยนั้นไม่มีกฎไหนที่แมตช์เลย)


อธิบายภาพเพิ่มเติมจากภาพตัวอย่าง


1. Jump ให้เฉพาะที่มาจาก In.Interface: vlan200 jump-target มาที่ Chain ชื่อ "FROM-Guest"

2. ทุก Traffic ที่มาจาก vlan200 จะมาเข้าตรวจสอบที่กฏที่อยู่ภายใต้ Chain ที่ชื่อว่า FROM-Guest ทีละข้อไล่ลงไป

3. หลังจากตรวจตอบทุกข้อแล้วถ้ายังไม่เข้าข้อไหนจนมาเจอ Return ก็จะวิ่งออกจาก Chain ที่ชื่อ FROM-Guest กลับมาที่ Chain หลักถัดจากจุดเดิมที่ Jump มาเพื่อตรวจสอบไล่ทีละข้อลงด้านล่างต่อไป (ในกรณีนี้คือ Chain: forward ที่ใช้ drop: in.interface:all vlan, out, interface:all vlan, drop: all, drop: out interface list=WAN เป็นต้น


หรือถ้าไม่ใช้ return ก็ drop ให้จบภายใน Chain ได้เลย แต่เพื่อที่จะกันสับสนสามารถใส่ return ไว้ที่ท้ายของแต่ละ Chain ย่อยเพื่อให้ไล่ลำดับได้ง่ายขึ้น