Sau bài viết hướng dẫn cấu hình WireGuard VPN và định tuyến tự động trên router Mikrotik, một số bạn đã liên hệ mình hỏi cách thiết lập tương tự trên pfSense / OPNSense. Thật may là mình vẫn còn giữ hệ thống mạng ảo pfSense trên Hyper-V nên có thể tiếp tục nghiên cứu về WireGuard VPN.
Xin giới thiệu với mọi người [Phần 11] của pfSense Lab – Cấu hình WireGuard VPN và định tuyến mạng tự động trên router pfSense.
Mục Lục
I. Yêu cầu thiết bị
- pfSense đã được cấu hình mạng Internet. (Xem hướng dẫn)
- 1 VPS đã được thiết lập WireGuard Server. Bạn có thể tham khảo hướng dẫn dưới đây để tạo VPN Server miễn phí
II. Cài đặt WireGuard package
Mặc định pfSense chưa có sẵn dịch vụ WIreGuard VPN. Bạn cần phải cài thêm WireGuard từ trang quản lý Package Manager.
Truy cập vào Web UI của pfSense, bấm vào Mneu System , chọn Package Manager. Sau đó bạn chọn qua tab Available Packages
Kéo xuống dưới, tìm WireGuard và bấm Install để cài đặt.
Chờ vài phút để pfSense tải và cài đặt WireGuard. Sau khi cài thành công, bạn sẽ thấy thông báo Success.
III. Cấu hình WireGuard VPN
1. Chuẩn bị file Wireguard Client
Trước tiên, bạn cần phải truy cập WireGuard VPN Server để tạo 1 Client mới dành cho Mikrotik và tải file conf về. Nội dung file sẽ tương tự như dưới đây.
[Interface]
PrivateKey = UDbFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaN9Oms=
Address = 10.7.0.3/24
DNS = 10.2.0.100
[Peer]
PublicKey = e/VZhqIyyyyyyyyyyyyyyyyyyyyyyyyy/4wS37B5x8QMxg=
PresharedKey = 5XvmWvYUm2xxxxxxxxxxxxxxxxxxxxxxxxxxxlgYPoFzj8Q618=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 146.ooo.iii.eee:51820
PersistentKeepalive = 0
Code language: YAML (yaml)
Chúng ta sẽ dùng thông tin trong file conf này để cấu hình WireGuard VPN trên pfSense.
3. Tạo Tunnel
Bấm vào Menu VPN, chọn WireGuard để truy cập vào trang quản lý WireGuard. Bấm Add Tunnel.
Chúng ta sẽ dùng thông tin trong mục [Interface] của file cấu hình ở trên để thiết lập Tunnel
Nhập thông số:
- Enable Tunner: bấm chọn
- Description: tuỳ bạn chọn, mình ghi WireGuard-SF
- Interface Keys: nhập vào Private key nằm trong phần [Interface] của file cấu hình .conf. Sau đó mục Public Key kế bên sẽ tự động được tạo ra.
- Interface Address: nhập vào Address trong phần [Interface] của file cấu hình .conf
Bấm Save tunnel để lưu lại.
3. Tạo Peer
Bấm qua tab Tunnel, bấm vào Add Peer.
Chúng ta sẽ dùng thông tin trong mục [Peer] của file cấu hình ở trên để thiết lập Peer.
Nhập thông số:
- Enbale Peer: Bấm chọn
- Tunnel: chọn Tunnel mới vùa tạo ở bước 2
- Endpoint / Port / Public Key / Preshared Key / Keep Alive / Allowed IP: nhập theo thông tin trong file cấu hình
Bấm Save Peer để lưu lại.
4. Kích hoạt WireGuard
Bấm qua tab Settings, bấm chọn vào mục Enable WireGuard để kích hoạt WireGuard và bấm Save.
Sau đó, chuyển qua tab Status, bấm vào nút Show Peers, bạn sẽ thấy thông báo kết nối thành công đến WireGuard VPN Server.
IV. Cấu hình WireGuard Interface
Truy cập vào mục Interface Assignment từ menu Interfaces. Bấm vào nút Add ở dòng Available network ports.
Sau đó bấm vào Interface vừa tạo để thiết lập thông số
- Enable: bấm chọn Enable Interface
- Description: WG (hoặc tên gì tuỳ ý bạn)
- IPv4 Configuration Type: Static IPv4
- IPv6 Configuration Type: Static IPv6
- IPv4 Address: nhập vào Address trong phần [Interface] của file cấu hình .conf
- IPv6 Address: nhập vào Address trong phần [Interface] của file cấu hình .conf
Bấm vào nút Add a new gateway cạnh mục IPv4 và IPv6 để tạo Gateway mới. Nhập vào thông tin và bấm Add.
Bấm Save để lưu lại.
V. Thiết lập Gateway mặc định
Bấm vào Menu System, chọn Routing để truy cập trang thiết lập Gateways.
Bạn cần thiết lập Gateway mặc định cho mạng sử dụng Gateway của WAN
- Default gateway IPv4: chọn WAN_DHCP
- Default gateway IPv6: WAN_DHCP6
Bấm Save để lưu lại
VI. Cấu hình Firewall Rule for WireGuard
Để truy cập Internet thông qua WireGuard, bạn cần thiết lập Firewall Rule cho LAN.
Bấm vào menu Firewall, chọn Rules, sau đó bấm tiếp qua tab LAN. Bấm vào nút Add để tạo rule mới
Thông số:
- Action: Pass
- Interface: LAN
- Address Family: IPv4 hoặc IPv4+v6
- Protocol: Any
- Destination: WAN net
Bấm vào nút Advance Setting, mục Gateway: chọn Gateway WireGuard: WG_GW
Sau đó bấm Save. Bấm tiếp Apply để kích hoạt Firewall Rule mới.
Với Firewall Rule mới thiết lập, mọi kết nối từ trong LAN sẽ được chuyển hướng đi qua WireGuard Gateway. Bạn có thể kiểm tra bằng cách truy cập https://ip.me/
sẽ thấy hiện ra IP của VPN Server đang kết nối.
VII. Định tuyến tự động mạng quốc tế chạy qua VPN
Với cách thiết lập ở bước trên, mọi kết nối từ trong mạng LAN đều sẽ được gửi đến WireGuard VPN Server. Mình sẽ làm thêm 1 bước nữa để phân luồng mạng:
- Truy cập ra quốc tế sẽ chạy qua VPN.
- Truy cập trong nước sẽ đi trực tiếp, không qua VPN.
Nguyên lý hoạt động như sau
- Tạo 1 danh sách tất cả IP của Việt Nam sử dụng tính năng Alias của pfSense
- Tạo thêm Firewall Rule: chỉ các truy cập nào không phải đến IP Việt Nam mới chạy qua VPN.
1. Tạo IP Aliases
Từ Menu Firwall, bấm chọn Aliases. Bấm vào nút Import để nhập vào danh sách IP.
Sử dụng danh sách chứa tàon bộ dải IP của Việt Nam ở link dưới đây để nhập vào ô Aliases to Import
Aliase Name: Vietnam_IP_List
Bấm Save để lưu lại
2. Chỉnh sửa Firewall Rule
Quay lại trang quản lý Firewall Rule của LAN, chỉnh sửa lại Wirewall rule đã tạo ở bước trước đó, chỉnh lại thông số ở mục Destination:
- Destination: bấm chọn Invert Match, chọn Single host or Alias, sau đó gõ Vietnam_IP_List ở mục địa chỉ kế bên, bạn sẽ thấy tên hiện ra. Bấm chọn nó.
Bấm Save để lưu lại.
Danh sách Firewall Rule cho LAN sẽ hiện ra như sau:
Với thiết lập này, tất cả các truy cập đến IP quốc tế (nằm ngoài dải IP Việt Nam) sẽ chạy qua WireGuard VPN. Còn các truy cập trong nước sẽ chạy qua kết nối mạng thông thường.
Bạn có thể kiểm tra bằng cách truy cập vào https://ip.me
và https://kiemtraip.com/
sẽ thấy hiện ra 2 IP khác nhau:
- IP.me hiện ra IP của VPN Server
- KiemtraIP: hiện ra IP của WAN.
Để bảo đảm kết nối thông suốt, bạn nên thiết lập Failover để tránh tính trạng VPN Server gặp vấn đề sẽ ảnh hưởng đến kết nối quốc tế.
Chúc bạn thực hiện thành công!
Mình làm mãi mà không được, đến đoạn enable nó ko handsake. Không biết có phải mở port 51820 không bác. Hay do lỗi server (mình dùng WG-Easy của bác hướng dẫn)
Bạn có thể kiểm tra xem server chạy WG-Easy đã hoạt động ổn chưa bằng cách kết nối thông qua điện thoại.
Nếu đã ổn rồi thì lỗi do pfSense. Xem kỹ lại hướng dẫn trong bài xem đã làm đúng hết các bước chưa.
Cảm ơn anh, em đã làm được rồi, do cái Keep Alive em không điền.
Thank for Share 😀
Mô hình em như sau : mirotik, pfsense, Ubuntu Wireguard Server local.
Thay vì Wireguard VPS, em build con Ubuntu Wireguard local , làm theo guide anh hướng dẫn cũng được phải không ạ.
Mục đích mạng ở ngoài VPN vào Lan bên trong pfsense ạ
Bài viết này là định tuyến từ mạng nội bộ ra VPN Server bên ngoài, còn truy cập từ ngoài vào LAN trong pfsense thông qua VPN thì bạn cài wg-easy như hướng dẫn ở đây là xong: https://thuanbui.me/wg-easy-wireguard-vpn-server-web-ui/