Mẹo và thủ thuật 2018 với Mikrotik dành cho người mới bắt đầu


1Các bước gỡ lỗi đầu tiên và cách liên hệ với nhóm hỗ trợ MikroTik
2Tường lửa
2.1Bảo vệ bộ định tuyến cơ bản dựa trên trạng thái kết nối và loại địa chỉ IP bằng cách sử dụng Firewall
2.2Chặn các miền cụ thể bằng cách sử dụng tập lệnh
2.3Dễ tải trên tường lửa bằng cách sắp xếp bộ lọc tường lửa, các quy tắc NAT và xoài
2.4Dễ dàng tải lên tường lửa bằng cách sử dụng không đánh dấu làm dấu cho các gói và kết nối
2.5Chuyển tiếp cổng trên RouterOS
2.6Bảo vệ mạng nội bộ khỏi các cuộc tấn công từ internet công cộng
2.7Chỉ định giao diện tương ứng cho các quy tắc NAT của tường lửa
3chung
3.1Biến toàn cầu không hoạt động trong tập lệnh
3.2Nếu một cái gì đó không hoạt động, thì có thể nó giống như vậy
3.3Đảm bảo rằng tên giao diện là chính xác
3.4Sai lầm về việc khởi động lại
3.5Kiểm tra thông lượng
4PPP
4.1Tạo các ràng buộc tĩnh cho các giao diện PPP
5Hàng đợi
5.1 Cácgiới hạn được chỉ định trên hàng đợi đơn giản của cha mẹ không hoạt động
5.2Hàng đợi làm chậm bộ định tuyến
6Hướng dẫn cơ bản về cấu hình và gỡ lỗi RouterOS
7Đọc thêm



Trang này chứa nhiều mẹo và thủ thuật khác nhau cho người dùng RouterOS, cả người mới bắt đầu và người dùng có kinh nghiệm. Mỗi chủ đề phụ thuộc vào phiên bản RouterOS và có thể thay đổi từ phiên bản này sang phiên bản khác.


Lưu ý: Bài viết này đang được tiến hành



Các bước gỡ lỗi đầu tiên và cách liên hệ với nhóm hỗ trợ MikroTik

Rất thường các vấn đề lớn trên mạng có thể được giải quyết một cách dễ dàng. Có một bài thuyết trình hiển thị các bước gỡ lỗi đầu tiên đơn giản và giải thích cách liên hệ với nhóm hỗ trợ MikroTik nếu bạn không tự mình khắc phục được sự cố của mình.

Các bước gỡ lỗi ban đầu trong RouterOS
Bức tường lửa
Bảo vệ bộ định tuyến cơ bản dựa trên trạng thái kết nối và loại địa chỉ IP bằng cách sử dụng Firewall

Nó là cần thiết để có cấu hình tường lửa thích hợp trên router của bạn để tránh các cuộc tấn công khác nhau và kết nối định dạng không chính xác.

Để làm như vậy, bạn có thể áp dụng cấu hình (tất nhiên cần được sửa đổi cho từng nhu cầu cá nhân của từng người dùng) được hiển thị trên ví dụ (được viết trên 6.34.3 RouterOS),

Trong ví dụ WAN là cổng vào internet, LAN là giao diện cục bộ và 192.168.88.0/24 là mạng con được sử dụng trên mạng LAN.

