thảo luận Cộng đồng người dùng MikroTik Router

Gặp case hơi khó nhờ các bác
Con Mik 1 dải IP : 10.0.0.0/24, line internet ở ether 1
Con Mik 2 dải IP : 10.10.10.0/24, line internet ở ether 1
2 con đang nối với nhau ở ether2
Cấu hình thế nào cho thiết bị trong mang LAN của 2 con ping thông nhau.
Network Diagram (1).png
 
Gặp case hơi khó nhờ các bác
Con Mik 1 dải IP : 10.0.0.0/24, line internet ở ether 1
Con Mik 2 dải IP : 10.10.10.0/24, line internet ở ether 1
2 con đang nối với nhau ở ether2
Cấu hình thế nào cho thiết bị trong mang LAN của 2 con ping thông nhau.
View attachment 3049807
Static route, làm thế nào tui quên mất rồi. Xưa làm nó chạy ok xong ko nhu cầu nữa, bỏ xóa luôn.
Chỉ nhớ use case là phải xài static route. Fen search google đi, xưa tui làm theo trong thread bên 4rum Mik nào đó.

Hỏi thần kiến sầu @pantigon25 với @CGGX_ANNX thử.
 
Chắc là static route, hóng cao nhân
Chắc là static route, hóng cao nhân
Static route, làm thế nào tui quên mất rồi. Xưa làm nó chạy ok xong ko nhu cầu nữa, bỏ xóa luôn.
Chỉ nhớ use case là phải xài static route. Fen search google đi, xưa tui làm theo trong thread bên 4rum Mik nào đó.

Hỏi thần kiến sầu @pantigon25 với @CGGX_ANNX thử.
Cũng search nát rồi bác, hỏi cả Copilot, chatGPT mà đa số hướng dẫn lơ mơ, ko rõ ràng nên làm ko được, đọc cũng chẳng hiểu 😞
Ipv6 xài Neightbord discovery hay gì gì ấy. Nó slacc ko cần dhcp đâu.

Coi kĩ lại hướng dẫn trong thread này đi fen. Search by thread này, từ khóa ipv6, có mấy post của tui với fen @vuducdong với feb @CGGX_ANNX chém gió.
2 con Mik cùng 1 văn phòng mà bác, đâu phải kết nối nhau qua internet
 
View attachment 3049790
View attachment 3049793
Các bác cho mình hỏi mình theo config trên mạng và voz mình đến phần DHCP thì mình bị lỗi này không biết vì sao.

Theo hình của bác thì có 2 vấn đề:

1) Ở chỗ cấu hình DHCPv6 Client bác đang để thiết lập Pool Prefix Length là 60, điều này có nghĩa là cái pool đó mỗi khi cấp prefix sẽ cấp 1 dải /60 luôn. Và VNPT thì cấp cho bác một cái prefix /60. Như vậy với thiết lập Pool Prefix Length 60 thì chỉ xin được đúng 1 lần từ cái pool thôi ạ. Bác gán cho 1 interface rồi là pool đó hết sạch, không cấp cho cái gì khác được nữa.

Bác muốn dùng cái prefix /60 của VNPT đó cho nhiều interfaces (bridge/VLAN/Wireguard) hay cấp cho các DHCPv6/SSTP/PPPoE client khác thì bác nên để thiết lập Pool Prefix Length là 64 thôi (đó cũng là giá trị mặc định). Như vậy với cái /60 mà VNPT cấp cho bác thì cái pool của bác tạo nó cấp được 16 lần prefix /64, bác có thể dùng cho 16 interface hay client DHCPv6, thay vì chỉ được 1 lần duy nhất.

2) Trong hình thì bác đang cấu hình DHCPv6 Server. Đây là việc không cần thiết nếu bác chỉ muốn các thiết bị trong các LAN và VLAN của bác có IPv6 ạ. Các bản hiện thời của RouterOS 7 thì DHCPv6 Server của nó có hỗ trợ cấp địa chỉ đơn lẻ cho thiết bị rồi (cho đến cách đây vài tháng thì DHCPv6 Server của RouterOS chỉ biết cấp prefix mà thôi), nhưng nếu chỉ để cấp cho thiết bị thì không cần (và các thiết bị Android chẳng hạn còn không thèm biết DHCPv6 là cái gì nữa ạ). Bác chỉ thực sự cần thiết lập DHCPv6 nếu trong mạng có các router nào khác và bác muốn delegate prefix IPv6 cho chúng mà thôi.

