[EP.30] 2 WAN (PPPoE-Client) To 2 LAN (Separate) - Auto FailOver With Netwatch Tool and Script
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)
- รับ 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
# 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
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
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)