ข่าว: ข่าวประกาศ

  • 20 เมษายน 2024, 00:46:23

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ผู้เขียน หัวข้อ: ขั้นตอนการติดตั้ง Mikrotik ลงบน Network Server สำหรับใช้งานในร้าน NetCafe (2)  (อ่าน 22915 ครั้ง)

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 3820
    • ดูรายละเอียด
    • อีเมล์
สำหรับหัวข้อนี้ จะเป็นขั้นสูงมากขึ้น เป็นการทำ การ mark connection และก็ทำ mark route

เพื่อแบ่งกลุ่มของข้อมูล และกำหนดเส้นทางให้กับการวิ่งของข้อมูลให้ถูกต้อง ตามที่เราต้องการ

ทำความเข้าใจการวิ่งของข้อมูลก่อน ดังนี้

ในการเชื่อมต่อรับส่งข้อมูล 1 session หรือ 1 connection จะประกอบด้วย

src ip : src port <==> dst ip : dst port

ข้อมูล INPUT
คือ ข้อมูลที่ dst เป็น Router และ src อาจจะมาจาก Internet ผ่านทาง WAN หรือ มาจาก Client ผ่านทาง LAN

ข้อมูล OUTPUT
คือ ข้อมูลที่ src เป็น Router dst อาจจะเป็น Internet โดยส่งไปทาง WAN หรือ dst เป็น Client โดยส่งไปทาง LAN

ข้อมูล FORWARD
คือ ข้อมูลที่ src เป็น Client วิ่งผ่าน Router ไปยัง dst Internet แล้ว Internet ก็ทำการตอบกลับมาผ่าน Router กลับไปสู่ Client


ข้อมูล INPUT/OUTPUT

เราจะเน้นจัดการข้อมูลที่วิ่งมาทาง WAN เข้ามายัง Router   (Router ในทีนี้ก็คือ ตัว Network Server นั่นเอง)
โดยสิ่งที่เราต้องทำก็คือว่า  
- ข้อมูลที่วิ่งเข้ามาทาง WAN1 จะต้องถูกส่งออกไปทาง WAN1
- ข้อมูลที่วิ่งเข้ามาทาง WAN2 จะต้องถูกส่งออกไปทาง WAN2
- ข้อมูลที่วิ่งเข้ามาทาง WAN3 จะต้องถูกส่งออกไปทาง WAN3

ก็คือเข้ามาทาง WAN ไหน ก็ต้องออกทาง WAN นั้น  
เพราะถ้าออกไม่ตรง จะเกิดการเชื่อมต่อที่ผิดพลาด หรือไม่สามารถเชื่อมต่อกันได้

สิ่งที่ต้องทำ  (กรณี 3wan)
1. สร้าง ip route ชื่อ wan1 ขึ้นมา โดยให้ gateway เป็น interface ของ wan1
2. สร้าง ip route ชื่อ wan2 ขึ้นมา โดยให้ gateway เป็น interface ของ wan2
3. สร้าง ip route ชื่อ wan3 ขึ้นมา โดยให้ gateway เป็น interface ของ wan3

4. สร้าง firewall mangle ขึ้นมา chain input
mark conn ข้อมูลที่วิ่งเข้ามาทาง wan1 โดยปลายทางเป็น local ให้ mark เป็น wan1
5. สร้าง firewall mangle ขึ้นมา chain input
mark conn ข้อมูลที่วิ่งเข้ามาทาง wan2 โดยปลายทางเป็น local ให้ mark เป็น wan2
6. สร้าง firewall mangle ขึ้นมา chain input
mark conn ข้อมูลที่วิ่งเข้ามาทาง wan3 โดยปลายทางเป็น local ให้ mark เป็น wan3

7. สร้าง firewall mangle ขึ้นมา chain output
กำหนดให้ข้อมูลที่ mark conn ชื่อ wan1 ให้ route ไปที่ ip route wan1
8. สร้าง firewall mangle ขึ้นมา chain output
กำหนดให้ข้อมูลที่ mark conn ชื่อ wan2 ให้ route ไปที่ ip route wan2
9. สร้าง firewall mangle ขึ้นมา chain output
กำหนดให้ข้อมูลที่ mark conn ชื่อ wan3 ให้ route ไปที่ ip route wan3

มาดูขั้นตอนการ config กัน

สร้าง ip route ให้เข้าไปเมนู IP -> Routes



กด + เพิ่ม Route  กำหนด Gateway เป็น wan1 interface , Check Gateway ping , Distance 1
และ Routing Mark ชื่อว่า wan1