Tạo danh sách địa chỉ bao gồm các mạng con khác nhau (về cơ bản tất cả các mạng con không nên tồn tại trong mạng công cộng): / ip địa chỉ tường lửa-danh sách thêm địa chỉ = 0.0.0.0 / 8 bình luận = danh sách RFC6890 = NotPublic thêm địa chỉ = 10.0.0.0 / 8 bình luận = danh sách RFC6890 = NotPublic thêm địa chỉ = 100.64.0.0 / 10 bình luận = danh sách RFC6890 = NotPublic thêm địa chỉ = 127.0.0.0 / 8 nhận xét = danh sách RFC6890 = NotPublic thêm địa chỉ = 169.254.0.0 / 16 nhận xét = danh sách RFC6890 = NotPublic thêm địa chỉ = 172.16.0.0 / 12 bình luận = danh sách RFC6890 = NotPublic thêm địa chỉ = 192.0.0.0 / 24 bình luận = danh sách RFC6890 = NotPublic thêm địa chỉ = 192.0.2.0 / 24 bình luận = danh sách RFC6890 = NotPublic thêm địa chỉ = 192.168.0.0 / 16 nhận xét = danh sách RFC6890 = NotPublic thêm địa chỉ = 192.88.99.0 / 24 bình luận = danh sách RFC3068 = NotPublic thêm địa chỉ = 198.18.0.0 / 15 bình luận = danh sách RFC6890 = NotPublic thêm địa chỉ = 198.51.100.0 / 24 bình luận = danh sách RFC6890 = NotPublic thêm địa chỉ = 203.0.113.0 / 24 bình luận = danh sách RFC6890 = NotPublic thêm địa chỉ = 224.0.0.0 / 4 bình luận = danh sách RFC4601 = NotPublic thêm địa chỉ = 240.0.0.0 / 4 bình luận = danh sách RFC6890 = NotPublic


Tạo quy tắc lọc tường lửa để bảo vệ bộ định tuyến khỏi các kết nối (đầu vào) đến: / ip bộ lọc tường lửa add chain = input comment = "Chấp nhận các gói được thiết lập và liên quan" trạng thái kết nối = được thiết lập, liên quan add chain = input comment = "Chấp nhận tất cả các kết nối từ mạng cục bộ" trong giao diện = LAN add action = drop chain = input comment = "Thả các gói không hợp lệ" trạng thái kết nối = không hợp lệ add action = drop chain = input comment = "Thả tất cả các gói không định tuyến địa chỉ IP" dst-address-type =! local add action = drop chain = input comment = "Thả tất cả các gói không có địa chỉ IP nguồn unicast" src-address-type =! unicast add action = drop chain = input comment = "Thả tất cả các gói từ internet công cộng không tồn tại trong mạng công cộng" trong giao diện = WAN src-address-list = NotPublic


Tạo quy tắc lọc tường lửa để bảo vệ mạng cục bộ của bạn khỏi các kết nối chuyển tiếp (chuyển tiếp): / ip bộ lọc tường lửa add chain = forward comment = "Chấp nhận các gói được thiết lập và liên quan" trạng thái kết nối = được thiết lập, liên quan add action = drop chain = forward comment = "Thả các gói không hợp lệ" trạng thái kết nối = không hợp lệ add action = drop chain = forward comment = "Thả các kết nối mới từ internet không bị ngắt kết nối" kết nối-nat-state =! dstnat trạng thái kết nối = new in-interface = WAN add action = drop chain = forward comment = "Thả tất cả các gói từ internet công cộng không nên tồn tại trong mạng công cộng" trong giao diện = WAN src-address-list = NotPublic add action = drop chain = forward comment = "Thả tất cả các gói từ mạng cục bộ sang internet không nên tồn tại trong mạng công cộng" dst-address-list = NotPublic in-interface = LAN add action = drop chain = forward comment = "Thả tất cả các gói trong mạng nội bộ mà không có địa chỉ mạng cục bộ" trong giao diện = LAN src-address =! 192.168.88.0/24

Chặn các miền cụ thể bằng cách sử dụng tập lệnh

Hiện tại, không thể chặn truy cập cho miền cụ thể trên RouterOS. Cách duy nhất để làm điều đó là biết địa chỉ IP được sử dụng bởi tên miền và chặn chúng bằng cách sử dụng tường lửa. Ý tưởng là - tìm ra các địa chỉ, thêm chúng vào danh sách địa chỉ và thả các gói tin đến các địa chỉ này. Vì địa chỉ thường là động, bạn phải làm mới chúng theo định kỳ. Đối với các mục đích như vậy, có một kịch bản sẽ thực hiện cấu hình cần thiết. Tất cả những gì bạn cần làm là tạo lịch trình làm mới các địa chỉ này theo thời gian.

