[EP.30] 2 WAN (PPPoE-Client) To 2 LAN (Separate) - Auto FailOver With Netwatch Tool and Script

Krittin Srithong
techblogclub
Published in
8 min readFeb 23, 2022

--

Scenario

Question

  • Router ONU ของผู้ให้บริการ (ISP1-TRUE) ตั้งค่า Bridge Mode
  • Router ONU ของผู้ให้บริการ (ISP2-3BB) ตั้งค่า Bridge Mode

ฝั่ง MikroTik (R1) Version 6.49.2

  • ether1 - WAN (PPPoE Client) รับเน็ต ISP1 - TRUE (200M/100M), Distance: 1
  • ether2 - WAN (PPPoE Client) รับเน็ต ISP2 - 3BB (50M/10M), Distance: 2
  • ether4 - LAN-A (IP: 10.1.1.1/24, แจก DHCP: 10.1.1.2-10.1.1.254)
  • ether5 - LAN-B (IP: 10.2.2.1/24, แจก DHCP: 10.2.2.2-10.2.2.254)

Netwatch

  • เส้น ISP1-TRUE → ping 9.9.9.9 (Quad9 DNS)
  • เส้น ISP2-3BB → ping 1.1.1.1 (Cloudflare DNS)

Answer

เปิด Winbox และ Connect To MikroTik (R1)

  1. รับ Internet จาก ISP ทั้ง 2 ether

# ether1 (pppoe-out1) เส้น ISP1-TRUE #

PPP → Press + → PPPoE Client

General tabs,

  • Name: pppoe-out1 (ISP1-TRUE)
  • Interfaces: ether1

Dial Out

  • User: กรอก User PPPoE ที่ได้รับมาจากผู้ให้บริการ TRUE
  • Password: กรอก Password PPPoE ที่ได้รับมาจากผู้ให้บริการ TRUE
  • Add Default Route: เอาเครื่องหมายติ๊กถูกออก
  • Comment: Connected To ISP1-TRUE (คอมเมนท์เพื่อให้เข้าใจ)
  • กด Apply และ OK
หากเชื่อมต่อสำเร็จต้องขึ้น Status: connected (pppoe-out1)

# ether2 (pppoe-out2) เส้น ISP2-3BB #

PPP → Press + → PPPoE Client

General tabs,

  • Name: pppoe-out2 (ISP2-3BB)
  • Interfaces: ether2

Dial Out

  • User: กรอก User PPPoE ที่ได้รับมาจากผู้ให้บริการ 3BB
  • Password: กรอก Password PPPoE ที่ได้รับมาจากผู้ให้บริการ 3BB
  • Add Default Route: เอาเครื่องหมายติ๊กถูกออก
  • Comment: Connected To ISP2-3BB (คอมเมนท์เพื่อให้เข้าใจ)
  • กด Apply และ OK
หากเชื่อมต่อสำเร็จต้องขึ้น Status: connected (pppoe-out2)

2. ทำ Default Route สำหรับออก Internet พื้นฐาน พร้อมกับตั้ง Distance ให้กับทั้งสอง WAN

# ของ pppoe-out1 (ISP1-TRUE) #

  • IP → Routes กด +
  • Dst. Address: 0.0.0.0/0
  • Gateway: เลือก pppoe-out1 (ขา Interface ISP1-TRUE)
  • Distace: 1 (WAN MAIN)
  • Comment ตั้งเป็น “To-ISP1” (ให้ตั้งตามภาพ ห้ามแก้ไขเด็ดขาด เพราะ คอมเมนท์นี้ถูกใช้งานใน Script ของ Netwatch เพื่อสั่ง เปิด-ปิด สลับเส้นเวลา Internet ล่ม)
  • กด Apply และ OK

# ของ pppoe-out2 (ISP2-3BB) #

  • IP → Routes กด +
  • Dst. Address: 0.0.0.0/0
  • Gateway: pppoe-out2 (ขา Interface ISP2-3BB)
  • Distace: 2 (WAN Backup)
  • Comment ตั้งเป็น “To-ISP2” (ให้ตั้งตามภาพ ห้ามแก้ไขเด็ดขาด เพราะ คอมเมนท์นี้ถูกใช้งานใน Script ของ Netwatch เพื่อสั่ง เปิด-ปิด สลับเส้นเวลา Internet ล่ม)
  • กด Apply และ OK

3. ตั้งค่า DNS Server

  • Servers: 8.8.8.8, 8.8.4.4
  • กด Apply และ OK

4. ปรับเวลาให้ตรงกับเวลามาตรฐานไทย GMT+07:00

  • System → Clock → Manual Time Zone (Tab)
  • Time Zone: +07:00
  • กด Apply และ OK

5. สร้างขา Interface ให้กับ LAN-A และ LAN-B (สำหรับ Network ภายใน)

# LAN-A (GW IP: 10.1.1.1/24) บน ether4 #

  • IP → Addresses กด +
  • Address: 10.1.1.1/24
  • กด Apply และ OK