Post gần đây nhất của em về setup IPv6 trên RouterOS để dùng cho các thiết bị trong LAN, nếu bác có nhu cầu tham khảo ạ: thảo luận - Cộng đồng người dùng MikroTik Router (https://voz.vn/t/cong-%C4%91ong-nguoi-dung-mikrotik-router.50804/post-34221386)

Cả cái post em link đến ở cuối bài đó về cấu hình firewall cũng đã được cập nhật với rule fasttrack cho IPv6 rồi ạ.
 
Gặp case hơi khó nhờ các bác
Con Mik 1 dải IP : 10.0.0.0/24, line internet ở ether 1
Con Mik 2 dải IP : 10.10.10.0/24, line internet ở ether 1
2 con đang nối với nhau ở ether2
Cấu hình thế nào cho thiết bị trong mang LAN của 2 con ping thông nhau.
View attachment 3049807

Router của bác chạy bản 6 hay 7 ạ. Sau đây em giả sử nó là bản 7 mới nhất bác nhá (7.18.2).

1) Đầu tiên là ở cả 2 con router bác phải bỏ ether2 ra khỏi cái bridge chính bác nhé, để nó là 1 cổng tách rời riêng biệt, không phải cổng Slave của bridge nào hết cả.

2) Tiếp theo bác vào IP -> Addresses và tạo mục cho interface ether2.

* Trên Router bên trái hình:

1747318801081.png


Code:
/ip address
add address=10.2.2.2 interface=ether2 network=10.2.2.3

* Còn trên router bên phải hình thì bác đảo vị trí hai địa chỉ đó nhé!

Code:
/ip address
add address=10.2.2.3 interface=ether2 network=10.2.2.2

3) Sau đó bác vào IP -> Routes để thêm một static route trên mỗi router:

* Trên router bên trái:

1747319116788.png


Code:
/ip route
add dst-address=10.10.10.0/24 gateway=10.2.2.3 routing-table=main

* Trên router bên phải:

1747319284434.png


Code:
/ip route
add dst-address=10.0.0.0/24 gateway=10.2.2.2 routing-table=main

4) Nếu bác dùng cấu hình firewall dựa trên cái defconf của MikroTik thì không cần làm gì thêm. Còn nếu bác có cấu hình tường lửa nào đó khác thì bác kiểm tra xem hiện có chỗ nào chặn forward giữa các dải địa chỉ liên quan hay không, nếu có thì bác tạo thêm rule accept để cho phép traffic giữa các dải nhé.
 
Theo hình của bác thì có 2 vấn đề:

1) Ở chỗ cấu hình DHCPv6 Client bác đang để thiết lập Pool Prefix Length là 60, điều này có nghĩa là cái pool đó mỗi khi cấp prefix sẽ cấp 1 dải /60 luôn. Và VNPT thì cấp cho bác một cái prefix /60. Như vậy với thiết lập Pool Prefix Length 60 thì chỉ xin được đúng 1 lần từ cái pool thôi ạ. Bác gán cho 1 interface rồi là pool đó hết sạch, không cấp cho cái gì khác được nữa.

Bác muốn dùng cái prefix /60 của VNPT đó cho nhiều interfaces (bridge/VLAN/Wireguard) hay cấp cho các DHCPv6/SSTP/PPPoE client khác thì bác nên để thiết lập Pool Prefix Length là 64 thôi (đó cũng là giá trị mặc định). Như vậy với cái /60 mà VNPT cấp cho bác thì cái pool của bác tạo nó cấp được 16 lần prefix /64, bác có thể dùng cho 16 interface hay client DHCPv6, thay vì chỉ được 1 lần duy nhất.

2) Trong hình thì bác đang cấu hình DHCPv6 Server. Đây là việc không cần thiết nếu bác chỉ muốn các thiết bị trong các LAN và VLAN của bác có IPv6 ạ. Các bản hiện thời của RouterOS 7 thì DHCPv6 Server của nó có hỗ trợ cấp địa chỉ đơn lẻ cho thiết bị rồi (cho đến cách đây vài tháng thì DHCPv6 Server của RouterOS chỉ biết cấp prefix mà thôi), nhưng nếu chỉ để cấp cho thiết bị thì không cần (và các thiết bị Android chẳng hạn còn không thèm biết DHCPv6 là cái gì nữa ạ). Bác chỉ thực sự cần thiết lập DHCPv6 nếu trong mạng có các router nào khác và bác muốn delegate prefix IPv6 cho chúng mà thôi.

