Multivan và định tuyến trên Mikrotik RouterOS

Giới thiệu

Tiếp nhận bài báo, ngoài sự phù phiếm, còn được thúc đẩy bởi tần suất đáng buồn của các câu hỏi về chủ đề này trong các nhóm hồ sơ của cộng đồng điện tín nói tiếng Nga. Bài viết dành cho các quản trị viên Mikrotik RouterOS (sau đây gọi là ROS) mới làm quen. Nó chỉ xử lý xe đa phương tiện, với trọng tâm là định tuyến. Như một phần thưởng, có các cài đặt đủ tối thiểu để đảm bảo hoạt động an toàn và thuận tiện. Những người đang tìm kiếm tiết lộ các chủ đề về hàng đợi, cân bằng tải, vlan, cầu nối, phân tích sâu nhiều giai đoạn về trạng thái của kênh và những thứ tương tự - có thể không lãng phí thời gian và công sức để đọc.

Dữ liệu thô

Là một đối tượng thử nghiệm, một bộ định tuyến Mikrotik năm cổng với ROS phiên bản 6.45.3 đã được chọn. Nó sẽ định tuyến lưu lượng giữa hai mạng cục bộ (LAN1 và LAN2) và ba nhà cung cấp (ISP1, ISP2, ISP3). Kênh tới ISP1 có địa chỉ "xám" tĩnh, ISP2 - "trắng", có được qua DHCP, ISP3 - "trắng" với ủy quyền PPPoE. Sơ đồ kết nối được hiển thị trong hình:

Multivan và định tuyến trên Mikrotik RouterOS

Nhiệm vụ là định cấu hình bộ định tuyến MTK dựa trên sơ đồ sao cho:

  1. Cung cấp chuyển đổi tự động sang nhà cung cấp dự phòng. Nhà cung cấp chính là ISP2, dự trữ đầu tiên là ISP1, dự trữ thứ hai là ISP3.
  2. Tổ chức mạng LAN1 truy cập Internet chỉ thông qua ISP1.
  3. Cung cấp khả năng định tuyến lưu lượng từ các mạng cục bộ đến Internet thông qua nhà cung cấp đã chọn dựa trên danh sách địa chỉ.
  4. Cung cấp khả năng xuất bản dịch vụ từ mạng cục bộ lên Internet (DSTNAT)
  5. Thiết lập bộ lọc tường lửa để cung cấp đủ bảo mật tối thiểu từ Internet.
  6. Bộ định tuyến có thể phát hành lưu lượng truy cập của riêng mình thông qua bất kỳ nhà cung cấp nào trong số ba nhà cung cấp, tùy thuộc vào địa chỉ nguồn đã chọn.
  7. Đảm bảo rằng các gói phản hồi được định tuyến đến kênh mà chúng đến (bao gồm cả mạng LAN).

Bình luận. Chúng tôi sẽ định cấu hình bộ định tuyến “từ đầu” để đảm bảo không có bất ngờ trong các cấu hình ban đầu “có sẵn” thay đổi từ phiên bản này sang phiên bản khác. Winbox được chọn làm công cụ cấu hình, nơi các thay đổi sẽ được hiển thị trực quan. Bản thân các cài đặt sẽ được đặt bằng các lệnh trong thiết bị đầu cuối Winbox. Kết nối vật lý để cấu hình được thực hiện bằng kết nối trực tiếp với giao diện Ether5.

Một chút lý luận về multivan là gì, nó có phải là vấn đề hay là những kẻ thông minh xảo quyệt xung quanh việc dệt nên các mạng lưới âm mưu

Một quản trị viên ham học hỏi và chu đáo, đang tự mình thiết lập một kế hoạch như vậy hoặc tương tự, đột nhiên nhận ra rằng nó đã hoạt động bình thường. Vâng, vâng, không có bảng định tuyến tùy chỉnh của bạn và các quy tắc định tuyến khác, mà hầu hết các bài viết về chủ đề này đều có đầy đủ. Hãy kiểm tra?

Chúng tôi có thể định cấu hình địa chỉ trên các giao diện và cổng mặc định không? Đúng:

Trên ISP1, địa chỉ và cổng đã được đăng ký với khoảng cách = 2 и cổng kiểm tra = ping.
Trên ISP2, cài đặt máy khách dhcp mặc định - theo đó, khoảng cách sẽ bằng một.
Trên ISP3 trong cài đặt máy khách pppoe khi add-default-route=yes đặt mặc định-tuyến đường-khoảng cách=3.

