PPC Load Balance MikroTik

สวัสดีครับ 

วันนี้ผมจะมาเขียนเรื่อง PPC Load Balance mikrotik และอธิบายรูปแบบการคอนฟิก mikrotik คร่าวๆให้
สำหรับท่านที่จะเอา mikrotik ไปทำ loadbalance และทำ hotspot  ครับ

อ้างอิง

http://wiki.mikrotik.com/wiki/Load_Balancing 

ประเภทของ Load Balance ต่างๆ จะดูที่การแบ่งแบบ connection หรือ packet

ส่วนใหญ่ที่เห็นทำกันจะเป็น PPC
script จาก Manual:PPC

/ ip address
add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=LAN
add address=10.111.0.2/24 network=10.111.0.0 broadcast=10.111.0.255 interface=ISP1
add address=10.112.0.2/24 network=10.112.0.0 broadcast=10.112.0.255 interface=ISP2

/ ip firewall mangle
add chain=prerouting dst-address=10.111.0.0/24  action=accept in-interface=LAN
add chain=prerouting dst-address=10.112.0.0/24  action=accept in-interface=LAN
add chain=prerouting in-interface=ISP1 connection-mark=no-mark action=mark-connection \
    new-connection-mark=ISP1_conn
add chain=prerouting in-interface=ISP2 connection-mark=no-mark action=mark-connection \ 
    new-connection-mark=ISP2_conn
add chain=prerouting  in-interface=LAN connection-mark=no-mark dst-address-type=!local \
    per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=ISP1_conn 
add chain=prerouting  in-interface=LAN connection-mark=no-mark dst-address-type=!local \ 
    per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ISP2_conn
add chain=prerouting connection-mark=ISP1_conn in-interface=LAN action=mark-routing \ 
    new-routing-mark=to_ISP1
add chain=prerouting connection-mark=ISP2_conn in-interface=LAN action=mark-routing \
    new-routing-mark=to_ISP2
add chain=output connection-mark=ISP1_conn action=mark-routing new-routing-mark=to_ISP1     
add chain=output connection-mark=ISP2_conn action=mark-routing new-routing-mark=to_ISP2

/ ip route
add dst-address=0.0.0.0/0 gateway=10.111.0.1 routing-mark=to_ISP1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 routing-mark=to_ISP2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.111.0.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 distance=2 check-gateway=ping

/ ip firewall nat 
add chain=srcnat out-interface=ISP1 action=masquerade
add chain=srcnat out-interface=ISP2 action=masquerade

ตาม script ด้านบน เจอลูกค้าถามมาบ่อยมาก ว่าเอาไปใช้ยังไง อ้างอิงเอามาจาก wiki ของ mikrotik   
ถ้าสามารถคอนฟิก Manual โดยใช้ mouse 
คลิก + add ทำตามขั้นตอนแล้วไม่ยากครับ   ใน script ยังไม่มี DHCP ต้อง add เพิ่มเอง ลองแปลงทีละส่วนกันครับ  เนื่องจาก script เขียนมาจาก 
Router OS ที่เป็น PC เค้าแทนเป็น interface ครับ  

ผมใช้ ether1-ether3 ตามปกติได้สคริปท์ที่ export มาตามนี้ครับ
***เพิ่ม DHCP Server แล้ว

#ether1=10.111.0.2/24 Gateway 10.111.0.1 
#ether2=10.111.0.2/24 Gateway 10.112.0.1 
#ether3=192.168.100.1 dhcp range 192.168.100.2-192.168.100.254
#ether4=master port3
#ether5=master port3
#loadbalance PCC Ratio 3:1

/interface ethernet
set [ find default-name=ether4 ] master-port=ether3
set [ find default-name=ether5 ] master-port=ether3

/ip pool
add name=LAN-dhcp ranges=192.168.100.2-192.168.100.254

/ip dhcp-server
add address-pool=LAN-dhcp disabled=no interface=ether3 name=LAN

/ip address
add address=10.111.0.2/24 interface=ether1 network=10.111.0.0
add address=10.112.0.2/24 interface=ether2 network=10.112.0.0
add address=192.168.100.1/24 interface=ether3 network=192.168.100.0

/ip dhcp-server network
add address=192.168.100.0/24 gateway=192.168.100.1

/ip dns
set allow-remote-requests=yes cache-size=5000000KiB max-udp-packet-size=512 servers=8.8.8.8,8.8.4.4

/ip dns static
add address=192.168.100.1 name=router