Post gần đây nhất của em về setup IPv6 trên RouterOS để dùng cho các thiết bị trong LAN, nếu bác có nhu cầu tham khảo ạ: thảo luận - Cộng đồng người dùng MikroTik Router (https://voz.vn/t/cong-%C4%91ong-nguoi-dung-mikrotik-router.50804/post-34221386)

Cả cái post em link đến ở cuối bài đó về cấu hình firewall cũng đã được cập nhật với rule fasttrack cho IPv6 rồi ạ.
Cảm ơn bác, tạm thời mình xóa DHCP và dùng qua ND rồi, có điều là mình đang cấu hình cho Adguard Home sử dụng upstream DNS IPv6. Trong ND đã set IPv6 của Adguard Home và ping thành công.

Vấn đề là khi mình set IPv6 vào Upstream DNS của Adguard Home thì không kết nối được, test upstream fail. Đứng ở router mở terminal nếu ping bằng /ping 2606:4700:4700::1111 sẽ chạy ngon lành, còn /ping interface=Bridge-LAN 2606:4700:4700::1111 thì sẽ fail.
PC nằm trong Bridge-Lan vẫn ping và dùng IPv6 bình thường
Bác có biết vì sao không ạ?
 
Cảm ơn bác, tạm thời mình xóa DHCP và dùng qua ND rồi, có điều là mình đang cấu hình cho Adguard Home sử dụng upstream DNS IPv6. Trong ND đã set IPv6 của Adguard Home và ping thành công.

Vấn đề là khi mình set IPv6 vào Upstream DNS của Adguard Home thì không kết nối được, test upstream fail. Đứng ở router mở terminal nếu ping bằng /ping 2606:4700:4700::1111 sẽ chạy ngon lành, còn /ping interface=Bridge-LAN 2606:4700:4700::1111 thì sẽ fail.
PC nằm trong Bridge-Lan vẫn ping và dùng IPv6 bình thường
Bác có biết vì sao không ạ?

AGH của bác chạy ở đâu đó ạ? Trên thiết bị ngoài hay trong container chạy trên router ạ?

Còn lệnh này của bác thì sai nên nó không chạy là bình thường ạ:

Code:
/ping interface=Bridge-LAN 2606:4700:4700::1111

cái interface nó cho bác ghi cái interface đầu ra (giống cái out-interface ý ạ), nên nếu test cho nó chạy thì bác phải cho nó là interface=pppoe-out1 chẳng hạn, nếu cái đó là interface WAN của bác. Còn bác để Bridge-LAN thì nó sẽ gửi packet vào bridge và thường không có route nào thỏa mãn điều đó cả (nên nó sẽ ghi "no route to host").
 
Router của bác chạy bản 6 hay 7 ạ. Sau đây em giả sử nó là bản 7 mới nhất bác nhá (7.18.2).

1) Đầu tiên là ở cả 2 con router bác phải bỏ ether2 ra khỏi cái bridge chính bác nhé, để nó là 1 cổng tách rời riêng biệt, không phải cổng Slave của bridge nào hết cả.

2) Tiếp theo bác vào IP -> Addresses và tạo mục cho interface ether2.

* Trên Router bên trái hình:

View attachment 3050028

Code:
/ip address
add address=10.2.2.2 interface=ether2 network=10.2.2.3

* Còn trên router bên phải hình thì bác đảo vị trí hai địa chỉ đó nhé!

Code:
/ip address
add address=10.2.2.3 interface=ether2 network=10.2.2.2

3) Sau đó bác vào IP -> Routes để thêm một static route trên mỗi router:

* Trên router bên trái:

View attachment 3050036

Code:
/ip route
add dst-address=10.10.10.0/24 gateway=10.2.2.3 routing-table=main

* Trên router bên phải:

View attachment 3050038

Code:
/ip route
add dst-address=10.0.0.0/24 gateway=10.2.2.2 routing-table=main