เสร็จแล้วกดปุ่ม Ok  ก็จะได้ Route เพิ่มมาในชื่อ wan1



ทำเช่นเดียวกัน สำหรับ wan2 และ wan3  ก็จะได้มาเป็น



เป็นอันเรียบร้อย สำหรับการสร้าง route

ต่อไป ทำการสร้าง firewall mangle ขึ้นมา โดยเข้าไปที่เมนู  IP -> Firewall  เลือก แถบ Mangle



กดปุ่ม +  แถบ General กำหนดค่า Chain input , In. Interface เป็น interface ของ wan1



แถบ extra เลือก Dst. Address Type เป็นแบบ local



แถบ Action เลือก  Action  mark connection , mark  wan1   และ ติ๊ก Passthrough



เสร็จแล้วกดปุ่ม Ok  ก็จะได้  mark connection input มา 1 บรรทัด



ทำแบบเดียวกันกับ wan2 และ wan3  โดยเปลี่ยน mark ให้ตรงตาม wan  ก็จะได้ครบทั้ง 3 บรรทัด



ต่อไปทำการกำหนด route ให้กับข้อมูลที่ถูก mark connection แล้วให้ออกตาม wan ที่กำหนด

กด + เลือก Chain เป็น output  เลือก Connection Mark เป็น wan1



แถบ Action เลือกเป็น mark routing เลือก route เป็น wan1  และก็ติ๊ก Passthrough ออก



กดปุ่ม Ok  ก็จะได้ mark routing output  ของ wan1 มา



ก็เช่นเดียวกันครับ ทำ mark routing ของ wan2 และ wan3 ในแบบเดียวกัน



ก็จะได้ mark routing output ของทั้ง 3 wan ครบ

เมื่อทำครบเรียบร้อยแล้ว ก็จะสามารถ remote winbox มาจากข้างนอกได้ โดยผ่านทาง ip จริง ของ wan ไหนก็ได้

หรือผ่านทาง noip ที่ได้ทำไว้ก็ได้ เช่นกัน

*** ทำการเพิ่ม comment โดยใช้ action แบบ passthrough เข้าไป เพื่อจัดกลุ่มบรรทัดให้สวยงาม ***



*** อันนี้ลองหาวิธีทำดูเองนะครับ อิอิ ไม่ยาก ***
« แก้ไขครั้งสุดท้าย: 02 มีนาคม 2017, 19:13:09 โดย admin »
<a href="http://www.hadyaiinternet.com/images/inetcafe.swf" target="_blank" rel="noopener noreferrer" class="bbc_link bbc_flash_disabled new_win">http://www.hadyaiinternet.com/images/inetcafe.swf</a>

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 3820
    • ดูรายละเอียด
    • อีเมล์
ต่อไปทำการ Mark ข้อมูลกลุ่ม FORWARD กัน  ก่อนจะทำตรงนี้ ต้องวางแผนกันก่อน ว่าจะแบ่งเป็นกี่กลุ่ม

และแต่ละกลุ่มจะให้วิ่งออกเส้นไหนบ้าง  สำหรับในบทความนี้ ขอแบ่งออกเป็น 3 กลุ่มละกันครับ ง่ายๆ ก่อน

กลุ่มแรก คือ กลุ่มของ GamesOnline
กลุ่มสอง คือ กลุ่มของ Internet
กลุ่มสาม คือ กลุ่มอื่น ๆ ทั่วไป

โดยกำหนดว่า  
กลุ่มแรก  ให้ออกเส้น wan1
กลุ่มสอง  ให้ออกเส้น wan2+wan3  โหลดบาลานซ์กัน  (บาลานซ์แบบ dst ip address)
กลุ่มสาม  ให้ออกเส้น wan2+wan3  โหลดบาลานซ์กัน  (บาลานซ์แบบ both ip+port)

สำหรับการ mark FORWARD ตามสไตล์ของ hadyaiinternet นั้น จะมีโครงสร้างดังนี้

ใน chain prerouting  ข้อมูลที่ผ่านมาทาง LAN และปลายทางไม่ใช่ local
ถ้า connection mark เป็น no-mark  ก็ให้ทำการ jump ไปยัง chain mark_rules เพื่อทำการ mark ก่อน
แต่ถ้า connection mark ไม่ใช่ no-mark (แสดงว่าถูก mark มาแล้ว) ก็ให้ทำการ jump ไปยัง chain mark_route เลย