Đừng quên đăng ký NAT khi thoát:

/ip tường lửa nat add action=masquerade chain=srcnat out-interface-list=WAN

Do đó, người dùng của các trang web địa phương vui vẻ tải xuống mèo thông qua nhà cung cấp ISP2 chính và có đặt trước kênh bằng cơ chế cổng kiểm tra Xem ghi chú 1

Điểm 1 của nhiệm vụ được thực hiện. Đâu là multivan với nhãn hiệu của nó? KHÔNG…

Hơn nữa. Bạn cần giải phóng các máy khách cụ thể khỏi mạng LAN thông qua ISP1:

/ip mangle tường lửa add action=route chain=prerouting dst-address-list=!BOGONS
passthrough=yes Route-dst=100.66.66.1 src-address-list=Via_ISP1
/ip mangle tường lửa add action=route chain=prerouting dst-address-list=!BOGONS
passthrough=no Route-dst=100.66.66.1 src-address=192.168.88.0/24

Mục 2 và 3 của nhiệm vụ đã được thực hiện. Nhãn, tem, quy tắc lộ trình, bạn ở đâu?!

Cần cấp quyền truy cập vào máy chủ OpenVPN yêu thích của bạn với địa chỉ 172.17.17.17 cho các máy khách từ Internet? Vui lòng:

/ip cloud set ddns-enabled=yes

Là một đồng nghiệp, chúng tôi cung cấp cho khách hàng kết quả đầu ra: “:put [ip cloud lấy tên dns]"

Chúng tôi đăng ký chuyển tiếp cổng từ Internet:

/ip tường lửa nat add action=dst-nat chain=dstnat dst-port=1194
in-interface-list=Giao thức WAN=udp to-addresses=172.17.17.17

Mục 4 đã sẵn sàng.

Chúng tôi đã thiết lập tường lửa và bảo mật khác cho điểm 5, đồng thời chúng tôi rất vui vì mọi thứ đã hoạt động cho người dùng và với lấy hộp đựng đồ uống yêu thích ...
MỘT! Các đường hầm vẫn bị lãng quên.

l2tp-client, được định cấu hình bởi bài viết của google, đã tăng lên thành VDS Hà Lan yêu thích của bạn? Đúng.
l2tp-server với IPsec đã tăng lên và các máy khách theo tên DNS từ IP Cloud (xem ở trên.) có bám vào không? Đúng.
Ngả người ra sau ghế, nhâm nhi ly rượu, chúng tôi uể oải xem xét điểm 6 và 7 của nhiệm vụ. Chúng tôi nghĩ - chúng tôi có cần nó không? Tất cả đều giống nhau, nó hoạt động như vậy (c) ... Vì vậy, nếu vẫn không cần thiết, thì thôi. Multivan thực hiện.

Xe tải đa năng là gì? Đây là kết nối của một số kênh Internet với một bộ định tuyến.

Bạn không cần phải đọc thêm bài viết, bởi vì điều gì có thể ở đó ngoài việc thể hiện khả năng ứng dụng đáng ngờ?

Đối với những người ở lại, những người quan tâm đến điểm 6 và 7 của nhiệm vụ, đồng thời cảm thấy ngứa ngáy về chủ nghĩa hoàn hảo, chúng tôi sẽ tìm hiểu sâu hơn.

Nhiệm vụ quan trọng nhất của việc triển khai multivan là định tuyến lưu lượng chính xác. Cụ thể: bất kể cái nào (hoặc cái nào) Xem. lưu ý 3 (các) kênh của ISP xem xét tuyến đường mặc định trên bộ định tuyến của chúng tôi, nó sẽ trả về phản hồi cho kênh chính xác mà gói tin đến từ đó. Nhiệm vụ rõ ràng. Vấn đề ở đâu? Thật vậy, trong một mạng cục bộ đơn giản, nhiệm vụ là như nhau, nhưng không ai bận tâm đến các cài đặt bổ sung và không cảm thấy rắc rối. Sự khác biệt là bất kỳ nút có thể định tuyến nào trên Internet đều có thể truy cập được thông qua mỗi kênh của chúng tôi chứ không phải thông qua một kênh cụ thể nghiêm ngặt, như trong một mạng LAN đơn giản. Và "rắc rối" là nếu một yêu cầu đến với chúng tôi về địa chỉ IP của ISP3, thì trong trường hợp của chúng tôi, câu trả lời sẽ đi qua kênh ISP2, vì cổng mặc định được hướng đến đó. Rời khỏi và sẽ bị nhà cung cấp loại bỏ vì không chính xác. Vấn đề đã được xác định. Làm thế nào để giải quyết nó?