Ví dụ cho thấy cách chặn truy cập vào facebook.com và youtube.com (được viết trên 6.34.3 RouterOS):#Script để thêm địa chỉ IP cho các miền cụ thể vào danh sách địa chỉ { #Array tên miền mong muốn foreach iplist in = ("youtube", "facebook") do = { { #Old mục bị xóa / ip địa chỉ tường lửa-danh sách loại bỏ [tìm nơi danh sách = $ iplist] #Dummy biến để không nhận được vào vòng lặp truy cập toàn cầu đúng # Kiểm tra xem địa chỉ IP không lặp lại while ($ counter) do = { #Resolve domain ip địa phương [/ resolve ("www.". $ iplist. ". com")] # Thêm IP vào danh sách địa chỉ trong danh sách tên miền cụ thể nếu danh sách không tồn tại nếu ([len [/ ip địa chỉ tường lửa-danh sách tìm nơi địa chỉ = $ ip]] = 0) do = { / ip địa chỉ tường lửa-danh sách địa chỉ thêm = $ ip danh sách = $ iplist} else = { #If IP đã tồn tại trong danh sách rồi ngừng phân giải miền này đặt truy cập sai } } } #Nếu không có quy tắc lọc tường lửa nào chặn miền cụ thể này thì hãy thêm nó if ([: len [/ ip bộ lọc tường lửa tìm nơi chuỗi = forward && dst-address-list = $ iplist]] = 0) do = { / ip tường lửa lọc thêm chuỗi = chuyển tiếp hành động = thả dst-address-list = $ iplist place-before = 0 \ comment = ("Quy tắc này chặn quyền truy cập vào". $ iplist) } } }



Lưu ý: Điều này sẽ chỉ hoạt động với lưu lượng IPv4



Dễ tải trên tường lửa bằng cách sắp xếp bộ lọc tường lửa, các quy tắc NAT và xoài

Khi một gói tin đi qua tường lửa, nó được kiểm tra theo từng quy tắc cho đến khi nó khớp với một quy tắc (trừ khi hành động passthrough được sử dụng). Nó có nghĩa là tốc độ xử lý tải và CPU phụ thuộc vào nó. Có một cách rất đơn giản làm thế nào để giảm tải trên bộ lọc tường lửa, NAT và quy tắc mangle - phân loại. Dựa trên hành động, mà không vi phạm thứ tự logic, bạn nên sắp xếp các quy tắc tường lửa của mình bằng cách kiểm tra số lượng gói trên thống kê cho từng quy tắc độc lập. Di chuyển các quy tắc có nhiều gói hơn phù hợp và những người đã được kết hợp hiếm khi di chuyển xuống. Hãy nhớ rằng bạn luôn phải chắc chắn rằng thứ tự hợp lý của các quy tắc không bị ảnh hưởng bởi việc sắp xếp này.
Dễ dàng tải lên tường lửa bằng cách sử dụng không đánh dấu làm dấu cho các gói và kết nối

Khi một gói tin đi qua tường lửa, nó được kiểm tra theo từng quy tắc cho đến khi nó khớp với một quy tắc (trừ khi hành động passthrough được sử dụng). Nếu bạn sử dụng các quy tắc có gói đánh dấu hành động và kết nối đánh dấu, thì sẽ rất đáng để đặt đối sánh bổ sung là không có dấu cho tham số liên quan. Nó sẽ cho phép tường lửa quyết định sớm hơn nếu gói phù hợp với quy tắc này và cũng sẽ cho phép bạn tránh đánh dấu lại.

Ví dụ kịch bản mà nên cấu hình router như đã giải thích trước (được viết trên 6.34.3 RouterOS):foreach mrk in = ("gói", "kết nối") do = { { foreach i in = ([/ ip firewall mangle tìm nơi action = ("mark-". $ mrk)]) do = { địa phương cmd ("ip tường lửa mangle". $ i. "". $ mrk. "-mark = no-mark") : thực thi $ cmd } } }

Chuyển tiếp cổng trên RouterOS

Cổng chuyển tiếp bao gồm ba phần - chuyển tiếp theo cả hai hướng và chấp nhận các gói trong chuỗi chuyển tiếp. Tất cả ba phần này phải chính xác để có cấu hình chuyển tiếp cổng làm việc.

Cho phép sử dụng như một ví dụ địa chỉ IP công cộng xxxx và địa chỉ địa phương yyyy Gateway tên giao diện trong ví dụ là "wan_interface".