**การทำเช่นนี้ เพื่อเป็นการลดการทำงานของ mark_rules  ไม่จำเป็นต้องมาเช็คทุกรอบ เปลือง cpu และเสียเวลาเปล่าๆ**

ใน chain mark_rules ก็จะทำการ mark connection ตามกลุ่มต่าง ๆ ที่กำหนด แล้วแต่เงื่อนไข จนครบทุกบรรทัด
อาจจะมี chain ย่อยต่าง ๆ สำหรับการแยกแบบพิเศษๆ เช่น loadbalace แบบต่าง ๆ ก็ทำใน chain mark_rules ทั้งหมด
เสร็จแล้วก็จะทำการ jump ไปยัง mark_route เพื่อกำหนดเส้นทางต่อไป

ใน chain mark_route ก็จะทำการ mark route ต่างๆ ตาม mark_connection ที่กำหนดมาแล้วใน chain mark_rules  ก็เป็นอันเรียบร้อย เสร็จสิ้นกระบวนการ

มาดูวิธีการ config กัน

เริ่มต้นด้วยการสร้าง comment ด้วย action passthrouth กันก่อน (อันนี้ทำไว้เพื่อความสวยงามเฉยๆ)

กด + ทำการเพิ่ม mangle rules    แถบ General เลือก Chain prerouting , In. Interface เป็น LAN



แถบ extra เลือกเป็น Dst. Address Type เป็น invert local



แถบ Action เลือก Action เป็น passthrough



กดปุ่ม Comment ใส่ Comment ไปว่า MARK FORWARD



ก็จะได้ บรรทัด comment มา ไว้สำหรับจัดแบ่งบรรทัดให้ดูสวยงามเฉยๆ จะได้ดูง่ายและเป็นระเบียบ



ต่อไปก็สร้าง chain ขึ้นมา 2 chain ก็คือ mark_rules และ mark_route

โดยทำ comment แบบ passthrough ขึ้นมาก่อน วิธีการก็คือ กด +  ใส่ชื่อ Chain เป็น mark_rules

แล้วเลือก action เป็น passthrough  กดปุ่ม comment ใส่ MARK_RULES เข้าไป ก็จะได้ออกมาเป็น



สำหรับ chain mark_route ก็ทำเช่นเดียวกัน



ต่อไปเพิ่มกฎของ MARK FORWARD เข้าไป ซึ่งจะมี 2 บรรทัด

1. chain prerouting  ข้อมูลที่ผ่านมาทาง LAN และปลายทางไม่ใช่ local
ถ้า connection mark เป็น no-mark  ก็ให้ทำการ jump ไปยัง chain mark_rules เพื่อทำการ mark ก่อน
2. chain prerouting  ข้อมูลที่ผ่านมาทาง LAN และปลายทางไม่ใช่ local
ถ้า connection mark ไม่ใช่ no-mark (แสดงว่าถูก mark มาแล้ว) ก็ให้ทำการ jump ไปยัง chain mark_route เลย

บรรทัดแรก  
- แถบ General  chain prerouting , In. Interface LAN , Connection Mark เลือกเป็น no-mark



- แถบ Extra  Dst. Address Type เลือก เป็น  invert local



- แถบ Action เลือก Action เป็น jump ไปยัง chain mark_rules



กดปุ่ม Ok  ก็จะได้บรรทัด jump prerouing มา



จับยกไปไว้ในกลุ่มของ MARK FORWARD ให้เรียบร้อย



ต่อไปบรรทัดที่สอง

ก็ทำแบบเดียวกัน

- แถบ General  chain prerouting , In. Interface LAN , Connection Mark เลือกเป็น ! no-mark



- แถบ Extra  Dst. Address Type เลือก เป็น  invert local



- แถบ Action เลือก Action เป็น jump ไปยัง chain mark_route



กดปุ่ม Ok  ก็จะได้บรรทัด jump prerouing มา



จับยกไปไว้ในกลุ่มของ MARK FORWARD ให้เรียบร้อย



ก็เป็นอันเรียบร้อย สำหรับ MARK FORWARD

ต่อไปก็จะเป็นของ MARK RULES และ MARK ROUTE
« แก้ไขครั้งสุดท้าย: 02 มีนาคม 2017, 21:28:40 โดย admin »
<a href="http://www.hadyaiinternet.com/images/inetcafe.swf" target="_blank" rel="noopener noreferrer" class="bbc_link bbc_flash_disabled new_win">http://www.hadyaiinternet.com/images/inetcafe.swf</a>

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 3820
    • ดูรายละเอียด
    • อีเมล์
