Post kia là em đề cập đến việc để cái pihole nó tiếp tục chạy, với yêu cầu là đi qua WireGuard, mà không bị phụ thuộc vào cái kết nối WireGuard trên router ý ạ, là reply của cái phần này
Còn cái tạo kết nối để bên ngoài vào được LAN, đồng thời vẫn giữ thiết lập hiện thời là cho 192.168.10.100-192.168.10.150 đi qua WireGuard khi vào internet em nghĩ có thể làm như sau, với giả định cái hp255 là cái VPN server bên ngoài của bác đang sẵn có và chạy sẵn WireGuard.
Trên router MikroTik, bác tạo 1 interface WireGuard hoàn toàn mới, thí dụ tên là wghp225lan. Listen Port
khác với cái 51820 của cái wghp225 đã có sẵn.
Code:
/interface wireguard
add listen-port=51822 mtu=1420 name=wghp225lan
Bác cho interface này vào interface list
Lan. Như thế sau này từ interface này sẽ truy cập được vào các vlan của bác:
Code:
/interface list member
add interface=wghp225lan list=Lan
Bác gán dải địa chỉ cho interface này:
Code:
/ip address
add address=10.6.1.10/24 interface=wghp225lan network=10.6.1.0
Khi này trong bảng IP - Routes sẽ tự động có entry destination 10.6.1.0/24 đi default gateway wghp225lan, table main.
Đưa dải địa chỉ này vào list
"ip from vlan" để packet có destination là dải này
không bị mangle rule lái sang wghp225:
Code:
/ip firewall address-list
add address=10.6.1.0/24 list="ip from vlan"
Vẫn trên router MikroTik, vào bảng WireGuard - Peers, tạo thêm 1 Peer mới gắn với interface
wghp225lan. Để endpoint-address và port là cái con VPN server của bác (giống hệt tham số bên interface wghp225), preshared-key thì tạo mới hoặc copy cũng được (miễn là sau này bác dùng đúng cái preshared key này trên server). Bác chú ý
để Persistent Keepalive là 5s ạ!
Code:
/interface wireguard peers
add allowed-address=10.6.1.0/24 endpoint-address=xxx.xxx.xxx.xxx \
endpoint-port=51820 interface=wghp225lan preshared-key="xxxxxxxxxxxxxx=" \
public-key="xxxxxxxxxxxxxxxxxx=" persistent-keepalive=5s
Cấu hình trên router như vậy là xong ạ. Sau đó bác lên con server hp225 của bác để cấu hình peer cho WireGuard.
Phần chỗ dưới [Interface] của cấu hình WireGuard, chỗ Address, bác thêm địa chỉ mới của server ở dải 10.6.1.0/24 vào, thí dụ
10.16.1.1, bên cạnh địa chỉ 10.6.0.1 sẵn có
Code:
[Interface]
Address = 10.6.0.1/24
Address = 10.6.1.1/24
Bác thêm 1 peer thứ 2 cho con router trên đó. Public key là public key lấy từ cái interface wghp225lan ở trên kia, PresharedKey cũng phải khớp.
Code:
[Peer]
PublicKey = xxxx=
PresharedKey = xxxx=
AllowedIPs = 10.6.1.10/32, 192.168.5.0/24, 192.168.10.0/24, 192.168.2.0/24, 192.168.30.0/24, 192.168.40.0/24
Chỗ AllowedIPs của peer này bác có thể thêm/bớt dải địa chỉ vlan ở nhà mà bác muốn/không muốn được truy cập tương ứng.
Giả sử bây giờ bác đã có điện thoại với cấu hình WireGuard nối sẵn vào cái wghp225 này rồi, và giờ bác muốn từ điện thoại này cũng truy cập được vào 192.168.10.5 chẳng hạn, thì giờ bác chỉ việc:
Đầu tiên là sửa
địa chỉ của điện thoại (chỗ Addresses) trong cấu hình WireGuard trên điện thoại, không còn là địa chỉ dạng 10.6.0.x/32 nữa, mà là 10.6.
1.x/32! Trên server hp225 bác cũng sửa địa chỉ của Peer điện thoại ở mục AllowedIPs sang 10.6.1.x/32 tương ứng.
Sau đó edit cấu hình Peer
trên điện thoại, chỗ AllowedIPs nếu đang có 10.6.0.0/24 không thôi thì bác sửa thành 10.6.
1.0/24 và cho thêm các dải /24 của các VLAN vào. Còn nếu trên điện thoại chỗ cấu hình peer đã để sẵn AllowedIPs = 0.0.0.0/0 rồi thì bác không cần chỉnh sửa gì thêm trên điện thoại cả.
Em đã test cấu hình tương tự ở nhà em và nó đã chạy ạ.
Để em lấy thí dụ, điện thoại có cấu hình VPN WireGuard như trên, trong cấu hình để Addresses = 10.6.1.20/32, phần Peer có endpoint là server VPN hp225. AllowedIPs (Allowed Addresses) chỗ peer này trên điện thoại để
10.6.1.10/32, 192.168.5.0/24, 192.168.10.0/24, 192.168.2.0/24, 192.168.30.0/24, 192.168.40.0/24 hoặc
0.0.0.0/0.
Điện thoại muốn nối vào 192.168.10.5 cổng 80 TCP, gửi packet đến địa chỉ này thì packet sẽ có source address = 10.6.1.20, destination address 192.168.10.5. Vì địa chỉ đích nằm trong danh sách Allowed IPs/Allow Addresses của Peer trên điện thoại đi hướng VPN server hp225, packet này sẽ được chuyển qua WireGuard đến hp225.
WireGuard trên hp225 nhận được packet, vì địa chỉ source 10.6.1.20 trùng với AllowedIPs trên cấu hình Peer ứng với điện thoại nên packet được chấp thuận cho chuyển tiếp. Vì địa chỉ đích là 192.168.10.5, nên WireGuard sẽ tìm trong số các Peer trong cấu hình của mình, xem có Peer nào có địa chỉ này trong danh sách AllowedIPs, kết quả là Peer thứ 2 của Router MikroTik được chọn, packet được lái qua kết nối này.
Tại router MikroTik, packet đến interface wghp225lan. Ứng với peer đã thiết lập có AllowedIPs 10.6.1.0/24, thế nên packet được chấp thuận, in-interface=wghp225lan, in-interface-list=Lan.
Đích đến của packet là 192.168.10.5, tra bảng routes thì ra ứng với out-interface là VlanHome, out-interface-list=Lan. Không có rule tường lửa block Lan-Lan nên packet được cho qua.
Host 192.168.10.5 xử lý packet và gửi packet trả lời, lúc này source address là 192.168.10.5, destination address là 10.6.1.20.
Tra routing thì thấy ứng với địa chỉ đích, out-interface=wghp225lan (do thuộc 10.6.1.0/24), out-interface-list=Lan và không bị block forward. Packet trả lời được chuyển qua wghp225lan đi qua WireGuard.
Tại server hp225, địa chỉ gốc của packet 192.168.10.5 thuộc AllowedIPs của Peer số 2 ứng với router nên được chấp thuận. Địa chỉ đích 10.6.1.20 ứng với Peer của điện thoại, packet được chuyển tiếp qua WG đến điện thoại.
Điện thoại nhận được packet, địa chi gốc là 192.168.10.5 thuộc danh sách AllowedIPs của Peer nên được chấp thuận.