Ví dụ nên được điều chỉnh cho các cổng, địa chỉ, giao diện cụ thể, v.v. Ví dụ chỉ nên được sử dụng để hiểu ý tưởng về chuyển tiếp cổng (được viết trên 6.35.4 RouterOS):

1) NAT đến địa chỉ cục bộ (chuyển hướng tất cả các yêu cầu cho địa chỉ xxxx tới yyyy):/ ip firewall nat thêm chuỗi = dstnat action = dst-nat trong giao diện = wan_interface dst-address = xxxx to-addresses = yyyy


2) NAT từ địa chỉ cục bộ quay trở lại IP công cộng (thay đổi địa chỉ nguồn thành IP công cộng để trả lời):/ ip firewall nat thêm chuỗi = srcnat action = masquerade out-interface = wan_interface


hoặc là/ ip firewall nat add chain = srcnat action = src-nat src-address = yyyy đến-địa chỉ = xxxx out-interface = wan_interface


3) Trong trường hợp bộ lọc tường lửa được sử dụng để giảm lưu lượng truy cập, bạn phải chắc chắn rằng các gói chuyển tiếp thuộc về kết nối được định vị được chấp nhận:/ ip firewall filter add chain = forward action = chấp nhận trong giao diện = wan_interface connection-nat-state = dstnat connection-state = thành lập, liên quan

Bảo vệ mạng nội bộ khỏi các cuộc tấn công từ internet công cộng

Rất thường mọi người sử dụng cấu hình mặc định trên các bộ định tuyến của họ. Điều đó cũng có nghĩa là, có thể đoán địa chỉ cục bộ nào được sử dụng phía sau bộ định tuyến. Thông thường, nó là 192.168.88.0/24 cho các thiết bị chạy trên RouterOS. Điều này có nghĩa, rằng trong kẻ tấn công mạng công cộng có thể tạo ra tuyến đường đơn giản mà nói rằng 192.168.88.0/24 là đằng sau IP công cộng của bạn và tấn công vào các thiết bị mạng nội bộ của bạn.

Để bảo vệ subnet địa phương của bạn chống lại các cuộc tấn công này rất đơn giản, quy tắc lọc tường lửa có thể được sử dụng. Quy tắc này sẽ thả tất cả các gói được định sẵn vào mạng cục bộ nhưng không bị NAT. Kết nối NAT được cho phép vì NAT có mục đích chính xác - cho phép / chuyển hướng truy cập từ internet công cộng đến địa chỉ cục bộ.

Ví dụ kịch bản mà nên cấu hình router như đã giải thích trước (được viết trên 6.34.3 RouterOS): / ip bộ lọc tường lửa add action = drop chain = forward comment = "Thả các kết nối mới từ internet không bị ngắt kết nối" kết nối-nat-state =! dstnat trạng thái kết nối = new in-interface = WAN

Chỉ định giao diện tương ứng cho các quy tắc NAT của tường lửa

Rất thường xuyên, bạn có thể thấy các cấu hình mà nhiều quy tắc NAT của tường lửa đang được sử dụng. Khi bạn thực hiện một quy tắc, toàn bộ nguyên tắc là rõ ràng và bạn có thể dễ dàng thêm nhiều quy tắc. Người dùng RouterOS thường xuyên quên thông số giao diện trên các quy tắc này. Quy tắc có thể hoạt động chính xác mà không có chúng nhưng chúng cũng có thể trở thành nguyên nhân của nhiều loại vấn đề khác nhau, ví dụ: vòng lặp, mất quyền truy cập internet và v.v.

Để tránh các vấn đề như thế này, bạn phải luôn xác định tham số out-interface cho các quy tắc srcnat NAT và tham số trong giao diện cho các quy tắc NAT dstnat. Nếu bạn cần chỉ định nhiều giao diện, thì bạn cần phải có nhiều quy tắc NAT. Tất cả điều này cũng sẽ giảm tải trên CPU.

Ví dụ sai (được viết trên 6.34.3 RouterOS):/ ip firewall nat add action = masquerade chain = srcnat src-address = 192.168.88.0 / 24 thêm chuỗi = dstnat dst-port = 1234 hành động = dst-nat giao thức = tcp đến địa chỉ = 192.168.88.2 đến-port = 80


