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

Mấy bác cho mình hỏi. Mình có 1 dải ip từ 192.168.10.100-192.168.10.150 đi qua wireguard với 1 con nas nằm ở ip 192.168.10.20 .Giờ có cách nào để hairpin nat ip ở dãi đi qua wireguard vẫn có thể truy cập đến con nas qua ddns được không nhỉ?

via theNEXTvoz for iPhone
Ý bác 192.168.10.100-192.168.10.150 đi qua WG là sao??? từ ngoài vào phải qua WG và 192.168.10.20 ko qua WG??? Còn nữa, 10.20 ko cùng VLAN vs 10.100-10.150???
 
mình đang gặp ca khó khi routing thông 2 WG VPN với nhau. Cụ thể:
1. router ở nhà 192.168.1.0/24, WG#1A 10.0.0.0.1, WG#2A 10.0.10.1
2. router ở trang trại 192.168.2.0/24 (sau firewall), WG#2B 10.0.10.2 client-to-site vs WG#2A
3. router ở văn phòng 192.168.10.0/24 (sau firewall), WG#1B 10.0.0.2 client-to-site vs WG#1A
Tình trạng đã config được hiện nay:
_ từ dải IP local ở nhà có thể access vào local của trang trại cũng như văn phòng và ngược lại
_ từ IP local ở trang trại 192.168.2.0/24 có thể access vào router văn phòng qua IP WG#2B 10.0.10.2
_ từ IP local ở văn phòng 192.168.10.0/24 có thể access vào router trang trại qua IP WG#2B 10.0.0.2
Mong muốn chưa làm đc:
_ từ IP local ở trang trại 192.168.2.0/24 có thể access vào IP local của văn phòng 192.168.10.0/24
Điều kiện:
Vì một số lý do, không thể/không muốn đặt WG VPN #1 vs #2 cùng dải IP
 
Ý bác 192.168.10.100-192.168.10.150 đi qua WG là sao??? từ ngoài vào phải qua WG và 192.168.10.20 ko qua WG??? Còn nữa, 10.20 ko cùng VLAN vs 10.100-10.150???
chung 1 vlan bác, dải 100 đến 150 được đánh mangle để thông ra ngoài qua đường vpn còn con nas thì đi qua đường wan

via theNEXTvoz for iPhone
 
Với cấu hình tường lửa đó (cái mặc định, trên trang web bác Tarikin kia cũng post cái tường lửa defconf) thì để truy cập vào giao diện web hoặc SSH hay telnet được vào module SFP GPON hay converter cắm vào cổng ethernet bình thường bác chỉ cần làm các bước:

  • Cho cổng sfpX/sfp-sfpplusX/etherX liên quan vào interface list WAN
  • Vào IP - Addresses, tạo Entry cho cái interface đó, gắn địa chỉ của cái module GPON hay Converter vào chỗ Network, chọn một địa chỉ cùng dải /24 với cái địa chỉ kia làm địa chỉ của router (mục Address), chẳng cần netmask gì cả.

Thí dụ Module GPON có địa chỉ 192.168.1.10, cắm sfp-sfpplus1 thì em gắn thế này thôi bác:

View attachment 2393387

Sau đó dùng web browser hoặc SSH client vào 192.168.1.10 thôi. Miễn là cái địa chỉ của cái module/converter nó đúng.

Lý do nó hoạt động vì: Thêm cái address thế kia là RouterOS tự động thêm route vào bảng Routes, ghi rõ với địa chỉ đích 192.168.1.10/32 thì dùng interface sfp-sfpplus1 làm gateway đi ra. Sau đó vì dùng tường lửa mặc định và sfp-sfpplus1 nằm trong interface list WAN nên cái rule

Code:
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" \
    ipsec-policy=out,none out-interface-list=WAN

nó tự áp dụng cho cái interface này.