Giải pháp được chia thành ba giai đoạn:

  1. cài đặt sẵn. Ở giai đoạn này, các cài đặt cơ bản của bộ định tuyến sẽ được thiết lập: mạng cục bộ, tường lửa, danh sách địa chỉ, NAT kẹp tóc, v.v.
  2. đa phương tiện. Ở giai đoạn này, các kết nối cần thiết sẽ được đánh dấu và sắp xếp vào bảng định tuyến.
  3. Đang kết nối với một ISP. Ở giai đoạn này, các giao diện cung cấp kết nối với Internet sẽ được định cấu hình, định tuyến và cơ chế đặt trước kênh Internet sẽ được kích hoạt.

1. Cài đặt sẵn

1.1. Chúng tôi xóa cấu hình bộ định tuyến bằng lệnh:

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

đồng ý với "Nguy hiểm! Vẫn đặt lại? [có/không]:” và sau khi khởi động lại, chúng tôi kết nối với Winbox qua MAC. Ở giai đoạn này, cấu hình và cơ sở người dùng sẽ bị xóa.

1.2. Tạo người dùng mới:

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

Đăng nhập dưới nó và xóa cái mặc định:

/user remove admin

Bình luận. Tác giả cho rằng việc loại bỏ và không vô hiệu hóa người dùng mặc định là an toàn hơn và khuyến nghị sử dụng.

1.3. Chúng tôi tạo danh sách giao diện cơ bản để thuận tiện cho việc vận hành trong tường lửa, cài đặt khám phá và các máy chủ MAC khác:

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

Ký giao diện với ý kiến

/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"

và điền vào danh sách giao diện:

/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"

Bình luận. Việc viết các nhận xét dễ hiểu rất đáng để dành thời gian cho việc này, ngoài ra nó còn hỗ trợ rất nhiều cho việc khắc phục sự cố và hiểu cấu hình.

Vì lý do bảo mật, tác giả cho rằng cần phải thêm giao diện ether3 vào danh sách giao diện “WAN”, mặc dù thực tế là giao thức ip sẽ không đi qua nó.

Đừng quên rằng sau khi giao diện PPP được nâng cấp trên ether3, nó cũng sẽ cần được thêm vào danh sách giao diện “WAN”

1.4. Chúng tôi ẩn bộ định tuyến khỏi sự phát hiện và kiểm soát vùng lân cận khỏi mạng của nhà cung cấp qua 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. Chúng tôi tạo bộ quy tắc bộ lọc tường lửa đủ tối thiểu để bảo vệ bộ định tuyến:

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

(quy tắc cung cấp quyền cho các kết nối được thiết lập và có liên quan được bắt đầu từ cả mạng được kết nối và chính bộ định tuyến)

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

(ping và không chỉ ping. Tất cả icmp đều được phép vào. Rất hữu ích để tìm các sự cố MTU)

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

(quy tắc đóng chuỗi đầu vào cấm mọi thứ khác đến từ Internet)

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

(quy tắc cho phép các kết nối được thiết lập và liên quan đi qua bộ định tuyến)

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

(quy tắc đặt lại các kết nối với connection-state=invalid đi qua bộ định tuyến. Mikrotik rất khuyến khích, nhưng trong một số trường hợp hiếm hoi, nó có thể chặn lưu lượng hữu ích)

/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

(quy tắc cấm các gói đến từ Internet và chưa vượt qua thủ tục dstnat để đi qua bộ định tuyến. Điều này sẽ bảo vệ các mạng cục bộ khỏi những kẻ xâm nhập, những người ở trong cùng một miền quảng bá với các mạng bên ngoài của chúng tôi, sẽ đăng ký IP bên ngoài của chúng tôi dưới dạng một gateway và do đó, cố gắng “khám phá” các mạng cục bộ của chúng tôi.)

Bình luận. Giả sử rằng các mạng LAN1 và LAN2 được tin cậy và lưu lượng giữa chúng và từ chúng không bị lọc.

1.6. Chúng tôi tạo một danh sách với danh sách các mạng không thể định tuyến:

/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