Ví dụ đúng (được viết trên 6.34.3 RouterOS):/ ip firewall nat add action = masquerade chain = srcnat src-address = 192.168.88.0 / 24 ngoài giao diện = WAN thêm chuỗi = dstnat dst-port = 1234 hành động = dst-nat giao thức = tcp đến địa chỉ = 192.168.88.2 đến-port = 80 trong giao diện = WAN

Chung
Biến toàn cục không hoạt động trong tập lệnh

Trong RouterOS có rất nhiều thứ có thể được thực hiện bằng cách sử dụng các script. Các kịch bản và biến có thể được sử dụng ở nhiều nơi khác nhau. Rất thường xuyên, ví dụ, trong Netwatch người xác định biến toàn cầu và sau đó cố gắng sử dụng nó cũng trong System / Scripts. Thông thường nó không hoạt động, bởi vì ngay từ đầu kịch bản bạn phải nhớ định nghĩa biến này bằng cách sử dụng lệnh:: global variable_name

Nếu một cái gì đó không hoạt động, thì có thể nó giống như vậy

RouterOS có một tính năng gọi là FastTrack. Nó làm cho các kết nối thậm chí còn nhanh hơn nếu nó được kích hoạt và cấu hình đúng. Khi FastTrack được kích hoạt, lưu lượng sẽ vượt qua hàng đợi, tường lửa và các tính năng RouterOS khác. Khi sử dụng FastTrack, hãy đảm bảo rằng nó được cấu hình đúng cách và không can thiệp vào cấu hình khác. Để biết thêm thông tin, xem Hướng dẫn sử dụng: Trang Wiki / Fasttrack .


Lưu ý: Tính năng RouterOS phiên bản 6.34.3 FastTrack chỉ hoạt động với lưu lượng UDP / TCP IPv4. Trong hầu hết các trường hợp, cấu hình có thể dễ dàng được kiểm tra bằng cách sử dụng ping. Nếu ping hoạt động và TCP / UDP thì không, thì rất có khả năng FastTrack được kích hoạt cho lưu lượng này.



Đảm bảo rằng tên giao diện là chính xác

Khá thường xuyên sau khi sử dụng các loại tập lệnh khác nhau hoặc cho bất kỳ giao diện lý do nào khác trên bộ định tuyến được đổi tên. Nếu bạn đang cố gắng cấu hình một cái gì đó trên giao diện và nó không hoạt động như mong đợi, hãy chắc chắn rằng bạn đang cố gắng để cấu hình đúng.

Lệnh ví dụ sẽ hiển thị tên giao diện chính xác (được viết trên 6.34.3 RouterOS):[admin @ MikroTik]> giao diện xuất / giao diện ethernet đặt [find default-name = ether3] name = ether1 đặt [find default-name = ether1] name = ether3

Chuyện hoang đường về việc khởi động lại

Rất thường mọi người nói rằng vấn đề biến mất sau khi khởi động lại. Trong hầu hết các trường hợp, nó thực sự không đúng. Khởi động lại có nhiều thứ, ví dụ, xóa bộ nhớ cache DNS, xóa các mục nhập động khác nhau, v.v. Nếu khởi động lại đã giúp trong trường hợp của bạn, bạn nên nghĩ rằng những gì trên thiết bị của bạn được cấu hình và những gì nó được xóa bằng cách khởi động lại. Sau đó, bạn có thể thử để theo dõi lý do thực sự.
Kiểm tra thông lượng

Rất thường mọi người phàn nàn về thông lượng chậm thông qua bộ định tuyến. Bạn phải hiểu rằng thử nghiệm luồng đơn có thể chỉ sử dụng một lõi CPU. Ví dụ, trên CCR1009 bạn cần 9 luồng để sử dụng toàn bộ thiết bị. Ngoài ra nếu bạn sử dụng kiểm tra băng thông, sau đó kiểm tra chính nó đặt tải cao trên CPU và kết quả là tồi tệ hơn trong một môi trường thực tế đời sống. Thông thường trên RouterOS Traffic Generator với nhiều luồng nên được sử dụng cho kiểm tra thông lượng:

Hướng dẫn sử dụng Traffic Generator