สำหรับ chain mark_rules เราจะเริ่มกันแบบง่าย ๆ ก่อน เพื่อความเข้าใจ  โดยจะมีทั้งหมด 4 บรรทัด

1. ip ปลายทางที่อยู่ใน List ชื่อ GamesOnline จะ mark conn ชื่อว่า game
2. port ปลายทางที่เป็น 443,80 จะ jump ไปที่ chain ชื่อ dst_balance
3. ข้อมูลที่ยัง no-mark ก็ให้ทำการ jump ไปที่ chain ชื่อ both_balance
4. บรรทัดสุดท้าย jump ไปยัง chain mark_route

จะเห็นว่ามี chain ย่อย ชื่อ dst_balance กับ both_balance เพิ่มมา

dst_balance จะเป็นการทำ load balance แบบกระจายปลายทาง แยกเป็น dst1 , dst2

both_balance จะเป็นการทำ load balance แบบกระจายทั้ง src ip/port + dst ip/port แยกเป็น both1 , both2

มาเริ่มต้น config กัน

ก่อนอื่น สร้าง chain ย่อยขึ้นมาก่อน dst_balance,both_balance ใช้ action แบบ passthrough

และ comment เป็นชื่อ chain ไว้

ก็จะได้เป็น



ต่อไปเพิ่ม mark_rules บรรทัดแรก
1. ip ปลายทางที่อยู่ใน List ชื่อ GamesOnline จะ mark conn ชื่อว่า game

กด +  แถบ General เลือก chain เป็น mark_rules



แถบ Advance ใส่ชื่อ Dst. Address list เป็น GamesOnline



แถบ Action เลือก Action เป็น mark connection ชื่อ mark เป็น game ติ๊กถูก passthrough ด้วย



กดปุ่ม Ok ก็จะได้ mark_rules บรรทัดแรกออกมา



เลื่อนบรรทัดไปอยู่ในกลุ่มของ MARK_RULES ให้เรียบร้อย



ต่อไป mark_rules บรรทัดที่สอง

2. port ปลายทางที่เป็น 443,80 จะ jump ไปที่ chain ชื่อ dst_balance

กด +  แถบ General เลือก chain เป็น mark_rules , protocol 6 (tcp) , Dst. Port 80,443



แถบ Action เลือก Action jump  ไปยัง dst_balance



กดปุ่ม ok  ก็จะได้บรรทัด  jump  mark_rules มา  เลื่อนไว้ไปอยู่ในกลุ่ม MARK_RULES



3. ข้อมูลที่ยัง no-mark ก็ให้ทำการ jump ไปที่ chain ชื่อ both_balance

กด +  แถบ General เลือก chain เป็น mark_rules , Connection Mark เป็น no-mark



แถบ Action เลือก Action jump  ไปยัง both_balance



กดปุ่ม ok  ก็จะได้บรรทัด  jump  mark_rules มา  เลื่อนไว้ไปอยู่ในกลุ่ม MARK_RULES



4. บรรทัดสุดท้าย jump ไปยัง chain mark_route

กด +  แถบ General เลือก chain เป็น mark_rules



แถบ Action เลือก Action jump  ไปยัง mark_route



กดปุ่ม ok  ก็จะได้บรรทัด  jump  mark_rules มา  เลื่อนไว้ไปอยู่ในกลุ่ม MARK_RULES



เป็นอันครบ
« แก้ไขครั้งสุดท้าย: 02 มีนาคม 2017, 22:39:15 โดย admin »
<a href="http://www.hadyaiinternet.com/images/inetcafe.swf" target="_blank" rel="noopener noreferrer" class="bbc_link bbc_flash_disabled new_win">http://www.hadyaiinternet.com/images/inetcafe.swf</a>

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 3820
    • ดูรายละเอียด
    • อีเมล์
ต่อไปเป็น chain dst_balance  ในการทำ load balance จะทำได้หลายแบบ สำหรับ mikrotik นิยมใช้เป็น

PCC : Per Connection Classifier  ซึ่งในแต่ละแบบจะมีข้อดี ข้อเสีย ไว้อธิบายในโอกาสถัดไป

หลักการของ PCC ก็คือ แบ่ง connection ออกเป็นกลุ่มๆ โดยแต่ละกลุ่ม จะแทนด้วยเลข เศษของกล่ม