Giả sử LAN của bác 192.168.88.0/24 như mặc định, bác ngồi PC có địa chỉ 192.168.88.15 muốn vào 192.168.1.10 kia. PC bác tạo packet có source address 192.168.88.15, destination address 192.168.1.10 (tạm thời không quan tâm đến port).

PC bác thấy địa chỉ ngoài subnet nên gửi packet này qua gateway là router bác ở 192.168.88.1. Router tìm ra được route là phải đi qua sfp-sfpplus1. Vì interface trong list WAN nên áp dụng rule masquerade: router sửa source address của packet thành địa chỉ của mình trên interface, tức là 192.168.1.2 và nhớ điều này lại.

Packet được forward qua interface sfp-sfpplus1 ra bên ngoài do không bị dính rule drop forward. rule drop này trong firewall defconf chỉ drop nếu in-interface-list thuộc list WAN, mà ở đây in-interface lại là cái bridge LAN.

Module SFP nhận được packet, xử lý và trả lời với packet có source address 192.168.1.10 và destination address là 192.168.1.2. Packet này đến router với in-interface là sfp-sfpplus1 thuộc list WAN. Router nhớ là đã masquerade cái kết nối này, nên sẽ tự động sửa packet, thay địa chỉ destination address từ 192.168.1.2 thành địa chỉ PC gốc 192.168.88.15. Source address vẫn là 192.168.1.10. Từ đó tìm ra là sẽ phải forward packet ra interface bridge LAN.

Packet này đến chain forward của router và mặc dù in-interface là từ WAN, vẫn sẽ được router accept mà không drop vì connection-state của packet này là established nên được rule accept ở đầu chain forward cho qua.

Ở interface bridge thì packet được chuyển đến PC bằng Layer 2 với địa chỉ MAC đích là của PC, địa chỉ MAC nguồn là của router trên bridge. PC nhận được packet với source address 192.168.1.10, destination address 192.168.88.15 phù hợp với cái packet gửi đi trước đó.

Tóm lại là nếu cấu hình của bác đúng như thế thì bác sẽ truy cập được cái module ở cổng SFP bình thường. Nếu không thành công thì có thể do địa chỉ IP của module bị sai. Hoặc bác quên không cho interface vào list WAN. Hoặc bác có thêm hay bớt rules tường lửa nào đó chăng?
Phần masquerade em là y như anh nói!
Address của sfp em cũng đã thêm vào!
Còn thiếu bước nào nữa không anh?
Em vẫn chưa access vào sfp ạ!
 
chung 1 vlan bác, dải 100 đến 150 được đánh mangle để thông ra ngoài qua đường vpn còn con nas thì đi qua đường wan

via theNEXTvoz for iPhone
Nếu đã chung VLAN thì ko lý do gì trong local bridge dải 100-150 lại ko access đc vào con nas 20 qua IP, nếu qua domain thì chắc bác hairping nat chưa chuẩn rồi.
 
Nếu đã chung VLAN thì ko lý do gì trong local bridge dải 100-150 lại ko access đc vào con nas 20 qua IP, nếu qua domain thì chắc bác hairping nat chưa chuẩn rồi.
em có tham khảo trên page của bác thuận bùi nói là khi mangle qua vpn thì nó sẽ route theo bảng table khác hay gì đó không chung wan nữa nên hairpin nat mất tác dụng

via theNEXTvoz for iPhone
 
Phần masquerade em là y như anh nói!
Address của sfp em cũng đã thêm vào!
Còn thiếu bước nào nữa không anh?
Em vẫn chưa access vào sfp ạ!

Bác chú ý là ở trên còn có mục đưa interface sfp vào interface list WAN nữa ạ.

Code:
/interface list member
add interface=sfp-sfpplus1 list=WAN

(sfp-sfpplus1 là interface đang cắm module). Nếu nó vẫn không chạy, tốt nhất bác export nội dung cấu hình firewall và interface list lên đây. Chạy các lệnh này và copy output ạ:

Code:
/interface list export
/ip firewall export
 