(Đây là danh sách các địa chỉ và mạng không thể định tuyến được với Internet và sẽ được theo dõi tương ứng.)

Bình luận. Danh sách này có thể thay đổi, vì vậy tôi khuyên bạn nên kiểm tra định kỳ mức độ liên quan.

1.7. Thiết lập DNS cho chính bộ định tuyến:

/ip dns set servers=1.1.1.1,8.8.8.8

Bình luận. Trong phiên bản hiện tại của ROS, máy chủ động được ưu tiên hơn máy chủ tĩnh. Yêu cầu phân giải tên được gửi đến máy chủ đầu tiên theo thứ tự trong danh sách. Quá trình chuyển đổi sang máy chủ tiếp theo được thực hiện khi máy chủ hiện tại không khả dụng. Thời gian chờ lớn - hơn 5 giây. Quay trở lại, khi "máy chủ bị sập" được tiếp tục, không tự động xảy ra. Với thuật toán này và sự hiện diện của đa phương tiện, tác giả khuyến nghị không sử dụng máy chủ do nhà cung cấp cung cấp.

1.8. Thiết lập mạng cục bộ.
1.8.1. Chúng tôi định cấu hình địa chỉ IP tĩnh trên giao diện 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. Chúng tôi đặt quy tắc cho các tuyến đến mạng cục bộ của mình thông qua bảng định tuyến chính:

/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"

Bình luận. Đây là một trong những cách nhanh chóng và dễ dàng để truy cập địa chỉ mạng LAN bằng các nguồn địa chỉ IP bên ngoài của giao diện bộ định tuyến không đi qua tuyến đường mặc định.

1.8.3. Bật Hairpin NAT cho LAN1 và 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

Bình luận. Điều này cho phép bạn truy cập tài nguyên của mình (dstnat) qua IP bên ngoài khi đang ở trong mạng.

2. Trên thực tế, việc triển khai multivan rất chính xác

Để giải quyết vấn đề “hỏi từ đâu ra”, chúng ta sẽ sử dụng hai công cụ ROS: dấu kết nối и đánh dấu định tuyến. dấu kết nối cho phép bạn đánh dấu kết nối mong muốn và sau đó làm việc với nhãn này như một điều kiện để áp dụng đánh dấu định tuyến. Và đã có với đánh dấu định tuyến có thể làm việc trong lộ trình ip и quy tắc tuyến đường. Chúng tôi đã tìm ra các công cụ, bây giờ bạn cần quyết định đánh dấu kết nối nào - một lần, chính xác vị trí đánh dấu - hai.

Với cái đầu tiên, mọi thứ đều đơn giản - chúng ta phải đánh dấu tất cả các kết nối đến bộ định tuyến từ Internet thông qua kênh thích hợp. Trong trường hợp của chúng tôi, đây sẽ là ba nhãn (theo số lượng kênh): “conn_isp1”, “conn_isp2” và “conn_isp3”.

Sắc thái thứ hai là các kết nối đến sẽ có hai loại: quá cảnh và những kết nối dành cho chính bộ định tuyến. Cơ chế đánh dấu kết nối hoạt động trong bảng mangle. Xem xét chuyển động của gói hàng trên sơ đồ đơn giản hóa, do các chuyên gia của tài nguyên mikrotik-trainings.com (không quảng cáo) vui lòng biên soạn:

Multivan và định tuyến trên Mikrotik RouterOS

Theo các mũi tên, chúng tôi thấy rằng gói đến “giao diện đầu vào”, đi qua chuỗi“định tuyến trước” và chỉ khi đó nó mới được chia thành quá cảnh và cục bộ trong khối “quyết định định tuyến“. Do đó, để một mũi tên trúng hai đích, chúng ta sử dụng Dấu kết nối trong bảng Mangle định tuyến trước dây chuyền định tuyến trước.

Ghi chú:. Trong ROS, các nhãn “Dấu định tuyến” được liệt kê dưới dạng “Bảng” trong phần Ip/Tuyến/Quy tắc và dưới dạng “Dấu định tuyến” trong các phần khác. Điều này có thể gây ra một số nhầm lẫn khi hiểu, nhưng trên thực tế, đây là điều tương tự và là một dạng tương tự của rt_tables trong iproute2 trên linux.

2.1. Chúng tôi đánh dấu các kết nối đến từ mỗi nhà cung cấp:

/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