# LAN-B (GW IP: 10.2.2.1/24) บน ether5 #

  • IP → Addresses กด +
  • Address: 10.2.2.1/24
  • กด Apply และ OK
ภาพรวม Address List

6. สร้าง DHCP Server ให้กับ LAN-A และ LAN-B

# LAN-A #

  • IP → DHCP Server กด DHCP Setup
  • DHCP Server Interface: ether4
  • กด Next
  • DHCP Address Space: 10.1.1.0/24
  • กด Next
  • Gateway for DHCP Network: 10.1.1.1
  • กด Next
  • Addresses to Give Out: 10.1.1.2–10.1.1.254 (LAN-A แจก IP ตั้งแต่หมายเลข 2–254 ให้กับ Client)
  • กด Next
  • กำหนด DNS Servers เป็น: 8.8.8.8 และ 8.8.4.4
  • กด Next
  • ตั้ง Lease Time: 1d 00:00:00 (ปรับตามความต้องการ)
  • กด Next
  • กด OK

# LAN-B #

  • IP → DHCP Server กด DHCP Setup
  • DHCP Server Interface: ether5
  • กด Next
  • DHCP Address Space: 10.2.2.0/24
  • กด Next
  • Gateway for DHCP Network: 10.2.2.1
  • กด Next
  • Addresses to Give Out: 10.2.2.2–10.2.2.254 (LAN-B แจก IP ตั้งแต่หมายเลข 2–254 ให้กับ Client)
  • กด Next
  • กำหนด DNS Servers เป็น: 8.8.8.8 และ 8.8.4.4
  • กด Next
  • ตั้ง Lease Time: 1d 00:00:00 (ปรับตามความต้องการ)
  • กด Next
  • กด OK

7. ทำ masquerade เพื่อให้ LAN-A และ LAN-B ออกสู่อินเตอร์ได้ Out interface pppoe-out1 (ISP1-TRUE) และ pppoe-out2 (ISP2–3BB)

# ขา WAN pppoe-out1 (ISP1-TRUE) #

  • IP → Firewall → NAT กด +
  • chain: srcnat
  • Out. interface: pppoe-out1
  • action: masquerade
  • Comment: To ISP1-TRUE (คอมเมนท์ไว้เพื่อความเป็นระเบียบ)

# ขา WAN pppoe-out2 (ISP2-3BB) #

  • IP → Firewall → NAT กด +
  • chain: srcnat
  • Out. interface: pppoe-out2
  • action: masquerade
  • Comment: To ISP2-3BB (คอมเมนท์ไว้เพื่อความเป็นระเบียบ)

8. ทำ Policy-Based Routing (PBR) เพื่อให้ Connections ได้รู้ว่า LAN-A ต้องออก ISP1-TRUE และ LAN-B ต้องออก ISP2-3BB

# Rule 0 #

  • IP → Route → Rules tab กด +
  • Src. Address: 10.1.1.0/24 (LAN-A)
  • Dst. Address: 10.2.2.0/24 (LAN-B)
  • Action: lookup
  • Table: เลือก main
  • Comment: LAN-A To LAN-B (ความหมายคืออนุญาตให้ LAN-A ติดต่อสื่อสารกับ LAN-B ได้)
  • กด Apply และ OK

# Rule1 #

  • IP → Route → Rules tab กด +
  • Src. Address: 10.2.2.0/24 (LAN-B)
  • Dst. Address: 10.1.1.0/24 (LAN-A)
  • Action: lookup
  • Table: เลือก main
  • Comment: LAN-B To LAN-A (ความหมายคืออนุญาตให้ LAN-B ติดต่อสื่อสารกับ LAN-A ได้)
  • กด Apply และ OK

# Rule2 #

  • IP → Route → Rules tab กด +
  • Src. Address: 10.1.1.0/24 (LAN-A)
  • Action: lookup
  • Table: ให้พิมพ์ “via-ISP1” ในช่อง
  • Comment: via-ISP1 (ความหมายคือเป็นการ Mark Connection ของ LAN-A (10.1.1.0/24) โดยเก็บใน Table ชื่อ via-ISP1 และเราจะนำ via-ISP1 ไปทำ Route อีกทีเพื่อกำหนดเส้นทางออกสู่อินเตอร์เน็ต)
  • กด Apply และ OK

# Rule3 #

  • IP → Route → Rules tab กด +
  • Src. Address: 10.2.2.0/24 (LAN-B)
  • Action: lookup
  • Table: ให้พิมพ์ “via-ISP2” ในช่อง
  • Comment: via-ISP2 (ความหมายคือเป็นการ Mark Connection ของ LAN-B (10.2.2.0/24) โดยเก็บใน Table ชื่อ via-ISP2 และเราจะนำ via-ISP2 ไปทำ Route อีกทีเพื่อกำหนดเส้นทางออกสู่อินเตอร์เน็ต)
  • กด Apply และ OK