trong bridge mình có chạy 4 cái vlan, nhưng gặp vấn đề hiện tại là trong dải ip đó cứ bật wireguard lên là không vào được nas qua tên miền trong mạng nội bộ. tắt wireguard đi thì vào bình thường

Tên miền của cái NAS trong mạng nội bộ của bác hiện vẫn resolve ra cái địa chỉ IP public của router à? Nhất là với trường hợp NAS (có thể truyền hàng GB dữ liệu 1 lúc) lẫn các thiết bị đều cùng 1 subnet LAN 192.168.10.0/24 thì việc này làm tốn kém tài nguyên của router một cách vô ích (mọi packet phải chạy qua CPU của router để xử lý, rồi router phải chỉnh sửa địa chỉ trong mọi packet vì mấy cái rules dstnat với masquerade). Nếu trong LAN các thiết bị đang sử dụng thông tin DNS server cấp qua DHCP và DNS server đó do bác quản lý, thí dụ chính là cái DNS server trên con router hoặc 1 con AGH trong LAN thì bác cấu hình static DNS entry (RouterOS) / DNS rewrite (AGH) để cho cái domain đó nó trỏ vào 192.168.10.20 thôi. Như thế các thiết bị trong 192.168.10.0/24 truy cập con NAS sẽ sử dụng ít tài nguyên của router hơn hẳn (nói chuyện với nhau chỉ trên Layer 2). Bên ngoài nhà bác thì cái domain nó vẫn resolve vào địa chỉ public của router và sử dụng port forwarding.

Nhược điểm của cách này là thứ nhất không áp dụng nếu các thiết bị trong mạng sử dụng DNS bên ngoài, thí dụ các điện thoại có thể bật thiết lập sử dụng secure dns của google hay cloudflare. Ngoài ra, nếu hiện bác có nhiều thiết bị khác nhau trong LAN cùng đang dùng chung cái DDNS domain và port forwarding qua router thì bác sẽ phải cho mỗi thiết bị 1 cái subdomain riêng (để trong LAN mỗi cái resolve ra 1 địa chỉ LAN riêng). Nếu bác sở hữu domain name của riêng bác thì cái này đơn giản. Bác tạo nhiều subdomain, bên ngoài thì cho chúng CNAME vào cái domain DDNS, còn trong LAN thì cho mỗi cái một cái A record riêng là địa chỉ LAN của các thiết bị. Còn nếu bác không có domain riêng thì đăng ký nhiều tài khoản DDNS cùng config trỏ vào router của bác, rồi trong LAN chia chúng cho các thiết bị cần port forward.
 
Last edited:
mình đang gặp ca khó khi routing thông 2 WG VPN với nhau. Cụ thể:
1. router ở nhà 192.168.1.0/24, WG#1A 10.0.0.0.1, WG#2A 10.0.10.1
2. router ở trang trại 192.168.2.0/24 (sau firewall), WG#2B 10.0.10.2 client-to-site vs WG#2A
3. router ở văn phòng 192.168.10.0/24 (sau firewall), WG#1B 10.0.0.2 client-to-site vs WG#1A
Tình trạng đã config được hiện nay:
_ từ dải IP local ở nhà có thể access vào local của trang trại cũng như văn phòng và ngược lại
_ từ IP local ở trang trại 192.168.2.0/24 có thể access vào router văn phòng qua IP WG#2B 10.0.10.2
_ từ IP local ở văn phòng 192.168.10.0/24 có thể access vào router trang trại qua IP WG#2B 10.0.0.2
Mong muốn chưa làm đc:
_ từ IP local ở trang trại 192.168.2.0/24 có thể access vào IP local của văn phòng 192.168.10.0/24
Điều kiện:
Vì một số lý do, không thể/không muốn đặt WG VPN #1 vs #2 cùng dải IP
Thím tạo cái routing trên con mik Trang trại như này thử xem:

Code:
/ip route
add comment="WG STS" disabled=no distance=1 dst-address=192.168.10.0/24 \
    gateway=wireguard1 pref-src="" routing-table=main scope=10 \
    suppress-hw-offload=no target-scope=30
 
Bên mangle, tạo 1 prerouting--> accept với dst-add là 192.168.10.20 (đưa lên trên cùng), hoặc tạo list các ip không qua wireguard (ví dụ: adguard home, pi-hole, nas v.v....), rồi sử dụng dst-add-list.

Bạn thử coi sao?

em thử rồi bác, không hiệu quả 🥲

via theNEXTvoz for iPhone

Với các thiết bị không sử dụng được DNS server ở trong mạng LAN của bác, thí dụ điện thoại bật secure dns là dns.google hay cloudflare-dns.com chẳng hạn, thì bác phải thêm một rule như post này của bác @vuducdong, tuy nhiên địa chỉ đích trong rule không phải là 192.168.10.20. Vì đích của packet là địa chỉ public của router.

Bác vào /ip firewall address-list rồi thêm 1 entry với tên list PUBLIC_IP, nội dung address là cái domain name DDNS của bác

Code:
/ip firewall address-list
add address=my.dns.domain list=PUBLIC_IP

Khi này trong bảng Address List sẽ tự xuất hiện thêm 1 dynamic entry cũng của list PUBLIC_IP nhưng chứa địa chỉ IP đã được resolve. Trong rule của bác @vuducdong nhắc đến ở trên, thay vì ghi dst-address=192.168.10.20 thì bác ghi dst-address-list=PUBLIC_IP.
 
Thím tạo cái routing trên con mik Trang trại như này thử xem:

Code:
/ip route
add comment="WG STS" disabled=no distance=1 dst-address=192.168.10.0/24 \
    gateway=wireguard1 pref-src="" routing-table=main scope=10 \
    suppress-hw-offload=no target-scope=30
Thx U bác, vẫn ko thông.
 
mình đang gặp ca khó khi routing thông 2 WG VPN với nhau. Cụ thể:
1. router ở nhà 192.168.1.0/24, WG#1A 10.0.0.0.1, WG#2A 10.0.10.1
2. router ở trang trại 192.168.2.0/24 (sau firewall), WG#2B 10.0.10.2 client-to-site vs WG#2A
3. router ở văn phòng 192.168.10.0/24 (sau firewall), WG#1B 10.0.0.2 client-to-site vs WG#1A
Tình trạng đã config được hiện nay:
_ từ dải IP local ở nhà có thể access vào local của trang trại cũng như văn phòng và ngược lại
_ từ IP local ở trang trại 192.168.2.0/24 có thể access vào router văn phòng qua IP WG#2B 10.0.10.2
_ từ IP local ở văn phòng 192.168.10.0/24 có thể access vào router trang trại qua IP WG#2B 10.0.0.2
Mong muốn chưa làm đc:
_ từ IP local ở trang trại 192.168.2.0/24 có thể access vào IP local của văn phòng 192.168.10.0/24
Điều kiện:
Vì một số lý do, không thể/không muốn đặt WG VPN #1 vs #2 cùng dải IP

Bác thử thế này ạ:

* Trên router của trang trại. Thêm route 192.168.10.0/24 cho mặc định đi qua interface wireguard như bác @maihuong1990 post ở trên.

* Vẫn trên router trang trại bác chuyển sang tab Peers edit cái peer ứng với con router ở nhà, mục Allowed Address, bác THÊM 192.168.10.0/24 vào danh sách sẵn có nếu danh sách không phải là 0.0.0.0/0. Nếu là 0.0.0.0/0 thì không cần thêm gì.

* Trên router trang trại, đảm bảo rằng không có rule tường lửa nào block forwarding đến 192.168.10.0/24. Nếu đã có rule accept forward với out-interface là interface wireguard thì không cần rule cho phép riêng. Còn không thì cứ cho thêm 1 rule accept với dst-address cho an toàn.