Ví dụ về cách sử dụng Traffic Generator
PPP
Tạo các ràng buộc tĩnh cho các giao diện PPP

Nếu bạn không thích rằng các giao diện PPP của bạn là động, thì bạn có thể trên hồ sơ PPP thực thi kịch bản lệnh khởi động tạo ra ràng buộc máy chủ tĩnh cho mỗi máy khách.

Ví dụ được thực hiện cho các giao diện PPPoE, nhưng nó có thể dễ dàng điều chỉnh cho bất kỳ loại giao diện PPP nào khác (được viết trên 6.34.3 RouterOS):if ([/ giao diện pppoe-server print count-only nơi user = $ user &&! dynamic] = 0) do = { log info message = ($ user. "- đang được thêm vào như là ràng buộc tĩnh") / interface pppoe-server thêm tên = $ user user = $ user service = service1 / ppp đang hoạt động xóa [tìm nơi name = $ user] }



Lưu ý: Lệnh cuối cùng trong tập lệnh sẽ ngắt kết nối ứng dụng khách khi xác thực lần đầu



Hàng đợi
Các giới hạn được chỉ định trên Hàng đợi đơn giản gốc không hoạt động

Trong RouterOS nếu bạn có hàng đợi đơn giản với hàng đợi con, thì bạn phải nhớ rằng sau khi một hàng đợi cha mẹ khớp với một số loại lưu lượng truy cập, lưu lượng tương tự sẽ được kiểm tra lại bởi hàng đợi con. Nó có nghĩa là bạn phải bao gồm toàn bộ các gói dữ liệu được cha mẹ chụp và có một cách dễ dàng để thực hiện việc đó bằng cách sử dụng bản sao của cha mẹ khi còn nhỏ.

Ví dụ cho thấy cách tạo đúng một hàng đợi đơn giản (được viết trên 6.34.3 RouterOS).

Điều này không đúng vì chỉ các gói có địa chỉ 192.168.88.2 sẽ bị giới hạn bởi hàng đợi:/ hàng đợi đơn giản thêm tên giới hạn tối đa = 100M / 100M = mục tiêu GLOBAL = 192.168.88.0 / 24 thêm max-limit = 10M / 10M name = child1 parent = GLOBAL target = 192.168.88.2 / 32


Để khắc phục sự cố này, bạn phải thêm một hàng đợi con khác sẽ là bản sao của phụ huynh mà không có giới hạn được chỉ định:/ hàng đợi đơn giản thêm tên giới hạn tối đa = 100M / 100M = mục tiêu GLOBAL = 192.168.88.0 / 24 thêm max-limit = 10M / 10M name = child1 parent = GLOBAL target = 192.168.88.2 / 32 thêm tên = child2 parent = GLOBAL target = 192.168.88.0 / 24

Hàng đợi làm chậm bộ định tuyến

Trong RouterOS, mỗi Hàng đợi Đơn giản hoạt động trên lõi CPU đơn.

Ví dụ cho thấy làm thế nào để giảm tải trên hàng đợi đơn giản trên hệ thống đa lõi (được viết trên 6.34.3 RouterOS).

Hàng đợi này sẽ hoạt động trên lõi đơn và sẽ không hoạt động nhanh như có thể:/ hàng đợi đơn giản thêm max-limit = 100M / 100M name = queue1 target = 192.168.88.1 / 32,192.168.88.2 / 32


Hàng đợi này sẽ hoạt động trên hai lõi CPU và sẽ hoạt động tốt hơn so với hàng đợi trước đó (tất nhiên bạn phải chắc chắn rằng giới hạn đó phù hợp với bạn):/ hàng đợi đơn giản thêm max-limit = 50M / 50M name = queue2 target = 192.168.88.1 / 32 thêm max-limit = 50M / 50M name = queue3 target = 192.168.88.2 / 32

Hướng dẫn cơ bản về cấu hình và gỡ lỗi RouterOS

Một số bước bảo vệ, cấu hình và gỡ lỗi RouterOS cơ bản có thể được thực hiện một cách dễ dàng. Một số trong số đó được giải thích trong bài trình bày này:
Các hướng dẫn cơ bản về cấu hình và gỡ lỗi RouterOS