เช่น แบ่งเป็น 5 กลุ่ม  ก็จะได้เป็น ลำดับที่หารด้วย 5 แล้วเหลือ 1 , 2 , 3 , 4 และ 0  แต่เวลาใช้งานจริงก็จะเอา 0 ขึ้นก่อน

ยกตัวอย่างเช่น แบ่งเป็น 7 กลุ่ม  ก็จะได้กลุ่มที่เหลือเศษ 0 , 1 , 2 , 3 , 4 , 5 , 6  เป็นต้น

ในตัวอย่างเราจะแบ่งออกเป็น 2 กลุ่ม  นั่นก็แปลว่า จะมีกลุ่มเศษ 0 และ 1  

โดยกลุ่ม 0 จะให้ mark ชื่อ dst1  
และกลุ่ม 1 จะให้ mark ชื่อ dst2

มาเริ่มกันเลย

กดปุ่ม +  แถบ General เลือกเป็น dst_balance



แถบ Advance เลือก PCC เป็น dst address   2  /  0



แถบ Action เลือก mark connection เป็นชื่อ dst1  ติ๊กถูก passthrough ด้วยนะครับ



กดปุ่ม Ok   ก็จะได้ mark connection   dst_balance มา 1 บรรทัด เลื่อนไปไว้ในกลุ่ม DST_BALANCE



ต่อไปกลุ่มที่สอง ก็ทำคล้าย ๆ กัน

กดปุ่ม +  แถบ General เลือกเป็น dst_balance



แถบ Advance เลือก PCC เป็น dst address   2  /  1



แถบ Action เลือก mark connection เป็นชื่อ dst2  ติ๊กถูก passthrough ด้วยนะครับ



กดปุ่ม Ok   ก็จะได้ mark connection   dst_balance มา 1 บรรทัด เลื่อนไปไว้ในกลุ่ม DST_BALANCE



ต่อไปบรรทัดสุดท้าย ก็คือ return  (หมายถึงย้อนกลับไปทำบรรทัด mark_rules อื่นๆ ต่อไป)

กดปุ่ม + 
แถบ General เลือก dst_balance
แถบ action เลือก return



ก็ครบเรียบร้อย

สำหรับ load balance แบบ both ก็ทำเช่นเดียวกัน (ลองศึกษาจาก dst_balance ได้เลย)

ก็จะได้ออกมาเป็น both_balance



ก็เป็นอันครบ สำหรับ mark_rules

ต่อไปก็เหลือ mark_route
« แก้ไขครั้งสุดท้าย: 02 มีนาคม 2017, 23:11:08 โดย admin »
<a href="http://www.hadyaiinternet.com/images/inetcafe.swf" target="_blank" rel="noopener noreferrer" class="bbc_link bbc_flash_disabled new_win">http://www.hadyaiinternet.com/images/inetcafe.swf</a>

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 3820
    • ดูรายละเอียด
    • อีเมล์
ก่อนจะทำ mark_route ก็ต้องเช็คก่อนว่า mark_rules ของเราได้ทำการ mark connection ชื่ออะไรไว้บ้าง

1. game
2. dst1
3. dst2
4. both1
5. both2

เราก็จะมากำหนดใน mark_route ว่า กลุ่มไหน จะวิ่งเส้นไหน กันบ้าง

game => wan1
dst1  => wan2
dst2  => wan3
both1 => wan2
both2 => wan3

มาเริ่ม config กัน

กด + แถบ General ก็เลือก  chain mark_route    Connection Mark เลือก game



แถบ Action ก็เลือก Action เป็น mark routing เลือกเป็น wan1  และก็ติ๊ก Passthrough ออกด้วย



กดปุ่ม Ok ก็เป็นอันเรียบร้อย สำหรับการกำหนด routing   ง่ายๆ ไม่มีอะไรยุ่งยาก



ต่อไปก็ทำให้ครบทุกกลุ่ม ทั้ง 5 กลุ่มที่กล่าวไว้ในตอนแรก



ก็เป็นอันเสร็จ เรียบร้อยครับ  ลองทดสอบกันดู

บทต่อไปจะเป็นการทำ fail-over
« แก้ไขครั้งสุดท้าย: 02 มีนาคม 2017, 23:31:10 โดย admin »
<a href="http://www.hadyaiinternet.com/images/inetcafe.swf" target="_blank" rel="noopener noreferrer" class="bbc_link bbc_flash_disabled new_win">http://www.hadyaiinternet.com/images/inetcafe.swf</a>