Multivan และการกำหนดเส้นทางบน Mikrotik RouterOS

การแนะนำ

การอ่านบทความนอกเหนือไปจากความไร้สาระยังได้รับคำถามจากความถี่ของคำถามที่น่าหดหู่ในหัวข้อนี้ในกลุ่มโปรไฟล์ของชุมชนโทรเลขที่พูดภาษารัสเซีย บทความนี้มุ่งเป้าไปที่ผู้ดูแลระบบ Mikrotik RouterOS (ต่อไปนี้เรียกว่า ROS) มือใหม่ มันเกี่ยวข้องกับ multivan เท่านั้นโดยเน้นที่การกำหนดเส้นทาง เป็นโบนัส มีการตั้งค่าขั้นต่ำที่เพียงพอเพื่อให้แน่ใจว่าการทำงานที่ปลอดภัยและสะดวก ผู้ที่กำลังมองหาการเปิดเผยหัวข้อคิว, โหลดบาลานซ์, vlans, บริดจ์, การวิเคราะห์เชิงลึกแบบหลายขั้นตอนของสถานะของแชนเนลและอื่นๆ อาจไม่เสียเวลาและความพยายามในการอ่าน

ข้อมูลดิบ

ผู้เข้าร่วมการทดสอบเลือกเราเตอร์ Mikrotik ห้าพอร์ตที่มี ROS เวอร์ชัน 6.45.3 โดยจะกำหนดเส้นทางการรับส่งข้อมูลระหว่างสองเครือข่ายท้องถิ่น (LAN1 และ LAN2) และผู้ให้บริการสามราย (ISP1, ISP2, ISP3) ช่องสัญญาณไปยัง ISP1 มีที่อยู่ "สีเทา" แบบคงที่, ISP2 - "สีขาว" ได้รับผ่าน DHCP, ISP3 - "สีขาว" พร้อมการอนุญาต PPPoE แผนภาพการเชื่อมต่อแสดงในรูป:

Multivan และการกำหนดเส้นทางบน Mikrotik RouterOS

งานคือการกำหนดค่าเราเตอร์ MTK ตามโครงร่างเพื่อให้:

  1. ให้การสลับไปยังผู้ให้บริการสำรองข้อมูลโดยอัตโนมัติ ผู้ให้บริการหลักคือ ISP2 สำรองแรกคือ ISP1 สำรองที่สองคือ ISP3
  2. จัดระเบียบเครือข่าย LAN1 เข้าถึงอินเทอร์เน็ตผ่าน ISP1 เท่านั้น
  3. ให้ความสามารถในการกำหนดเส้นทางการรับส่งข้อมูลจากเครือข่ายท้องถิ่นไปยังอินเทอร์เน็ตผ่านผู้ให้บริการที่เลือกตามรายการที่อยู่
  4. จัดเตรียมความเป็นไปได้ในการเผยแพร่บริการจากเครือข่ายท้องถิ่นไปยังอินเทอร์เน็ต (DSTNAT)
  5. ตั้งค่าตัวกรองไฟร์วอลล์เพื่อให้การรักษาความปลอดภัยขั้นต่ำเพียงพอจากอินเทอร์เน็ต
  6. เราเตอร์สามารถส่งทราฟฟิกของตัวเองผ่านผู้ให้บริการทั้งสามราย โดยขึ้นอยู่กับที่อยู่ต้นทางที่เลือก
  7. ตรวจสอบให้แน่ใจว่าแพ็กเก็ตการตอบสนองถูกส่งไปยังช่องสัญญาณที่มา (รวมถึง LAN)

หมายเหตุ เราจะกำหนดค่าเราเตอร์ "ตั้งแต่เริ่มต้น" เพื่อรับประกันว่าจะไม่มีเซอร์ไพรส์ในการกำหนดค่าเริ่มต้น "นอกกรอบ" ที่เปลี่ยนจากเวอร์ชันหนึ่งไปยังอีกเวอร์ชันหนึ่ง Winbox ได้รับเลือกเป็นเครื่องมือกำหนดค่าซึ่งการเปลี่ยนแปลงจะแสดงด้วยสายตา การตั้งค่าจะถูกกำหนดโดยคำสั่งในเทอร์มินัล Winbox การเชื่อมต่อทางกายภาพสำหรับการกำหนดค่าทำได้โดยการเชื่อมต่อโดยตรงกับอินเทอร์เฟซ Ether5

เหตุผลเล็กน้อยเกี่ยวกับ multivan คืออะไร เป็นปัญหาหรือไม่ หรือกำลังหลอกคนฉลาดๆ เกี่ยวกับการสานเครือข่ายสมรู้ร่วมคิด

ผู้ดูแลระบบที่อยากรู้อยากเห็นและเอาใจใส่ตั้งค่าโครงร่างดังกล่าวหรือคล้ายกันด้วยตัวเขาเองทันใดนั้นก็ตระหนักว่ามันใช้งานได้ตามปกติแล้ว ใช่ ใช่ หากไม่มีตารางเส้นทางที่คุณกำหนดเองและกฎเส้นทางอื่นๆ ซึ่งบทความส่วนใหญ่ในหัวข้อนี้เต็มไปด้วย มาตรวจสอบกัน?

เราสามารถกำหนดค่าที่อยู่บนอินเทอร์เฟซและเกตเวย์เริ่มต้นได้หรือไม่ ใช่:

บน ISP1 ที่อยู่และเกตเวย์ลงทะเบียนกับ ระยะทาง=2 и ตรวจสอบเกตเวย์ = ping
บน ISP2 การตั้งค่าไคลเอนต์ dhcp เริ่มต้น - ตามนั้น ระยะทางจะเท่ากับหนึ่ง
บน ISP3 ในการตั้งค่าไคลเอนต์ pppoe เมื่อ add-default-route=ใช่ ใส่ ระยะทางเริ่มต้นเส้นทาง = 3.

อย่าลืมลงทะเบียน NAT ที่ทางออก:

/ip ไฟร์วอลล์ nat add action=masquerade chain=srcnat out-interface-list=WAN

เป็นผลให้ผู้ใช้เว็บไซต์ท้องถิ่นสนุกกับการดาวน์โหลด cat ผ่านผู้ให้บริการ ISP2 หลักและมีการจองช่องโดยใช้กลไก ตรวจสอบเกตเวย์ ดูหมายเหตุ 1