/ip firewall mangle
add action=mark-connection chain=prerouting in-interface=ether1 new-connection-mark=ether1_conn
add action=mark-connection chain=prerouting in-interface=ether2 new-connection-mark=ether2_conn
add chain=prerouting dst-address=10.111.0.0/24 in-interface=ether3
add chain=prerouting dst-address=10.112.0.0/24 in-interface=ether3
add action=mark-connection chain=prerouting dst-address-type=!local in-interface=ether3 new-connection-mark=ether1_conn per-connection-classifier=both-addresses-and-ports:2/0
add action=mark-connection chain=prerouting dst-address-type=!local in-interface=ether3 new-connection-mark=ether2_conn per-connection-classifier=both-addresses-and-ports:2/1

add action=mark-routing chain=prerouting connection-mark=ether1_conn in-interface=ether3 new-routing-mark=to_ether1
add action=mark-routing chain=prerouting connection-mark=ether2_conn in-interface=ether3 new-routing-mark=to_ether2
add action=mark-routing chain=output connection-mark=ether1_conn new-routing-mark=to_ether1
add action=mark-routing chain=output connection-mark=ether2_conn new-routing-mark=to_ether2

/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1
add action=masquerade chain=srcnat out-interface=ether2

/ip route
add check-gateway=ping distance=1 gateway=10.111.0.1 routing-mark=to_ether1
add check-gateway=ping distance=1 gateway=10.112.0.1 routing-mark=to_ether2
add check-gateway=ping distance=1 gateway=10.111.0.1
add check-gateway=ping distance=2 gateway=10.112.0.1

/ip service
set telnet disabled=yes
set ftp disabled=yes
set www port=81
set ssh disabled=yes

/system clock
set time-zone-name=Asia/Bangkok


เทสว่าใช้งานได้หรือไม่
ผมเอา RB450G มา DHCP ที่ ether2 และ ether3 แล้ว limit ความเร็วไว้ที่ 20 Mbps/5Mbps (ตอนแรกทำไว้ 30 ครับ แต่ความเร็วเน็ตไม่ถึงเลยลดเป็น 20)



 เทสโหลด driver nvidia ขนาดไฟล์ 238 MB

ดัดแปลงเป็น
-ความเร็วไม่เท่ากัน ทำยังไง
การแบ่งอัตราส่วนหรือกระจาย Ratio ทำเพื่อให้ใช้งานแต่ล่ะเส้นได้เต็มที่
ความเร็ว 200 กับ 100 แบ่งยังไง
วิธีคิดอัตราส่วน 200+100=300 เป็น 3 ส่วน=3/0,3/1,3/2  หรือ 150 กับ 75 มันก็สัดส่วนเดียวกัน

add action=mark-connection chain=prerouting dst-address-type=!local in-interface=ether3 new-connection-mark=ether1_conn per-connection-classifier=both-addresses-and-ports:3/0
add action=mark-connection chain=prerouting dst-address-type=!local in-interface=ether3 new-connection-mark=ether2_conn per-connection-classifier=both-addresses-and-ports:3/1
add action=mark-connection chain=prerouting dst-address-type=!local in-interface=ether3 new-connection-mark=ether1_conn per-connection-classifier=both-addresses-and-ports:3/2

100 กับ 10 บ้างล่ะ ก็ 11 ส่วน 11/0-11/9 ที่ ether1 ,11/10 ที่ ether2
พอนึกตามทันนะครับ

-มี hotspot ต้องเพิ่ม hotspot=auth ในส่วนของ Ratio ด้านบน
ถ้า Ratio มี 2 ส่วนก็เพิ่มแค่ 2 ที่ กรณีไม่ทำ hotspot  จะไม่ติดหน้า login ถอด WAN ออกเส้นนึงติด


ลองทำดูนะครับ
วิธีที่จำทำให้เข้าใจสคริปท์ได้ไว
ผมใช้วิธี Print ออกมาแล้วเซตตามที่ละคำสั่ง
อันไหนไม่ได้ copy สคริปท์วาง แล้วดูตาม ลบทิ้ง เซตใหม่ 
แบบนี้จะเป็นไวและเข้าใจคำสั่งครับ ถ้าสงสัยหาข้อมูลใน WiKi ดูก่อนครับ ถ้าไม่มีพื้นฐานเลยอาจเข้าใจยากหน่อย
สคริปท์บางที่ เคยเจอวางยาด้วย คือ  ใช้ chain=input หรือสลับลำดับใน firewall ใช้แล้วมันไม่รวม
ด้านบนผมอ้างอิงจาก wiki ใช้ได้ดีเลย ดัดแปลงจาก WAN=pppoe ก็แค่เปลี่ยนชื่อ interface

สงสัยเพิ่มเติมอันไหน
mail ถามได้ที่ support@nextgenit.biz ได้ครับ

support@nextgenit.biz
31/3/2017