* Ở router nhà, vì bác nói từ lan nhà 192.168.1.0/24 có thể vào 192.168.2.0/24 lẫn 192.168.10.0/24 rồi nên em assume là ở đây đã cấu hình đúng rồi. Nếu cần bác check xem ở router nhà này đã có route mặc định 192.168.2.0/24 đi qua gateway WG#2A chưa, và route mặc định 192.168.10.0/24 đi qua gateway WG#1A chưa. Nếu chưa thì bác add. Ngoài ra ở WG peer tương ứng với trang trại thì có 192.168.2.0/24 trong danh sách Allowed Address. Và ở Peer ứng với office có 192.168.10.0/24 trong danh sách Allowed Address.

* Ở router nhà, bác phải đảm bảo không có rule nào ở chain forward block traffic giữa 2 dải 192.168.2.0/24 và 192.168.10.0/24. Để chắc ăn add chúng vào cùng 1 address list rồi thêm rule accept forward với dst-address-list là cái list này.

* Ở trên router của office. Thêm route mặc định 192.168.2.0/24 đi qua interface wireguard.

* Trên router office, phần Allowed Address của peer WireGuard ứng với router nhà, thêm 192.168.2.0/24 vào danh sách Allowed Address.

* Trên router office, đảm bảo rằng không có rule tường lửa nào block forwarding đến 192.168.2.0/24. Nếu đã có rule accept forward với out-interface là interface wireguard thì không cần rule cho phép riêng. Còn không thì cứ cho thêm 1 rule accept với dst-address cho an toàn.
 
Thx U bác.
Bác thử thế này ạ:

* Trên router của trang trại. Thêm route 192.168.10.0/24 cho mặc định đi qua interface wireguard như bác @maihuong1990 post ở trên.
Done
* Vẫn trên router trang trại bác chuyển sang tab Peers edit cái peer ứng với con router ở nhà, mục Allowed Address, bác THÊM 192.168.10.0/24 vào danh sách sẵn có nếu danh sách không phải là 0.0.0.0/0. Nếu là 0.0.0.0/0 thì không cần thêm gì.
Done. Allowed IP = 0.0.0.0/0
* Ở router nhà, vì bác nói từ lan nhà 192.168.1.0/24 có thể vào 192.168.2.0/24 lẫn 192.168.10.0/24 rồi nên em assume là ở đây đã cấu hình đúng rồi. Nếu cần bác check xem ở router nhà này đã có route mặc định 192.168.2.0/24 đi qua gateway WG#2A chưa, và route mặc định 192.168.10.0/24 đi qua gateway WG#1A chưa. Nếu chưa thì bác add. Ngoài ra ở WG peer tương ứng với trang trại thì có 192.168.2.0/24 trong danh sách Allowed Address. Và ở Peer ứng với office có 192.168.10.0/24 trong danh sách Allowed Address.
Done
* Ở router nhà, bác phải đảm bảo không có rule nào ở chain forward block traffic giữa 2 dải 192.168.2.0/24 và 192.168.10.0/24. Để chắc ăn add chúng vào cùng 1 address list rồi thêm rule accept forward với dst-address-list là cái list này.
Done.
Tất cả các mục các đều làm theo OK, vẫn ko thông bác ạ.
 
Tiếp theo post ở trên cho bác @wuhoatu

Cái chính mà bác cần là làm sao để khi các thiết bị ở trang trại muốn gửi packet đi 192.168.10.0/24 thì router biết phải gửi chúng qua interface wireguard. Chỗ này cần cái entry với distance=1 trong bảng route kia. Đi qua wireguard đến router nhà thì packet có source thuộc 192.168.2.0/24 và destination thuộc 192.168.10.0/24 này phải được wireguard ở nhà chấp thuận, vì thế Allowed Address của peer ứng với farm phải có 192.168.2.0/24 trong list.