จุดที่ 1 ของงานถูกนำไปใช้ multivan ที่มีเครื่องหมายอยู่ที่ไหน? เลขที่…

ไกลออกไป. คุณต้องปล่อยไคลเอนต์เฉพาะจาก LAN ผ่าน ISP1:

/ip ไฟร์วอลล์ mangle เพิ่ม action=route chain=prerouting dst-address-list=!BOGONS
passthrough=ใช่ route-dst=100.66.66.1 src-address-list=Via_ISP1
/ip ไฟร์วอลล์ mangle เพิ่ม action=route chain=prerouting dst-address-list=!BOGONS
passthrough=ไม่มีเส้นทาง-dst=100.66.66.1 src-address=192.168.88.0/24

ดำเนินการรายการที่ 2 และ 3 ของงานแล้ว ป้าย แสตมป์ กฎเส้นทาง อยู่ไหน!

ต้องการให้สิทธิ์การเข้าถึงเซิร์ฟเวอร์ OpenVPN ที่คุณชื่นชอบด้วยที่อยู่ 172.17.17.17 สำหรับลูกค้าจากอินเทอร์เน็ตหรือไม่ โปรด:

/ip cloud ตั้งค่า ddns-enabled=ใช่

ในฐานะเพื่อนร่วมงาน เราให้ผลลัพธ์ที่ออกมาแก่ลูกค้า: “: ใส่ [ip cloud รับชื่อ dns]"

เราลงทะเบียนการส่งต่อพอร์ตจากอินเทอร์เน็ต:

/ip ไฟร์วอลล์ nat เพิ่ม action=dst-nat chain=dstnat dst-port=1194
ในรายการอินเทอร์เฟซ = โปรโตคอล WAN = udp ถึงที่อยู่ = 172.17.17.17

รายการที่ 4 พร้อมแล้ว

เราตั้งค่าไฟร์วอลล์และการรักษาความปลอดภัยอื่น ๆ สำหรับจุดที่ 5 ในขณะเดียวกันเราก็ดีใจที่ทุกอย่างใช้งานได้แล้วสำหรับผู้ใช้ และเราไปถึงภาชนะที่ใส่เครื่องดื่มแก้วโปรด ...
เอ! อุโมงค์ถูกลืม

l2tp-client กำหนดค่าโดยบทความของ Google ได้เพิ่มขึ้นเป็น Dutch VDS ที่คุณชื่นชอบแล้วหรือยัง ใช่.
เซิร์ฟเวอร์ l2tp ที่มี IPsec เพิ่มขึ้นและไคลเอนต์โดยชื่อ DNS จาก IP Cloud (ดูด้านบน) ติดอยู่หรือไม่ ใช่.
เอนหลังพิงเก้าอี้จิบเครื่องดื่ม เราพิจารณาข้อ 6 และ 7 ของงานอย่างเกียจคร้าน เราคิดว่า - เราต้องการหรือไม่ เหมือนกันมันใช้งานได้ (c) ... ดังนั้นหากยังไม่ต้องการก็แค่นั้น Multivan นำมาใช้

มัลติแวนคืออะไร? นี่คือการเชื่อมต่อช่องอินเทอร์เน็ตหลายช่องกับเราเตอร์ตัวเดียว

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

สำหรับผู้ที่ยังคงอยู่ซึ่งสนใจในประเด็นที่ 6 และ 7 ของงาน และยังรู้สึกคันจากลัทธินิยมความสมบูรณ์แบบ เราดำดิ่งลงไป

ภารกิจที่สำคัญที่สุดในการปรับใช้ multivan คือการกำหนดเส้นทางการจราจรที่ถูกต้อง คือ: ไม่ว่า (หรือใด) ดู หมายเหตุ 3 ช่องสัญญาณของ ISP ดูที่เส้นทางเริ่มต้นบนเราเตอร์ของเรา ซึ่งควรส่งคืนการตอบกลับไปยังช่องสัญญาณที่แน่นอนของแพ็กเก็ตที่มาจาก งานมีความชัดเจน ปัญหาอยู่ที่ไหน แท้จริงแล้วในเครือข่ายท้องถิ่นที่เรียบง่ายงานจะเหมือนกัน แต่ไม่มีใครรบกวนการตั้งค่าเพิ่มเติมและไม่รู้สึกลำบาก ข้อแตกต่างคือ routable node ใดๆ บนอินเทอร์เน็ตสามารถเข้าถึงได้ผ่านแต่ละช่องสัญญาณของเรา ไม่ใช่ผ่านช่องเฉพาะอย่างเช่นใน LAN แบบธรรมดา และ "ปัญหา" คือหากมีคำขอที่อยู่ IP ของ ISP3 มาหาเรา ในกรณีของเรา คำตอบจะผ่านช่องทาง ISP2 เนื่องจากเกตเวย์เริ่มต้นถูกนำไปที่นั่น ออกและจะถูกทิ้งโดยผู้ให้บริการว่าไม่ถูกต้อง ปัญหาได้รับการระบุ มีวิธีแก้อย่างไร?

การแก้ปัญหาแบ่งออกเป็นสามขั้นตอน:

  1. การตั้งค่าล่วงหน้า ในขั้นตอนนี้ การตั้งค่าพื้นฐานของเราเตอร์จะถูกตั้งค่า: เครือข่ายท้องถิ่น, ไฟร์วอลล์, รายการที่อยู่, แฮร์พิน NAT เป็นต้น
  2. มัลติแวน. ในขั้นตอนนี้ การเชื่อมต่อที่จำเป็นจะถูกทำเครื่องหมายและจัดเรียงเป็นตารางเส้นทาง
  3. การเชื่อมต่อกับ ISP ในขั้นตอนนี้ อินเทอร์เฟซที่ให้การเชื่อมต่ออินเทอร์เน็ตจะได้รับการกำหนดค่า การกำหนดเส้นทางและกลไกการจองช่องสัญญาณอินเทอร์เน็ตจะถูกเปิดใช้งาน

1. การตั้งค่าล่วงหน้า

1.1. เราล้างการกำหนดค่าเราเตอร์ด้วยคำสั่ง:

/system reset-configuration skip-backup=yes no-defaults=yes

เห็นด้วยกับ "อันตราย! รีเซ็ตหรือไม่ [ใช่/ไม่ใช่]:” และหลังจากรีบูตเครื่อง เราเชื่อมต่อกับ Winbox ผ่าน MAC ในขั้นตอนนี้ การกำหนดค่าและฐานผู้ใช้จะถูกล้าง