4) Nếu bác dùng cấu hình firewall dựa trên cái defconf của MikroTik thì không cần làm gì thêm. Còn nếu bác có cấu hình tường lửa nào đó khác thì bác kiểm tra xem hiện có chỗ nào chặn forward giữa các dải địa chỉ liên quan hay không, nếu có thì bác tạo thêm rule accept để cho phép traffic giữa các dải nhé.
Thanks bác, mai mình cấu hình xong báo lại kết quả
 
AGH của bác chạy ở đâu đó ạ? Trên thiết bị ngoài hay trong container chạy trên router ạ?

Còn lệnh này của bác thì sai nên nó không chạy là bình thường ạ:

Code:
/ping interface=Bridge-LAN 2606:4700:4700::1111

cái interface nó cho bác ghi cái interface đầu ra (giống cái out-interface ý ạ), nên nếu test cho nó chạy thì bác phải cho nó là interface=pppoe-out1 chẳng hạn, nếu cái đó là interface WAN của bác. Còn bác để Bridge-LAN thì nó sẽ gửi packet vào bridge và thường không có route nào thỏa mãn điều đó cả (nên nó sẽ ghi "no route to host").
Trong container ấy bác
 
Router của bác chạy bản 6 hay 7 ạ. Sau đây em giả sử nó là bản 7 mới nhất bác nhá (7.18.2).

1) Đầu tiên là ở cả 2 con router bác phải bỏ ether2 ra khỏi cái bridge chính bác nhé, để nó là 1 cổng tách rời riêng biệt, không phải cổng Slave của bridge nào hết cả.

2) Tiếp theo bác vào IP -> Addresses và tạo mục cho interface ether2.

* Trên Router bên trái hình:

View attachment 3050028

Code:
/ip address
add address=10.2.2.2 interface=ether2 network=10.2.2.3

* Còn trên router bên phải hình thì bác đảo vị trí hai địa chỉ đó nhé!

Code:
/ip address
add address=10.2.2.3 interface=ether2 network=10.2.2.2

3) Sau đó bác vào IP -> Routes để thêm một static route trên mỗi router:

* Trên router bên trái:

View attachment 3050036

Code:
/ip route
add dst-address=10.10.10.0/24 gateway=10.2.2.3 routing-table=main

* Trên router bên phải:

View attachment 3050038

Code:
/ip route
add dst-address=10.0.0.0/24 gateway=10.2.2.2 routing-table=main

4) Nếu bác dùng cấu hình firewall dựa trên cái defconf của MikroTik thì không cần làm gì thêm. Còn nếu bác có cấu hình tường lửa nào đó khác thì bác kiểm tra xem hiện có chỗ nào chặn forward giữa các dải địa chỉ liên quan hay không, nếu có thì bác tạo thêm rule accept để cho phép traffic giữa các dải nhé.

Đã thông 2 con Mik, các máy ping thông hết cả rồi, thanks bác nhiều :p
1747358464299.png


