Chuyên mục
Network

pfSense Lab – [Phần 11] Cấu hình WireGuard VPN và định tuyến tự động

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.

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

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.

Tạo Gateway mớ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

https://gist.githubusercontent.com/10h30/4347744f239f837dc0997ccbb1a0fd93/raw/abaeda6863304c0edf1b9b10439fcb7398ee14f6/pfsense-vietnam-ip-list

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.mehttps://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!

Nếu bài viết của mình mang đến thông tin, kiến thức hữu ích cho bạn, đừng ngại mời mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Cám ơn bạn!

3 trả lời trong “pfSense Lab – [Phần 11] Cấu hình WireGuard VPN và định tuyến tự động”

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.

Trả lời