1.2. สร้างผู้ใช้ใหม่:

/user add group=full name=knight password=ultrasecret comment=”Not horse”

เข้าสู่ระบบภายใต้มันและลบค่าเริ่มต้น:

/user remove admin

หมายเหตุ เป็นการลบและไม่ปิดผู้ใช้เริ่มต้นที่ผู้เขียนเห็นว่าปลอดภัยกว่าและแนะนำให้ใช้

1.3. เราสร้างรายการอินเทอร์เฟซพื้นฐานเพื่อความสะดวกในการใช้งานไฟร์วอลล์ การตั้งค่าการค้นหา และเซิร์ฟเวอร์ MAC อื่นๆ:

/interface list add name=WAN comment="For Internet"
/interface list add name=LAN comment="For Local Area"

การลงนามอินเทอร์เฟซพร้อมความคิดเห็น

/interface ethernet set ether1 comment="to ISP1"
/interface ethernet set ether2 comment="to ISP2"
/interface ethernet set ether3 comment="to ISP3"
/interface ethernet set ether4 comment="to LAN1"
/interface ethernet set ether5 comment="to LAN2"

และกรอกรายการอินเทอร์เฟซ:

/interface list member add interface=ether1 list=WAN comment=ISP1
/interface list member add interface=ether2 list=WAN comment=ISP2 
/interface list member add interface=ether3 list=WAN comment="to ISP3"
/interface list member add interface=ether4 list=LAN  comment="LAN1"
/interface list member add interface=ether5 list=LAN  comment="LAN2"

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

ผู้เขียนเห็นว่าจำเป็นด้วยเหตุผลด้านความปลอดภัยในการเพิ่มอินเทอร์เฟซ ether3 ในรายการอินเทอร์เฟซ "WAN" แม้ว่าโปรโตคอล ip จะไม่ผ่านก็ตาม

อย่าลืมว่าหลังจากเพิ่มอินเทอร์เฟซ PPP บน ether3 แล้ว จะต้องเพิ่มในรายการอินเทอร์เฟซ "WAN" ด้วย

1.4. เราซ่อนเราเตอร์จากการตรวจจับและควบคุมพื้นที่ใกล้เคียงจากเครือข่ายผู้ให้บริการผ่าน MAC:

/ip neighbor discovery-settings set discover-interface-list=!WAN
/tool mac-server set allowed-interface-list=LAN
/tool mac-server mac-winbox set allowed-interface-list=LAN

1.5. เราสร้างชุดกฎตัวกรองไฟร์วอลล์ขั้นต่ำที่เพียงพอเพื่อป้องกันเราเตอร์:

/ip firewall filter add action=accept chain=input comment="Related Established Untracked Allow" 
connection-state=established,related,untracked

(กฎให้สิทธิ์สำหรับการเชื่อมต่อที่สร้างขึ้นและที่เกี่ยวข้องซึ่งเริ่มต้นจากทั้งเครือข่ายที่เชื่อมต่อและเราเตอร์เอง)

/ip firewall filter add action=accept chain=input comment="ICMP from ALL" protocol=icmp

(ping และไม่ใช่แค่ ping เท่านั้น อนุญาตให้ใช้ icmp ทั้งหมด มีประโยชน์มากสำหรับการค้นหาปัญหา MTU)

/ip firewall filter add action=drop chain=input comment="All other WAN Drop" in-interface-list=WAN

(กฎที่ปิดห่วงโซ่อินพุตห้ามทุกสิ่งที่มาจากอินเทอร์เน็ต)

/ip firewall filter add action=accept chain=forward 
comment="Established, Related, Untracked allow" 
connection-state=established,related,untracked

(กฎอนุญาตการเชื่อมต่อที่สร้างขึ้นและเกี่ยวข้องที่ผ่านเราเตอร์)

/ip firewall filter add action=drop chain=forward comment="Invalid drop" connection-state=invalid

(กฎจะรีเซ็ตการเชื่อมต่อด้วยการเชื่อมต่อสถานะ=การผ่านเราเตอร์ไม่ถูกต้อง Mikrotik แนะนำอย่างยิ่ง แต่ในบางสถานการณ์ที่เกิดขึ้นได้ยาก มันสามารถบล็อกทราฟฟิกที่เป็นประโยชน์ได้)

/ip firewall filter add action=drop chain=forward comment="Drop all from WAN not DSTNATed"  
connection-nat-state=!dstnat connection-state=new in-interface-list=WAN

(กฎห้ามแพ็กเก็ตที่มาจากอินเทอร์เน็ตและไม่ผ่านขั้นตอน dstnat ให้ผ่านเราเตอร์ วิธีนี้จะปกป้องเครือข่ายท้องถิ่นจากผู้บุกรุกที่อยู่ในโดเมนการออกอากาศเดียวกันกับเครือข่ายภายนอกของเรา จะลงทะเบียน IP ภายนอกของเราเป็น เกตเวย์และลอง "สำรวจ" เครือข่ายท้องถิ่นของเรา)

หมายเหตุ สมมติว่าเครือข่าย LAN1 และ LAN2 นั้นเชื่อถือได้และทราฟฟิกระหว่างพวกเขาและจากพวกเขาจะไม่ถูกกรอง

1.6. สร้างรายการที่มีรายการเครือข่ายที่ไม่สามารถกำหนดเส้นทางได้:

/ip firewall address-list
add address=0.0.0.0/8 comment=""This" Network" list=BOGONS
add address=10.0.0.0/8 comment="Private-Use Networks" list=BOGONS
add address=100.64.0.0/10 comment="Shared Address Space. RFC 6598" list=BOGONS
add address=127.0.0.0/8 comment=Loopback list=BOGONS
add address=169.254.0.0/16 comment="Link Local" list=BOGONS
add address=172.16.0.0/12 comment="Private-Use Networks" list=BOGONS
add address=192.0.0.0/24 comment="IETF Protocol Assignments" list=BOGONS
add address=192.0.2.0/24 comment=TEST-NET-1 list=BOGONS
add address=192.168.0.0/16 comment="Private-Use Networks" list=BOGONS
add address=198.18.0.0/15 comment="Network Interconnect Device Benchmark Testing"
 list=BOGONS