# กำหนด Route LAN-A (10.1.1.0/24) ออก pppoe-out1 (ISP1-TRUE) #

  • IP → Route กด +
  • Dst. Address: 0.0.0.0/0
  • Gateway: เลือก pppoe-out1 (ขา Interface ISP1-TRUE)
  • Distance: 1
  • Routing Mark: เลือก via-ISP1 (Connection ของ LAN-A ทั้งหมด)
  • Comment ตั้งเป็น “via-ISP1” (ให้ตั้งตามภาพ ห้ามแก้ไขเด็ดขาด เพราะ คอมเมนท์นี้ถูกใช้งานใน Script ของ Netwatch เพื่อสั่ง เปิด-ปิด สลับเส้นเวลา Internet ล่ม)
  • กด Apply OK

# กำหนด Route LAN-B (10.2.2.0/24) ออก pppoe-out2 (ISP2-3BB) #

  • IP → Route กด +
  • Dst. Address: 0.0.0.0/0
  • Gateway: เลือก pppoe-out2 (ขา Interface ISP2-3BB)
  • Distance: 1
  • Routing Mark: เลือก via-ISP2 (Connection ของ LAN-B ทั้งหมด)
  • Comment ตั้งเป็น “via-ISP2” (ให้ตั้งตามภาพ ห้ามแก้ไขเด็ดขาด เพราะ คอมเมนท์นี้ถูกใช้งานใน Script ของ Netwatch เพื่อสั่ง เปิด-ปิด สลับเส้นเวลา Internet ล่ม)
  • กด Apply OK

9. ตั้งค่า FailOver (สลับเส้นเน็ตอัตโนมัติ) กรณีลืมชำระค่าบริการอินเตอร์เน็ต, ISP กำลังปรับปรุง ซ่อมแซ่ม ฯลฯ โดยใช้ Netwatch Tool และ Script

# ตั้งค่า ขา WAN pppoe-out1 (ISP1-TRUE) Route to 9.9.9.9 (Quad9 DNS) #

  • IP → Route กด +
  • Dst. Address: 9.9.9.9
  • Gateway: เลือก pppoe-out1 (ขา Interface ISP1-TRUE)
  • Distance: 1
  • Comment: Netwatch ISP1 (Quad9 DNS)
  • กด Apply และ OK

# ตั้งค่า ขา WAN pppoe-out2 (ISP2-3BB) Route to 1.1.1.1 (Cloudflare DNS) #

  • IP → Route กด +
  • Dst. Address: 1.1.1.1
  • Gateway: เลือก pppoe-out2 (ขา Interface ISP2-3BB)
  • Distance: 1
  • Comment: Netwatch ISP2 (Cloudflare DNS)
  • กด Apply และ OK

# Checking Netwatch ทั้ง ISP1-TRUE และ ISP2-3BB ว่าล่มหรือไม่ (หากล่มให้ Disable อินเตอร์เน็ตเส้นทางนั่น) #

# Netwatch ISP1-TRUE #

  • Tools → Netwatch กด +
  • Host: 9.9.9.9
  • Interval 00:00:10 (เช็คทุกๆ 10 วิ ว่า ISP1-TRUE ล่มหรือไม่?)
  • Timeout: 800 ms
  • Up tab,
  • On Up: คัดลอก Code จากภาพไปใส่
  • Down tab,
  • On Down: คัดลอก Code จากภาพไปใส่
  • Comment: Netwatch ISP1-TRUE

# Netwatch ISP2-3BB #

  • Tools → Netwatch กด +
  • Host: 1.1.1.1
  • Interval 00:00:10 (เช็คทุกๆ 10 วิ ว่า ISP2-3BB ล่มหรือไม่?)
  • Timeout: 800 ms
  • Up tab,
  • On Up: คัดลอก Code จากภาพไปใส่
  • Down tab,
  • On Down: คัดลอก Code จากภาพไปใส่
  • Comment: Netwatch ISP2–3BB

Testing

กรณี 1 # ISP1-TRUE และ ISP2-3BB ไม่มีเส้นไหนล่ม #

  • PC เสียบ ether4 (LAN-A 10.1.1.254/24)
  • PC เสียบ ether5 (LAN-B 10.2.2.254/24)

กรณี 2 # ISP1-TRUE ล่ม และ ISP2-3BB ใช้งานได้ปกติ #

  • PC เสียบ ether4 (LAN-A 10.1.1.254/24)
  • PC เสียบ ether5 (LAN-B 10.2.2.254/24)

กรณี 3 # ISP1-TRUE ใช้งานได้ปกติ และ ISP2-3BB ล่ม#

  • PC เสียบ ether4 (LAN-A 10.1.1.254/24)
  • PC เสียบ ether5 (LAN-B 10.2.2.254/24)

--

--

Krittin Srithong
techblogclub

Hi, I’m Krittin. I am studying in bachelor of Computer Enginnering. I have MikroTik Certificates as following MTCNA, MTCSE, MTCUME. (medium.com/techblogclub)