Bình luận. Để không đánh dấu các kết nối đã được đánh dấu, tôi sử dụng điều kiện connection-mark=no-mark thay vì connection-state=new vì tôi nghĩ điều này đúng hơn, cũng như loại bỏ các kết nối không hợp lệ trong bộ lọc đầu vào.


passthrough=no - bởi vì trong phương thức triển khai này, việc đánh dấu lại bị loại trừ và để tăng tốc độ, bạn có thể làm gián đoạn việc liệt kê các quy tắc sau lần so khớp đầu tiên.

Cần lưu ý rằng chúng tôi chưa can thiệp vào việc định tuyến theo bất kỳ cách nào. Bây giờ chỉ có các giai đoạn chuẩn bị. Giai đoạn triển khai tiếp theo sẽ là xử lý lưu lượng chuyển tuyến quay trở lại qua kết nối đã thiết lập từ đích đến trong mạng cục bộ. Những thứ kia. những gói đó (xem sơ đồ) đã đi qua bộ định tuyến trên đường đi:

“Giao diện đầu vào”=>”Định tuyến trước”=>”Quyết định định tuyến”=>”Chuyển tiếp”=>”Định tuyến sau”=>”Giao diện đầu ra” và đến địa chỉ của họ trong mạng cục bộ.

Quan trọng! Trong ROS không có sự phân chia logic thành giao diện bên ngoài và bên trong. Nếu bạn theo dõi đường dẫn của gói phản hồi theo sơ đồ trên, nó sẽ đi theo đường dẫn logic giống như yêu cầu:

“Giao diện đầu vào”=>”Định tuyến trước”=>”Quyết định định tuyến”=>”Chuyển tiếp”=>”Định tuyến sau”=>”Giao diện đầu ra” chỉ vì một yêu cầu"Giao diện đầu vào” là giao diện ISP và để có câu trả lời - LAN

2.2. Chúng tôi hướng lưu lượng chuyển tiếp phản hồi đến các bảng định tuyến tương ứng:

/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

Bình luận. in-interface-list=!WAN - chúng tôi chỉ làm việc với lưu lượng truy cập từ mạng cục bộ và dst-address-type=!local không có địa chỉ đích của địa chỉ của các giao diện của chính bộ định tuyến.

Điều tương tự đối với các gói cục bộ đến bộ định tuyến trên đường đi:

“Giao diện đầu vào”=>”Định tuyến trước”=>”Quyết định định tuyến”=>”Đầu vào”=>”Quy trình cục bộ”

Quan trọng! Câu trả lời sẽ đi theo cách sau:

”Quy trình cục bộ”=>”Quyết định định tuyến”=>”Đầu ra”=>”Đăng định tuyến”=>”Giao diện đầu ra”

2.3. Chúng tôi hướng lưu lượng cục bộ phản hồi đến các bảng định tuyến tương ứng:

/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

Ở giai đoạn này, nhiệm vụ chuẩn bị gửi phản hồi đến kênh Internet mà yêu cầu đến có thể được coi là đã được giải quyết. Mọi thứ đều được đánh dấu, dán nhãn và sẵn sàng để được định tuyến.
Một tác dụng “phụ” tuyệt vời của thiết lập này là khả năng hoạt động với tính năng chuyển tiếp cổng DSNAT từ cả hai nhà cung cấp (ISP2, ISP3) cùng một lúc. Hoàn toàn không, vì trên ISP1, chúng tôi có một địa chỉ không thể định tuyến. Ví dụ, hiệu ứng này rất quan trọng đối với máy chủ thư có hai MX xem các kênh Internet khác nhau.

Để loại bỏ các sắc thái hoạt động của các mạng cục bộ với các bộ định tuyến IP bên ngoài, chúng tôi sử dụng các giải pháp từ các đoạn văn. 1.8.2 và 3.1.2.6.

Ngoài ra, bạn có thể sử dụng công cụ có đánh dấu để giải đoạn 3 của bài toán. Chúng tôi thực hiện nó như thế này:

2.4. Chúng tôi hướng lưu lượng truy cập từ các máy khách cục bộ từ danh sách định tuyến đến các bảng thích hợp:

/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

Kết quả là, nó trông giống như thế này:

Multivan và định tuyến trên Mikrotik RouterOS

3. Thiết lập kết nối với ISP và bật định tuyến có thương hiệu

3.1. Thiết lập kết nối với ISP1:
3.1.1. Định cấu hình địa chỉ IP tĩnh:

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