add address=198.51.100.0/24 comment=TEST-NET-2 list=BOGONS
add address=203.0.113.0/24 comment=TEST-NET-3 list=BOGONS
add address=224.0.0.0/4 comment=Multicast list=BOGONS
add address=192.88.99.0/24 comment="6to4 Relay Anycast" list=BOGONS
add address=240.0.0.0/4 comment="Reserved for Future Use" list=BOGONS
add address=255.255.255.255 comment="Limited Broadcast" list=BOGONS

(นี่คือรายการที่อยู่และเครือข่ายที่ไม่สามารถกำหนดเส้นทางไปยังอินเทอร์เน็ตได้ และจะตามมาด้วย)

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

1.7. ตั้งค่า DNS สำหรับเราเตอร์เอง:

/ip dns set servers=1.1.1.1,8.8.8.8

หมายเหตุ ใน ROS เวอร์ชันปัจจุบัน เซิร์ฟเวอร์แบบไดนามิกจะมีความสำคัญเหนือเซิร์ฟเวอร์แบบคงที่ คำร้องขอการแก้ไขชื่อถูกส่งไปยังเซิร์ฟเวอร์แรกตามลำดับในรายการ การเปลี่ยนไปยังเซิร์ฟเวอร์ถัดไปจะดำเนินการเมื่อเซิร์ฟเวอร์ปัจจุบันไม่พร้อมใช้งาน การหมดเวลามีขนาดใหญ่ - มากกว่า 5 วินาที การย้อนกลับเมื่อ "เซิร์ฟเวอร์ล่ม" กลับมาทำงานต่อ จะไม่เกิดขึ้นโดยอัตโนมัติ ด้วยอัลกอริทึมนี้และการมีอยู่ของ multivan ผู้เขียนไม่แนะนำให้ใช้เซิร์ฟเวอร์ที่ผู้ให้บริการจัดเตรียมไว้ให้

1.8. ตั้งค่าเครือข่ายท้องถิ่น
1.8.1. เรากำหนดค่าที่อยู่ IP แบบคงที่บนอินเทอร์เฟซ LAN:

/ip address add interface=ether4 address=192.168.88.254/24 comment="LAN1 IP"
/ip address add interface=ether5 address=172.16.1.0/23 comment="LAN2 IP"

1.8.2. เราตั้งกฎสำหรับเส้นทางไปยังเครือข่ายท้องถิ่นของเราผ่านตารางเส้นทางหลัก:

/ip route rule add dst-address=192.168.88.0/24 table=main comment=”to LAN1”
/ip route rule add dst-address=172.16.0.0/23 table=main comment="to LAN2"

หมายเหตุ นี่เป็นหนึ่งในวิธีที่ง่ายและรวดเร็วในการเข้าถึงที่อยู่ LAN ด้วยแหล่งที่มาของที่อยู่ IP ภายนอกของอินเทอร์เฟซเราเตอร์ที่ไม่ผ่านเส้นทางเริ่มต้น

1.8.3. เปิดใช้งาน Hairpin NAT สำหรับ LAN1 และ LAN2:

/ip firewall nat add action=src-nat chain=srcnat comment="Hairpin to LAN1" 
out-interface=ether4 src-address=192.168.88.0/24 to-addresses=192.168.88.254
/ip firewall nat add action=src-nat chain=srcnat comment="Hairpin to LAN2" 
out-interface=ether5 src-address=172.16.0.0/23 to-addresses=172.16.1.0

หมายเหตุ สิ่งนี้ช่วยให้คุณเข้าถึงทรัพยากรของคุณ (dstnat) ผ่าน IP ภายนอกในขณะที่อยู่ในเครือข่าย

2. ที่จริงแล้วการใช้งาน multivan ที่ถูกต้องมาก

เพื่อแก้ปัญหา "การตอบคำถามที่พวกเขาถาม" เราจะใช้เครื่องมือ ROS สองตัว: เครื่องหมายการเชื่อมต่อ и เครื่องหมายบอกเส้นทาง. เครื่องหมายการเชื่อมต่อ ให้คุณทำเครื่องหมายการเชื่อมต่อที่ต้องการ จากนั้นใช้ป้ายกำกับนี้เป็นเงื่อนไขในการนำไปใช้ เครื่องหมายบอกเส้นทาง. และแล้วด้วย เครื่องหมายบอกเส้นทาง สามารถเข้าทำงานได้ เส้นทาง ip и กฎเส้นทาง. เราพบเครื่องมือต่างๆ แล้ว ตอนนี้คุณต้องตัดสินใจว่าจะทำเครื่องหมายการเชื่อมต่อใด - ครั้งเดียว ทำเครื่องหมายที่ใด - สอง

อย่างแรกทุกอย่างง่าย - เราต้องทำเครื่องหมายการเชื่อมต่อทั้งหมดที่มาถึงเราเตอร์จากอินเทอร์เน็ตผ่านช่องทางที่เหมาะสม ในกรณีของเรา ป้ายเหล่านี้จะมีสามป้าย (ตามจำนวนช่องสัญญาณ): “conn_isp1”, “conn_isp2” และ “conn_isp3”

ข้อแตกต่างที่สองคือการเชื่อมต่อขาเข้าจะมีสองประเภท: การขนส่งและการเชื่อมต่อที่มีไว้สำหรับเราเตอร์ กลไกการทำเครื่องหมายการเชื่อมต่อทำงานในตาราง ฉีก. พิจารณาการเคลื่อนไหวของแพ็คเกจบนไดอะแกรมแบบง่ายซึ่งรวบรวมโดยผู้เชี่ยวชาญของทรัพยากร mikrotik-trainings.com (ไม่ใช่โฆษณา):

Multivan และการกำหนดเส้นทางบน Mikrotik RouterOS

ตามลูกศร เราจะเห็นว่าแพ็กเก็ตมาถึงที่ “อินเตอร์เฟซการป้อนข้อมูล”, ผ่านห่วงโซ่ “การกำหนดเส้นทางล่วงหน้า” และจากนั้นจะแบ่งออกเป็นการขนส่งและท้องถิ่นในบล็อก “การตัดสินใจกำหนดเส้นทาง". ดังนั้นเราจึงใช้หินก้อนเดียวเพื่อฆ่านกสองตัว เครื่องหมายการเชื่อมต่อ ในตาราง Mangle การกำหนดเส้นทางล่วงหน้า โซ่ การกำหนดเส้นทางล่วงหน้า.