Sau đó router nhà phải biết với destination 192.168.10.0/24 thì lái packet này qua interface wireguard đi office, nên router nhà phải có entry trong bảng route cho 192.168.10.0/24 đi interface đó tương ứng.

Không được phép có rule masquerade hay dstnat với srcnat nào tác động lên packet này bác nhé, cần giữ nguyên địa chỉ nguồn và đích, bác chú ý nó không bị dính vào rule nào trong bảng NAT.

Packet được chuyển qua wireguard đến office. Ở đây wireguard nhận được packet có source address thuộc 192.168.2.0/24 nên peer ở router tại office này phải có trong allowed address 192.168.2.0/24.

Thiết bị trong 192.168.10.0/24 tại office nhận được packet, xử lý và gửi packet trả lời. Packet trả lời có source address thuộc 192.168.10.0/24, destination address thuộc 192.168.2.0/24. Quá trình chạy ngược lại cho tới farm này tương tự như trên và cần các Allowed Address cũng như route chấp nhận được các giá trị trong source và destination address, tương tự như em viết ở trên.

Tức là khi packet đến router nhà thì trong Allowed Address của peer ứng với office phải có 192.168.10.0/24. Sau đó trong bảng route phải có entry 192.168.2.0/24 đi qua wireguard đi farm. Tường lửa không được block forwarding giữa 2 dải.

Sau đó packet đến Farm thì trong Allowed Address của peer ứng với home trên router farm cũng phải có 192.168.10.0/24.
 
Last edited:
Tiếp theo post ở trên cho bác @wuhoatu

Cái chính mà bác cần là làm sao để khi các thiết bị ở trang trại muốn gửi packet đi 192.168.10.0/24 thì router biết phải gửi chúng qua interface wireguard. Chỗ này cần cái entry với distance=1 trong bảng route kia. Đi qua wireguard đến router nhà thì packet có source thuộc 192.168.2.0/24 và destination thuộc 192.168.10.0/24 này phải được wireguard ở nhà chấp thuận, vì thế Allowed Address của peer ứng với farm phải có 192.168.2.0/24 trong list.

Sau đó router nhà phải biết với destination 192.168.10.0/24 thì lái packet này qua interface wireguard đi office, nên router nhà phải có entry trong bảng route cho 192.168.10.0/24 đi interface đó tương ứng.

Không được phép có rule masquerade hay dstnat với srcnat nào tác động lên packet này bác nhé, cần giữ nguyên địa chỉ nguồn và đích, bác chú ý nó không bị dính vào rule nào trong bảng NAT.

Packet được chuyển qua wireguard đến office. Ở đây wireguard nhận được packet có source address thuộc 192.168.2.0/24 nên peer ở router tại office này phải có trong allowed address 192.168.2.0/24.

Thiết bị trong 192.168.10.0/24 tại office nhận được packet, xử lý và gửi packet trả lời. Packet trả lời có source address thuộc 192.168.10.0/24, destination address thuộc 192.168.2.0/24. Quá trình chạy ngược lại cho tới farm này tương tự như trên và cần các Allowed Address cũng như route chấp nhận được các giá trị trong source và destination address, tương tự như em viết ở trên.

Tức là khi packet đến router nhà thì trong Allowed Address của peer ứng với office phải có 192.168.10.0/24. Sau đó trong bảng route phải có entry 192.168.2.0/24 đi qua wireguard đi farm. Tường lửa không được block forwarding giữa 2 dải.

Sau đó packet đến Farm thì trong Allowed Address của peer ứng với home trên router farm cũng phải có 192.168.10.0/24.
Thx U bác. đã làm đc. Lỗi tại mình list thiếu IP trong mỗi group nên routing ko thông.
HomeGroup:
10.0.10.0/24
192.168.1.0/24
192.168.2.0/24
192.168.10.0/24
WorkGroup:
10.0.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.10.0/24
 
Last edited:
Back
Top