3.1.2. Thiết lập định tuyến tĩnh:
3.1.2.1. Thêm tuyến đường "khẩn cấp" mặc định:

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

Bình luận. Tuyến đường này cho phép lưu lượng truy cập từ các quy trình cục bộ vượt qua giai đoạn Quyết định tuyến đường, bất kể trạng thái liên kết của bất kỳ nhà cung cấp nào. Sắc thái của lưu lượng truy cập cục bộ gửi đi là để gói di chuyển ít nhất đến một nơi nào đó, bảng định tuyến chính phải có một tuyến hoạt động đến cổng mặc định. Nếu không, thì gói sẽ bị hủy.

Là một phần mở rộng công cụ cổng kiểm tra Để phân tích sâu hơn về trạng thái kênh, tôi khuyên bạn nên sử dụng phương pháp định tuyến đệ quy. Bản chất của phương pháp là chúng tôi yêu cầu bộ định tuyến tìm đường dẫn đến cổng của nó không phải trực tiếp mà thông qua một cổng trung gian. 4.2.2.1, 4.2.2.2 và 4.2.2.3 sẽ được chọn làm cổng “thử nghiệm” tương ứng cho ISP1, ISP2 và ISP3.

3.1.2.2. Định tuyến đến địa chỉ “xác minh”:

/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

Bình luận. Chúng tôi hạ giá trị phạm vi xuống giá trị mặc định trong phạm vi mục tiêu ROS để sử dụng 4.2.2.1 làm cổng đệ quy trong tương lai. Tôi nhấn mạnh: phạm vi của tuyến đường đến địa chỉ “thử nghiệm” phải nhỏ hơn hoặc bằng phạm vi đích của tuyến đường sẽ tham chiếu đến địa chỉ thử nghiệm.

3.1.2.3. Định tuyến mặc định đệ quy cho lưu lượng không có dấu định tuyến:

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

Bình luận. Giá trị distance=2 được sử dụng vì ISP1 được khai báo là bản sao lưu đầu tiên theo các điều kiện của tác vụ.

3.1.2.4. Định tuyến mặc định đệ quy cho lưu lượng có dấu định tuyến “to_isp1”:

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

Bình luận. Trên thực tế, ở đây chúng ta cuối cùng cũng bắt đầu tận hưởng thành quả của công việc chuẩn bị đã được thực hiện trong đoạn 2.


Trên tuyến này, tất cả lưu lượng có đánh dấu tuyến “to_isp1” sẽ được chuyển hướng đến cổng của nhà cung cấp đầu tiên, bất kể cổng mặc định nào hiện đang hoạt động cho bảng chính.

3.1.2.5. Tuyến mặc định đệ quy dự phòng đầu tiên cho lưu lượng được gắn thẻ ISP2 và 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

Bình luận. Các tuyến này là cần thiết, trong số những thứ khác, để dự trữ lưu lượng truy cập từ các mạng cục bộ là thành viên của danh sách địa chỉ “to_isp*”'

3.1.2.6. Chúng tôi đăng ký tuyến đường cho lưu lượng truy cập cục bộ của bộ định tuyến với Internet thông qua ISP1:

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

Bình luận. Kết hợp với các quy tắc từ đoạn 1.8.2, nó cung cấp quyền truy cập vào kênh mong muốn với một nguồn nhất định. Điều này rất quan trọng để xây dựng các đường hầm chỉ định địa chỉ IP phía cục bộ (EoIP, IP-IP, GRE). Vì các quy tắc trong quy tắc định tuyến ip được thực thi từ trên xuống dưới, cho đến khi khớp điều kiện đầu tiên, nên quy tắc này phải nằm sau quy tắc từ khoản 1.8.2.

3.1.3. Chúng tôi đăng ký quy tắc NAT cho lưu lượng gửi đi:

/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

Bình luận. NATim mọi thứ xảy ra, ngoại trừ những gì được đưa vào chính sách IPsec. Tôi cố gắng không sử dụng action=masquerade trừ khi thực sự cần thiết. Nó chậm hơn và tốn nhiều tài nguyên hơn src-nat vì nó tính toán địa chỉ NAT cho mỗi kết nối mới.

3.1.4. Chúng tôi gửi trực tiếp các khách hàng từ danh sách bị cấm truy cập thông qua các nhà cung cấp khác đến cổng của nhà cung cấp 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