คำพูด. ใน ROS ป้ายกำกับ "การกำหนดเส้นทาง" จะแสดงเป็น "ตาราง" ในส่วน Ip/เส้นทาง/กฎ และเป็น "เครื่องหมายการกำหนดเส้นทาง" ในส่วนอื่นๆ สิ่งนี้อาจทำให้เกิดความสับสนในการทำความเข้าใจ แต่อันที่จริงแล้ว นี่เป็นสิ่งเดียวกัน และเป็นแอนะล็อกของ rt_tables ใน iproute2 บน linux

2.1. เราทำเครื่องหมายการเชื่อมต่อขาเข้าจากผู้ให้บริการแต่ละราย:

/ip firewall mangle add action=mark-connection chain=prerouting 
comment="Connmark in from ISP1" connection-mark=no-mark in-interface=ether1  new-connection-mark=conn_isp1 passthrough=no

/ip firewall mangle add action=mark-connection chain=prerouting 
comment="Connmark in from ISP2" connection-mark=no-mark in-interface=ether2  new-connection-mark=conn_isp2 passthrough=no

/ip firewall mangle add action=mark-connection chain=prerouting 
comment="Connmark in from ISP3" connection-mark=no-mark in-interface=pppoe-isp3  new-connection-mark=conn_isp3 passthrough=no

หมายเหตุ เพื่อไม่ให้ทำเครื่องหมายการเชื่อมต่อที่ทำเครื่องหมายไว้แล้ว ฉันใช้เงื่อนไขการเชื่อมต่อที่มีเครื่องหมาย=ไม่มีเครื่องหมาย แทนการเชื่อมต่อสถานะ=ใหม่ เพราะฉันคิดว่าสิ่งนี้ถูกต้องกว่า เช่นเดียวกับการปฏิเสธการเชื่อมต่อที่ไม่ถูกต้องในตัวกรองอินพุต


passthrough=no - เนื่องจากในวิธีการใช้งานนี้ การทำเครื่องหมายใหม่จะถูกแยกออก และเพื่อให้เร็วขึ้น คุณสามารถขัดจังหวะการแจงนับกฎหลังจากการจับคู่ครั้งแรก

โปรดทราบว่าเรายังไม่ได้รบกวนการกำหนดเส้นทางแต่อย่างใด ขณะนี้มีเพียงขั้นตอนของการเตรียมการเท่านั้น ขั้นตอนต่อไปของการดำเนินการคือการประมวลผลทราฟฟิกการขนส่งที่ส่งคืนการเชื่อมต่อที่สร้างจากปลายทางในเครือข่ายท้องถิ่น เหล่านั้น. แพ็กเก็ตเหล่านั้นที่ (ดูไดอะแกรม) ส่งผ่านเราเตอร์ไปพร้อมกัน:

“อินเทอร์เฟซอินพุต”=>”การกำหนดเส้นทางล่วงหน้า”=>”การตัดสินใจกำหนดเส้นทาง”=>”ส่งต่อ”=>”โพสต์การกำหนดเส้นทาง”=>”อินเทอร์เฟซเอาต์พุต” และไปถึงผู้รับในเครือข่ายท้องถิ่น

ที่สำคัญ! ใน ROS ไม่มีการแบ่งตรรกะออกเป็นอินเทอร์เฟซภายนอกและภายใน หากเราติดตามเส้นทางของแพ็กเก็ตตอบกลับตามแผนภาพด้านบน ก็จะเป็นไปตามเส้นทางตรรกะเดียวกันกับคำขอ:

“อินเทอร์เฟซอินพุต”=>”การกำหนดเส้นทางล่วงหน้า”=>”การตัดสินใจกำหนดเส้นทาง”=>”ส่งต่อ”=>”โพสต์การกำหนดเส้นทาง”=>”อินเทอร์เฟซเอาต์พุต” เพียงเพื่อร้องขอ"อินเตอร์เฟซการป้อนข้อมูล” คืออินเทอร์เฟซ ISP และสำหรับคำตอบ - LAN

2.2. เรากำหนดเส้นทางการรับส่งข้อมูลการตอบกลับไปยังตารางเส้นทางที่เกี่ยวข้อง:

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Routemark transit out via ISP1" connection-mark=conn_isp1 
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp1 passthrough=no

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Routemark transit out via ISP2" connection-mark=conn_isp2 
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp2 passthrough=no

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Routemark transit out via ISP3" connection-mark=conn_isp3 
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp3 passthrough=no

ความคิดเห็น in-interface-list=!WAN - เราทำงานเฉพาะกับการรับส่งข้อมูลจากเครือข่ายท้องถิ่นและ dst-address-type=!local ที่ไม่มีที่อยู่ปลายทางของที่อยู่ของอินเทอร์เฟซของเราเตอร์

เช่นเดียวกับแพ็กเก็ตในเครื่องที่มาถึงเราเตอร์ระหว่างทาง:

“อินเทอร์เฟซอินพุต”=>”การกำหนดเส้นทางล่วงหน้า”=>”การตัดสินใจกำหนดเส้นทาง”=>”อินพุต”=>”กระบวนการในเครื่อง”

ที่สำคัญ! คำตอบจะเป็นไปในลักษณะต่อไปนี้:

”กระบวนการภายในเครื่อง”=>”การกำหนดเส้นทาง”=>”เอาต์พุต”=>”โพสต์การกำหนดเส้นทาง”=>”อินเทอร์เฟซเอาต์พุต”

2.3. เรากำหนดการตอบสนองการรับส่งข้อมูลในพื้นที่ไปยังตารางเส้นทางที่เกี่ยวข้อง:

/ip firewall mangle add action=mark-routing chain=output 
comment="Routemark local out via ISP1" connection-mark=conn_isp1 dst-address-type=!local 
new-routing-mark=to_isp1 passthrough=no

/ip firewall mangle add action=mark-routing chain=output 
comment="Routemark local out via ISP2" connection-mark=conn_isp2 dst-address-type=!local 
new-routing-mark=to_isp2 passthrough=no

/ip firewall mangle add action=mark-routing chain=output 
comment="Routemark local out via ISP3" connection-mark=conn_isp3 dst-address-type=!local 
new-routing-mark=to_isp3 passthrough=no