PS: @CGGX_ANNX chưa bác ợ, chỉ mới ping thông 2 con Mik với nhau, thiết bị bên trong chưa thông =((
1747361673268.png
 
Last edited:
Trong container ấy bác

Container của bác thì hiện bác đang gắn địa chỉ ULA (thuộc fc00::/7) cho VETH với cái bridge chứa cái VETH đó hay là sao ạ? Nếu như vậy bác làm như này ạ:

* Em giả sử cái bridge chứa cái VETH bác đang gán địa chỉ ULA fdf5:e1e5:cfdc::1/64 nhé, bác có gán cho cái VETH của AGH địa chỉ fdf5:e1e5:cfdc::4/64, khi này bác sẽ để mục Gateway 6 là fdf5:e1e5:cfdc::1 (tức địa chỉ ULA của router trên cái bridge đó).

(Bác sửa prefix thành dải ULA và địa chỉ của VETH mà bác đang sử dụng. Còn nếu chưa có prefix ULA thì bác có thể vào Unique Local IPv6 Generator (https://www.unique-local-ipv6.com/) lấy 1 cái random nó hiện ra cho bác, và gán chỗ IPv6 -> Addresses cho cái bridge của container, ở dạng xxxx::1/64 và gán 1 địa chỉ cho cái VETH, ở dạng xxxx::1234/64 kèm giá trị Gateway xxxx::1)

1747364899437.png


Nếu có thay đổi gì chỗ cấu hình địa chỉ VETH thì bác nhớ STOP rồi START lại cái container đã nhé!

* Do AGH đang có địa chỉ ULA nên sẽ không ra được internet bằng IPv6 đâu ạ, và sẽ cần phải NAT mới được. Bác sẽ cần tạo một rule netmap cũng như gán script để nó update địa chỉ trong rule netmap. Bác mở post này ở trang trước của em thảo luận - Cộng đồng người dùng MikroTik Router (https://voz.vn/t/cong-%C4%91ong-nguoi-dung-mikrotik-router.50804/post-36915367), và thực hiện nội dung ghi ở mục Spoiler: 3) Tạo script cập nhật netmap

1747365383055.png


* Sau đó bác tạo một rule SRCNAT netmap sau đây ở bảng IPv6 -> Firewall -> NAT:

Code:
/ipv6 firewall nat
add action=netmap chain=srcnat \
    comment="netmap dynamic pool prefix \"pool_v6_vnpt\"" \
    dst-address=2000::/3 src-address=fc00::/7 out-interface=PPPoE-VNPT \
    to-address=2000::/60

Bác chú ý trong phần comment có cái pool_v6_vnpt phải khớp với tên pool IPv6 bác đặt chỗ DHCPv6 client (hình ở post trước của bác) và phần out-interface thì có tên interface WAN của bác, PPPoE-VNPT, bác sửa hai mục đó cho phù hợp với cấu hình hiện tại. Ngoài ra cái /60 chỗ to-address ứng với độ dài prefix 60 mà VNPT cấp cho bác, nếu họ cấp /64 hay /56 thì bác sửa tướng ứng ở đây nhé.

* Tạo xong rule này bác vào bảng System -> Script, cho cái script đã tạo ở bước trước, script update_ipv6_prefix nó chạy ít nhất 1 lần. Bác kiểm tra Log xem có ghi lỗi gì không, nếu không có lỗi thì phần to-address của cái rule netmap bác vừa tạo ở trên sẽ có giá trị là prefix /60 mà VNPT cấp cho bác.

* Lúc này thì container AGH của bác sẽ dùng được IPv6 để vào internet. Bác có thể kiểm tra bằng cách chạy

Code:
/container print

Xem AGH có số ID gì, giả sử số ID là 0 thì bác chạy

Code:
/container shell 0

Để vào trong shell của cái container, tại đây bác có thể chạy lệnh ping để kiểm tra kết nối IPv6 ra internet từ container

Code:
ip addr
ping6 2606:4700:4700::1111 -c 10

1747366002305.png
 
Last edited:
Đã thông 2 con Mik, các máy ping thông hết cả rồi, thanks bác nhiều :p
View attachment 3050419

PS: @CGGX_ANNX chưa bác ợ, chỉ mới ping thông 2 con Mik với nhau, thiết bị bên trong chưa thông =((
View attachment 3050514

Hi bác, theo như em nhìn thấy ở bên hình của con 10.10.10.1 của bác thì bác hiện có rất nhiều đường WAN. Vậy bác có sử dụng rule mangle để load balancing PCC gì không ạ? Và có nhiều bảng route không ạ? Nếu có bác chú ý để sao cho chỉ bảng route main được sử dụng khi các thiết bị từ router này tạo kết nối tới dải bên kia, thí dụ bằng cách đặt rule sau lên trên đỉnh của bảng IP -> Firewall -> Mangle (bác có thể kéo bằng chuột)

Code:
/ip firewall mangle
add action=accept chain=prerouting dst-address=10.0.0.0/24 passthrough=no

Còn trong trường hợp bác dùng PBR với routing rules chứ không dùng bảng mangle thì bác cho sau lên trên đỉnh của bảng Routing -> Rules (bác có thể kéo bằng chuột)

Code:
/routing rule
add action=lookup disabled=no min-prefix=0 table=main

Nếu router của bác chạy RouterOS 7.18.x trở lên thì bác có thể chạy lệnh sau để xem route mà router lựa chọn khi đưa packet tới 10.0.0.203:

Code:
/ip/route/check dst-ip=10.0.0.203 once

Bác kiểm tra xem nó có có hiện đúng status ok và interface ether2 hay không ạ.
 
Hi bác, theo như em nhìn thấy ở bên hình của con 10.10.10.1 của bác thì bác hiện có rất nhiều đường WAN. Vậy bác có sử dụng rule mangle để load balancing PCC gì không ạ? Và có nhiều bảng route không ạ? Nếu có bác chú ý để sao cho chỉ bảng route main được sử dụng khi các thiết bị từ router này tạo kết nối tới dải bên kia, thí dụ bằng cách đặt rule sau lên trên đỉnh của bảng IP -> Firewall -> Mangle (bác có thể kéo bằng chuột)

Code:
/ip firewall mangle
add action=accept chain=prerouting dst-address=10.0.0.0/24 passthrough=no

Còn trong trường hợp bác dùng PBR với routing rules chứ không dùng bảng mangle thì bác cho sau lên trên đỉnh của bảng Routing -> Rules (bác có thể kéo bằng chuột)

Code:
/routing rule
add action=lookup disabled=no min-prefix=0 table=main

Nếu router của bác chạy RouterOS 7.18.x trở lên thì bác có thể chạy lệnh sau để xem route mà router lựa chọn khi đưa packet tới 10.0.0.203:

Code:
/ip/route/check dst-ip=10.0.0.203 once

Bác kiểm tra xem nó có có hiện đúng status ok và interface ether2 hay không ạ.
Đống WAN đó là của proxy, mình có dùng mangle để định tuyến từng proxy, vấn đề là con 10.0.0.0/24 ping đi thì được, con 10.10.10.0/24 ping về thì ko được =((
1747368432369.png
 
Đống WAN đó là của proxy, mình có dùng mangle để định tuyến từng proxy, vấn đề là con 10.0.0.0/24 ping đi thì được, con 10.10.10.0/24 ping về thì ko được =((
View attachment 3050787

Vâng bác, rule mangle kia bác cho ở đỉnh bảng của router 10.10.10.1 ạ, và lệnh check route bác cũng chạy trên đó, bác chạy check route với cả 2 cái địa chỉ mà bác ping không được kia xem nó ghi status với interface và nexthop là gì ạ.
 
Vâng bác, rule mangle kia bác cho ở đỉnh bảng của router 10.10.10.1 ạ, và lệnh check route bác cũng chạy trên đó, bác chạy check route với cả 2 cái địa chỉ mà bác ping không được kia xem nó ghi status với interface và nexthop là gì ạ.
Đây bác, nó vẫn chạy đúng theo mangle
1747369684236.png
 
Đây bác, nó vẫn chạy đúng theo mangle
View attachment 3050836

Phần route của bác như vậy là đúng rồi ạ, bác thử chạy từ con 10.10.10.1

Code:
/tool/traceroute address=10.0.0.203 protocol=icmp count=4

Xem nó bị dừng lại ở chỗ nào ạ. Nếu hoạt động thì sẽ có đủ 2 hops. Nếu chỉ đến được router bên kia thì chỉ thấy 10.2.2.2, vậy sẽ phải xét cấu hình firewall bên router 10.0.0.1. Còn không ra dòng nào thì phải xét firewall trên con 10.10.10.1 ạ.

Với trên con 10.0.0.203 đang chạy cái gì ạ (hệ điều hành hay thiết bị gì đó ạ).
 
Phần route của bác như vậy là đúng rồi ạ, bác thử chạy từ con 10.10.10.1

Code:
/tool/traceroute address=10.0.0.203 protocol=icmp count=4

Xem nó bị dừng lại ở chỗ nào ạ. Nếu hoạt động thì sẽ có đủ 2 hops. Nếu chỉ đến được router bên kia thì chỉ thấy 10.2.2.2, vậy sẽ phải xét cấu hình firewall bên router 10.0.0.1. Còn không ra dòng nào thì phải xét firewall trên con 10.10.10.1 ạ.

Với trên con 10.0.0.203 đang chạy cái gì ạ (hệ điều hành hay thiết bị gì đó ạ).
Đây bác, 203 là con PC chạy Win bình thường thôi, mà kể cả ping IP của con wifi bên đó cũng ko được
1747378336246.png
 

Thread statistics

Created
tuanreb,
Last reply from
Verynoober,
Replies
19,831
Views
2,057,826
Back
Top