Bình luận. action=route có mức độ ưu tiên cao hơn và được áp dụng trước các quy tắc định tuyến khác.


place-before=0 - đặt quy tắc của chúng ta đầu tiên trong danh sách.

3.2. Thiết lập kết nối với ISP2.

Vì nhà cung cấp ISP2 cung cấp cho chúng tôi các cài đặt qua DHCP, nên việc thực hiện các thay đổi cần thiết với tập lệnh bắt đầu khi ứng dụng khách DHCP được kích hoạt là điều hợp lý:

/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

Chính tập lệnh trong cửa sổ Winbox:

Multivan và định tuyến trên Mikrotik RouterOS
Bình luận. Phần đầu tiên của tập lệnh được kích hoạt khi có được hợp đồng thuê thành công, phần thứ hai - sau khi hợp đồng thuê được giải phóng.Xem ghi chú 2

3.3. Chúng tôi thiết lập kết nối với nhà cung cấp ISP3.

Vì nhà cung cấp cung cấp cho chúng tôi các cài đặt động nên việc thực hiện các thay đổi cần thiết bằng cách sử dụng các tập lệnh bắt đầu sau khi giao diện ppp được nâng lên và sau khi giao diện ppp được hạ xuống là điều hợp lý.

3.3.1. Đầu tiên chúng tôi định cấu hình hồ sơ:

/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"

Chính tập lệnh trong cửa sổ Winbox:

Multivan và định tuyến trên Mikrotik RouterOS
Bình luận. Chuỗi
/ip tường lửa mangle set [tìm nhận xét="Kết nối từ ISP3"] trong giao diện=$"giao diện";
cho phép bạn xử lý chính xác việc đổi tên giao diện, vì nó hoạt động với mã của nó chứ không phải tên hiển thị.

3.3.2. Bây giờ, sử dụng cấu hình, tạo kết nối 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

Bước cuối cùng, hãy đặt đồng hồ:

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

Dành cho những ai đọc đến cuối

Cách được đề xuất để thực hiện multivan là sở thích cá nhân của tác giả và không phải là cách duy nhất có thể. Bộ công cụ ROS rất phong phú và linh hoạt, một mặt gây khó khăn cho người mới bắt đầu, mặt khác lại là lý do khiến nó trở nên phổ biến. Tìm hiểu, thử, khám phá các công cụ và giải pháp mới. Ví dụ, như một ứng dụng của kiến ​​​​thức thu được, có thể thay thế công cụ này trong việc triển khai multivan cổng kiểm tra với các tuyến đệ quy đến đồng hồ mạng.

Ghi chú

  1. cổng kiểm tra — một cơ chế cho phép bạn hủy kích hoạt một tuyến đường sau hai lần kiểm tra cổng liên tiếp không thành công về tính khả dụng. Việc kiểm tra được thực hiện 10 giây một lần, cộng với thời gian chờ phản hồi. Tổng cộng, thời gian chuyển đổi thực tế nằm trong khoảng 20-30 giây. Nếu thời gian chuyển đổi này không đủ, có thể sử dụng công cụ đồng hồ mạng, trong đó có thể đặt hẹn giờ kiểm tra theo cách thủ công. cổng kiểm tra không kích hoạt khi mất gói không liên tục trên liên kết.

    Quan trọng! Vô hiệu hóa một tuyến đường chính sẽ hủy kích hoạt tất cả các tuyến đường khác tham chiếu đến nó. Do đó, để họ chỉ định cổng kiểm tra = ping không cần thiết.

  2. Nó xảy ra lỗi xảy ra trong cơ chế DHCP, có vẻ như một máy khách bị kẹt trong trạng thái gia hạn. Trong trường hợp này, phần thứ hai của tập lệnh sẽ không hoạt động, nhưng nó sẽ không ngăn lưu lượng truy cập đi đúng cách, vì trạng thái theo dõi tuyến đường đệ quy tương ứng.
  3. ECMP (Đa đường chi phí bằng nhau) - trong ROS có thể thiết lập lộ trình có nhiều cổng và cùng khoảng cách. Trong trường hợp này, các kết nối sẽ được phân phối trên các kênh bằng cách sử dụng thuật toán quay vòng, tương ứng với số lượng cổng được chỉ định.

Để có động lực viết bài báo, hãy giúp định hình cấu trúc và cách đặt trọng âm của nó - lòng biết ơn cá nhân đối với Evgeny @jscar

Nguồn: www.habr.com