ในขั้นตอนนี้ ภารกิจในการเตรียมส่งการตอบกลับไปยังช่องทางอินเทอร์เน็ตที่คำขอมานั้นสามารถแก้ไขได้ ทุกอย่างถูกทำเครื่องหมาย ป้ายกำกับ และพร้อมที่จะกำหนดเส้นทาง
เอฟเฟกต์ "ด้าน" ที่ยอดเยี่ยมของการตั้งค่านี้คือความสามารถในการทำงานร่วมกับการส่งต่อพอร์ต DSNAT จากผู้ให้บริการทั้งสอง (ISP2, ISP3) ในเวลาเดียวกัน ไม่เลย เนื่องจากบน ISP1 เรามีที่อยู่ที่ไม่สามารถกำหนดเส้นทางได้ เอฟเฟกต์นี้มีความสำคัญ ตัวอย่างเช่น สำหรับเซิร์ฟเวอร์อีเมลที่มี MX สองตัวที่ดูช่องอินเทอร์เน็ตต่างกัน

เพื่อขจัดความแตกต่างของการทำงานของเครือข่ายท้องถิ่นด้วยเราเตอร์ IP ภายนอก เราใช้วิธีแก้ปัญหาจากย่อหน้า 1.8.2 และ 3.1.2.6

นอกจากนี้ คุณสามารถใช้เครื่องมือที่มีเครื่องหมายเพื่อแก้ปัญหาวรรค 3 เราดำเนินการดังนี้:

2.4. เรากำหนดเส้นทางการรับส่งข้อมูลจากลูกค้าในพื้นที่จากรายการเส้นทางไปยังตารางที่เหมาะสม:

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Address List via ISP1" dst-address-list=!BOGONS new-routing-mark=to_isp1 
passthrough=no src-address-list=Via_ISP1

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Address List via ISP2" dst-address-list=!BOGONS new-routing-mark=to_isp2 
passthrough=no src-address-list=Via_ISP2

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Address List via ISP3" dst-address-list=!BOGONS new-routing-mark=to_isp3 
passthrough=no src-address-list=Via_ISP3

เป็นผลให้มีลักษณะดังนี้:

Multivan และการกำหนดเส้นทางบน Mikrotik RouterOS

3. ตั้งค่าการเชื่อมต่อกับ ISP และเปิดใช้งานการกำหนดเส้นทางที่มีตราสินค้า

3.1. ตั้งค่าการเชื่อมต่อกับ ISP1:
3.1.1. กำหนดค่าที่อยู่ IP แบบคงที่:

/ip address add interface=ether1 address=100.66.66.2/30 comment="ISP1 IP"

3.1.2. ตั้งค่าการกำหนดเส้นทางแบบคงที่:
3.1.2.1. การเพิ่มเส้นทาง "ฉุกเฉิน" เริ่มต้น:

/ip route add comment="Emergency route" distance=254 type=blackhole

หมายเหตุ เส้นทางนี้อนุญาตให้ทราฟฟิกจากกระบวนการในพื้นที่ผ่านขั้นตอนการตัดสินใจเส้นทาง โดยไม่คำนึงถึงสถานะของลิงก์ของผู้ให้บริการรายใด ความแตกต่างของการรับส่งข้อมูลภายในเครื่องขาออกคือเพื่อให้แพ็กเก็ตเคลื่อนที่อย่างน้อยที่สุด ตารางเส้นทางหลักต้องมีเส้นทางที่ใช้งานไปยังเกตเวย์เริ่มต้น ถ้าไม่เช่นนั้นแพ็คเกจก็จะถูกทำลาย

เป็นส่วนขยายของเครื่องมือ ตรวจสอบเกตเวย์ สำหรับการวิเคราะห์สถานะแชนเนลในเชิงลึก ฉันขอแนะนำให้ใช้วิธีกำหนดเส้นทางแบบเรียกซ้ำ สาระสำคัญของวิธีการคือเราบอกให้เราเตอร์มองหาเส้นทางไปยังเกตเวย์ไม่ใช่โดยตรง แต่ผ่านเกตเวย์กลาง 4.2.2.1, 4.2.2.2 และ 4.2.2.3 จะถูกเลือกให้เป็นเกตเวย์ "ทดสอบ" สำหรับ ISP1, ISP2 และ ISP3 ตามลำดับ

3.1.2.2. เส้นทางไปยังที่อยู่ "การยืนยัน":

/ip route add check-gateway=ping comment="For recursion via ISP1"  
distance=1 dst-address=4.2.2.1 gateway=100.66.66.1 scope=10

หมายเหตุ เราลดค่าขอบเขตเป็นค่าเริ่มต้นในขอบเขตเป้าหมาย ROS เพื่อใช้ 4.2.2.1 เป็นเกตเวย์แบบเรียกซ้ำในอนาคต ฉันเน้นย้ำ: ขอบเขตของเส้นทางไปยังที่อยู่ "ทดสอบ" จะต้องน้อยกว่าหรือเท่ากับขอบเขตเป้าหมายของเส้นทางที่จะอ้างอิงไปยังที่อยู่ทดสอบ

3.1.2.3. เส้นทางเริ่มต้นแบบเรียกซ้ำสำหรับการรับส่งข้อมูลโดยไม่มีเครื่องหมายกำหนดเส้นทาง:

/ip route add comment="Unmarked via ISP1" distance=2 gateway=4.2.2.1

หมายเหตุ ค่า Distance=2 ถูกใช้เนื่องจาก ISP1 ถูกประกาศเป็นข้อมูลสำรองแรกตามเงื่อนไขงาน

3.1.2.4. เส้นทางเริ่มต้นแบบเรียกซ้ำสำหรับการรับส่งข้อมูลที่มีเครื่องหมายการกำหนดเส้นทาง “to_isp1”:

/ip route add comment="Marked via ISP1 Main" distance=1 gateway=4.2.2.1 
routing-mark=to_isp1

หมายเหตุ ที่จริง ในที่สุดเราก็เริ่มเพลิดเพลินไปกับผลของการเตรียมงานที่ดำเนินการในวรรค 2


บนเส้นทางนี้ การรับส่งข้อมูลทั้งหมดที่มีเครื่องหมายเส้นทาง “to_isp1” จะถูกส่งตรงไปยังเกตเวย์ของผู้ให้บริการรายแรก โดยไม่คำนึงว่าเกตเวย์เริ่มต้นใดที่ใช้งานอยู่สำหรับตารางหลัก

3.1.2.5. เส้นทางเริ่มต้นแบบเรียกซ้ำทางเลือกแรกสำหรับการรับส่งข้อมูลที่ติดแท็ก ISP2 และ ISP3:

/ip route add comment="Marked via ISP2 Backup1" distance=2 gateway=4.2.2.1 
routing-mark=to_isp2
/ip route add comment="Marked via ISP3 Backup1" distance=2 gateway=4.2.2.1 
routing-mark=to_isp3

หมายเหตุ เส้นทางเหล่านี้จำเป็นสำหรับการจองการรับส่งข้อมูลจากเครือข่ายท้องถิ่นที่เป็นสมาชิกของรายการที่อยู่ “to_isp*”'

3.1.2.6. เราลงทะเบียนเส้นทางสำหรับทราฟฟิกในเครื่องของเราเตอร์ไปยังอินเทอร์เน็ตผ่าน ISP1:

/ip route rule add comment="From ISP1 IP to Inet" src-address=100.66.66.2 table=to_isp1

หมายเหตุ เมื่อรวมกับกฎจากย่อหน้า 1.8.2 จะให้การเข้าถึงช่องที่ต้องการด้วยแหล่งที่มาที่กำหนด นี่เป็นสิ่งสำคัญสำหรับการสร้างอุโมงค์ที่ระบุที่อยู่ IP ฝั่งโลคัล (EoIP, IP-IP, GRE) เนื่องจากกฎในกฎเส้นทาง ip จะดำเนินการจากบนลงล่าง จนกว่าจะตรงกับเงื่อนไขแรก กฎนี้จึงควรอยู่หลังกฎจากข้อ 1.8.2

3.1.3. เราลงทะเบียนกฎ NAT สำหรับการรับส่งข้อมูลขาออก:

/ip firewall nat add action=src-nat chain=srcnat comment="NAT via ISP1"  
ipsec-policy=out,none out-interface=ether1 to-addresses=100.66.66.2

หมายเหตุ NATim ทุกสิ่งที่ออกไป ยกเว้นสิ่งที่ได้รับในนโยบาย IPsec ฉันพยายามไม่ใช้ action=masquerade เว้นแต่จะจำเป็นจริงๆ มันช้ากว่าและใช้ทรัพยากรมากกว่า src-nat เพราะมันคำนวณที่อยู่ NAT สำหรับการเชื่อมต่อใหม่แต่ละครั้ง

3.1.4. เราส่งไคลเอ็นต์จากรายชื่อที่ไม่ได้รับอนุญาตจากการเข้าถึงผ่านผู้ให้บริการรายอื่นไปยังเกตเวย์ของผู้ให้บริการ ISP1 โดยตรง

/ip firewall mangle add action=route chain=prerouting comment="Address List via ISP1 only" 
dst-address-list=!BOGONS passthrough=no route-dst=100.66.66.1 
src-address-list=Via_only_ISP1 place-before=0

หมายเหตุ action=route มีลำดับความสำคัญสูงกว่าและถูกนำไปใช้ก่อนกฎการกำหนดเส้นทางอื่นๆ


place-before=0 - วางกฎของเราเป็นอันดับแรกในรายการ

3.2. ตั้งค่าการเชื่อมต่อกับ ISP2

เนื่องจากผู้ให้บริการ ISP2 ให้การตั้งค่าแก่เราผ่าน DHCP จึงมีเหตุผลที่จะทำการเปลี่ยนแปลงที่จำเป็นกับสคริปต์ที่เริ่มต้นเมื่อไคลเอ็นต์ DHCP ถูกทริกเกอร์:

/ip dhcp-client
add add-default-route=no disabled=no interface=ether2 script=":if ($bound=1) do={r
    n    /ip route add check-gateway=ping comment="For recursion via ISP2" distance=1 
           dst-address=4.2.2.2/32 gateway=$"gateway-address" scope=10r
    n    /ip route add comment="Unmarked via ISP2" distance=1 gateway=4.2.2.2;r
    n    /ip route add comment="Marked via ISP2 Main" distance=1 gateway=4.2.2.2 
           routing-mark=to_isp2;r
    n    /ip route add comment="Marked via ISP1 Backup1" distance=2 gateway=4.2.2.2 
           routing-mark=to_isp1;r
    n    /ip route add comment="Marked via ISP3 Backup2" distance=3 gateway=4.2.2.2 
           routing-mark=to_isp3;r
    n    /ip firewall nat add action=src-nat chain=srcnat ipsec-policy=out,none 
           out-interface=$"interface" to-addresses=$"lease-address" comment="NAT via ISP2" 
           place-before=1;r
    n    if ([/ip route rule find comment="From ISP2 IP to Inet"] ="") do={r
    n        /ip route rule add comment="From ISP2 IP to Inet" 
               src-address=$"lease-address" table=to_isp2 r
    n    } else={r
    n       /ip route rule set [find comment="From ISP2 IP to Inet"] disabled=no 
              src-address=$"lease-address"r
    n    }      r
    n} else={r
    n   /ip firewall nat remove  [find comment="NAT via ISP2"];r
    n   /ip route remove [find comment="For recursion via ISP2"];r
    n   /ip route remove [find comment="Unmarked via ISP2"];r
    n   /ip route remove [find comment="Marked via ISP2 Main"];r
    n   /ip route remove [find comment="Marked via ISP1 Backup1"];r
    n   /ip route remove [find comment="Marked via ISP3 Backup2"];r
    n   /ip route rule set [find comment="From ISP2 IP to Inet"] disabled=yesr
    n}r
    n" use-peer-dns=no use-peer-ntp=no

สคริปต์ในหน้าต่าง Winbox:

Multivan และการกำหนดเส้นทางบน Mikrotik RouterOS
หมายเหตุ ส่วนแรกของสคริปต์จะทำงานเมื่อได้รับสัญญาเช่าสำเร็จ ส่วนที่สอง - หลังจากปล่อยสัญญาเช่าดูหมายเหตุ 2

3.3. เราตั้งค่าการเชื่อมต่อกับผู้ให้บริการ ISP3

เนื่องจากผู้ให้บริการการตั้งค่าให้ไดนามิกแก่เรา จึงมีเหตุผลที่จะทำการเปลี่ยนแปลงที่จำเป็นกับสคริปต์ที่เริ่มต้นหลังจากอินเทอร์เฟซ ppp ถูกยกขึ้นและหลังจากการล่มสลาย

3.3.1. ก่อนอื่นเรากำหนดค่าโปรไฟล์:

/ppp profile
add comment="for PPPoE to ISP3" interface-list=WAN name=isp3_client 
on-down="/ip firewall nat remove  [find comment="NAT via ISP3"];r
    n/ip route remove [find comment="For recursion via ISP3"];r
    n/ip route remove [find comment="Unmarked via ISP3"];r
    n/ip route remove [find comment="Marked via ISP3 Main"];r
    n/ip route remove [find comment="Marked via ISP1 Backup2"];r
    n/ip route remove [find comment="Marked via ISP2 Backup2"];r
    n/ip route rule set [find comment="From ISP3 IP to Inet"] disabled=yes;" 
on-up="/ip route add check-gateway=ping comment="For recursion via ISP3" distance=1 
    dst-address=4.2.2.3/32 gateway=$"remote-address" scope=10r
    n/ip route add comment="Unmarked via ISP3" distance=3 gateway=4.2.2.3;r
    n/ip route add comment="Marked via ISP3 Main" distance=1 gateway=4.2.2.3 
    routing-mark=to_isp3;r
    n/ip route add comment="Marked via ISP1 Backup2" distance=3 gateway=4.2.2.3 
    routing-mark=to_isp1;r
    n/ip route add comment="Marked via ISP2 Backup2" distance=3 gateway=4.2.2.3 
    routing-mark=to_isp2;r
    n/ip firewall mangle set [find comment="Connmark in from ISP3"] 
    in-interface=$"interface";r
    n/ip firewall nat add action=src-nat chain=srcnat ipsec-policy=out,none 
    out-interface=$"interface" to-addresses=$"local-address" comment="NAT via ISP3" 
    place-before=1;r
    nif ([/ip route rule find comment="From ISP3 IP to Inet"] ="") do={r
    n   /ip route rule add comment="From ISP3 IP to Inet" src-address=$"local-address" 
    table=to_isp3 r
    n} else={r
    n   /ip route rule set [find comment="From ISP3 IP to Inet"] disabled=no 
    src-address=$"local-address"r
    n};r
    n"

สคริปต์ในหน้าต่าง Winbox:

Multivan และการกำหนดเส้นทางบน Mikrotik RouterOS
หมายเหตุ เส้น
/ip firewall mangle set [find comment="Connmark in from ISP3"] in-interface=$"interface";
ช่วยให้คุณจัดการกับการเปลี่ยนชื่ออินเทอร์เฟซได้อย่างถูกต้อง เนื่องจากใช้งานได้กับโค้ดไม่ใช่ชื่อที่แสดง

3.3.2. ตอนนี้ ใช้โปรไฟล์ สร้างการเชื่อมต่อ ppp:

/interface pppoe-client add allow=mschap2 comment="to ISP3" disabled=no 
interface=ether3 name=pppoe-isp3 password=isp3_pass profile=isp3_client user=isp3_client

ในขั้นสุดท้าย เรามาตั้งนาฬิกากัน:

/system ntp client set enabled=yes server-dns-names=0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org

สำหรับใครที่อ่านจนจบ

วิธีที่เสนอในการใช้ multivan เป็นความชอบส่วนตัวของผู้เขียนและไม่ใช่วิธีเดียวที่เป็นไปได้ ชุดเครื่องมือ ROS นั้นกว้างขวางและยืดหยุ่นซึ่งในแง่หนึ่งทำให้เกิดความยุ่งยากสำหรับผู้เริ่มต้นและในทางกลับกันก็เป็นสาเหตุของความนิยม เรียนรู้ ทดลอง ค้นพบเครื่องมือและวิธีแก้ปัญหาใหม่ๆ ตัวอย่างเช่น ในฐานะที่เป็นแอปพลิเคชันของความรู้ที่ได้รับ เป็นไปได้ที่จะเปลี่ยนเครื่องมือในการใช้งาน multivan นี้ ตรวจสอบเกตเวย์ ด้วยเส้นทางแบบเรียกซ้ำไปยัง เน็ตวอทช์.

หมายเหตุ

  1. ตรวจสอบเกตเวย์ - กลไกที่ช่วยให้คุณปิดใช้งานเส้นทางหลังจากการตรวจสอบความพร้อมใช้งานของเกตเวย์ไม่สำเร็จสองครั้งติดต่อกัน การตรวจสอบจะดำเนินการทุกๆ 10 วินาที บวกกับการหมดเวลาการตอบสนอง โดยรวมแล้ว ระยะเวลาการเปลี่ยนจริงจะอยู่ในช่วง 20-30 วินาที หากเวลาเปลี่ยนดังกล่าวไม่เพียงพอ มีตัวเลือกให้ใช้เครื่องมือ เน็ตวอทช์ซึ่งสามารถตั้งเวลาตรวจสอบได้ด้วยตนเอง ตรวจสอบเกตเวย์ ไม่เริ่มทำงานเมื่อแพ็กเก็ตสูญหายเป็นระยะบนลิงก์

    สำคัญ! การปิดใช้งานเส้นทางหลักจะปิดใช้งานเส้นทางอื่นทั้งหมดที่อ้างถึง ดังนั้นสำหรับพวกเขาที่จะระบุ ตรวจสอบเกตเวย์ = ping ไม่จำเป็น.

  2. เกิดความล้มเหลวขึ้นในกลไก DHCP ซึ่งดูเหมือนว่าไคลเอ็นต์ติดอยู่ในสถานะต่ออายุ ในกรณีนี้ ส่วนที่สองของสคริปต์จะไม่ทำงาน แต่จะไม่ป้องกันการรับส่งข้อมูลจากการเดินอย่างถูกต้อง เนื่องจากสถานะจะติดตามเส้นทางวนซ้ำที่สอดคล้องกัน
  3. ECMP (หลายเส้นทางต้นทุนเท่ากัน) - ใน ROS สามารถกำหนดเส้นทางได้หลายเกตเวย์และระยะทางเท่ากัน ในกรณีนี้ การเชื่อมต่อจะถูกกระจายไปตามช่องสัญญาณโดยใช้อัลกอริทึมแบบวนรอบ ตามสัดส่วนของจำนวนเกตเวย์ที่ระบุ

สำหรับแรงผลักดันในการเขียนบทความช่วยในการสร้างโครงสร้างและการจัดวางสำเนียง - ความกตัญญูต่อ Evgeny เป็นการส่วนตัว @jscar

ที่มา: will.com