Trong nhiều trường hợp, không phải mọi thiết bị trong mạng gia đình của bạn đều cần kết nối internet thông qua địa chỉ IP công khai. May mắn thay, nếu bạn đang sử dụng OPNsense làm tường lửa và bộ định tuyến, việc tự động định tuyến lưu lượng truy cập của các thiết bị được chỉ định qua VPN trong khi vẫn cho phép truy cập cục bộ là điều vô cùng dễ dàng. Quá trình này không chỉ giúp bảo vệ quyền riêng tư mà còn tối ưu hóa việc sử dụng băng thông và tài nguyên VPN của bạn.
Để thực hiện điều này, tất cả những gì bạn cần là một nhà cung cấp dịch vụ VPN hỗ trợ giao thức WireGuard và thông tin cấu hình cần thiết để kết nối với nhà cung cấp đó bằng ứng dụng WireGuard thông thường. Trong hướng dẫn này, chúng tôi sử dụng Windscribe, nhưng hầu hết các nhà cung cấp VPN khác đều sẽ hoạt động. NordVPN có một chút khác biệt do sử dụng NordLynx (dựa trên WireGuard), nhưng vẫn có cách để trích xuất khóa kết nối của bạn. Khi bạn đã có hồ sơ WireGuard từ nhà cung cấp và đã cài đặt plugin WireGuard VPN trên OPNsense, bạn đã sẵn sàng bắt đầu!
Kết nối OPNsense với VPN bằng WireGuard
Tạo “peer” và thiết lập kết nối
Bước đầu tiên là cấu hình nhà cung cấp VPN của bạn thành một “peer” trong WireGuard đang chạy trên OPNsense. Về cơ bản, việc này sẽ tạo ra một client kết nối với nhà cung cấp dịch vụ VPN, mặc dù chưa có lưu lượng truy cập nào được định tuyến qua đó. Trong OPNsense, bạn điều hướng đến VPN, WireGuard, sau đó chọn Peers và nhập các thông tin sau:
- Name (Tên): Bất cứ tên nào bạn muốn, nhưng hãy đặt một cái tên dễ nhận biết.
- Public key (Khóa công khai): Có trong phần
[Peer]
của file cấu hình WireGuard từ nhà cung cấp của bạn. - Pre-shared key (Khóa chia sẻ trước): Có trong phần
[Peer]
của file cấu hình WireGuard từ nhà cung cấp của bạn. - Allowed IPs (Địa chỉ IP được phép):
0.0.0.0/0
(và::/0
nếu sử dụng IPv6). - Endpoint address (Địa chỉ điểm cuối): Có trong phần
[Peer]
của file cấu hình WireGuard từ nhà cung cấp của bạn. - Endpoint port (Cổng điểm cuối): Cổng từ địa chỉ điểm cuối trong cấu hình WireGuard của bạn.
- Keepalive interval (Khoảng thời gian giữ kết nối):
25
.
Thiết lập peer WireGuard trên OPNsense cho nhà cung cấp Windscribe VPN
Tạo giao diện WireGuard
Tiếp theo, chúng ta sẽ tạo một giao diện (interface). Trong OPNsense, một giao diện đóng vai trò là một cổng cho luồng lưu lượng, và chúng ta sẽ sử dụng WireGuard như một giao diện cho các thiết bị cụ thể. Đặt các chi tiết sau:
- Name (Tên): Một cái tên dễ nhận biết cho giao diện này.
- Public key/Private key (Khóa công khai/khóa riêng tư): Nhấp vào biểu tượng bánh răng để tạo cả hai.
- Tunnel address (Địa chỉ tunnel): Có trong phần
[Interface]
của file cấu hình WireGuard từ nhà cung cấp của bạn. - Peers (Các peer): Đặt là peer bạn đã tạo trước đó.
- Disable routes (Tắt định tuyến): Đảm bảo ô này được chọn.
Trạng thái WireGuard trên OPNsense hiển thị kết nối VPN đang hoạt động
Đừng quên nhấn “Apply” (Áp dụng) và đảm bảo rằng WireGuard đã được bật. Quá trình thiết lập có thể hơi khác một chút tùy thuộc vào nhà cung cấp VPN của bạn, nhưng các bước này đã hoạt động hiệu quả, cho phép OPNsense của tôi kết nối với nhà cung cấp VPN và nhận được địa chỉ IP.
Khi hoàn thành, bạn đã sẵn sàng chuyển sang tạo một giao diện mà qua đó lưu lượng có thể được định tuyến. Một lần nữa, hãy đảm bảo rằng tùy chọn Disable routes đã được chọn. Nếu không, tất cả lưu lượng truy cập của bạn sẽ bị định tuyến qua kết nối VPN, thay vì chỉ các thiết bị cụ thể sử dụng nó.
Thiết lập Interface và Gateway cho VPN
Gán WireGuard làm Interface độc lập
Điều hướng đến Interfaces (Giao diện) và nhấp vào Assignments (Gán). Tại đây, chúng ta sẽ gán cho WireGuard một giao diện riêng, trong trường hợp của tôi là “opt2”. Sau khi được gán, nhấp vào tên giao diện mới của bạn ở phía trên cùng để vào phần cài đặt của nó. Không có quá nhiều việc phải làm ở đây, ngoài việc đảm bảo rằng giao diện được bật bằng cách chọn ô kiểm ở trên cùng.
Tuy nhiên, có một điều khác cần lưu ý trong các cài đặt này. Mặc dù tôi đã tắt Dynamic gateway policy (Chính sách cổng động) trong ảnh chụp màn hình, tôi đã gặp sự cố khi client của mình không thể hoàn tất bắt tay (handshake) với nhà cung cấp. Sau khi tôi bật cài đặt này, nó đã hoạt động. Như đã đề cập, cài đặt của bạn sẽ khác nhau tùy thuộc vào nhà cung cấp, vì vậy hãy thử nghiệm với các cài đặt như thế này nếu mọi thứ không hoạt động ngay lập tức.
Cài đặt giao diện WireGuard trong OPNsense
Cấu hình Gateway cho WireGuard
Tiếp theo, chúng ta sẽ tạo cổng mạng (gateway) của mình. Điều hướng đến System (Hệ thống), Gateways (Cổng mạng) và Configuration (Cấu hình). Một gateway đáng lẽ đã được tạo khi bạn tắt định tuyến (disable routes), và của tôi được gọi là “WIREGUARD_ONLY_GW”. Giả sử nó đã tồn tại, bạn có thể tiếp tục, nếu không, bạn có thể tự tạo một gateway với tùy chọn “Far Gateway” được bật. Bây giờ chúng ta sẽ chuyển sang các quy tắc tường lửa để chỉ định lưu lượng truy cập cụ thể mà chúng ta muốn định tuyến qua VPN.
Xây dựng Aliases và Quy tắc Tường lửa
Thiết lập Alias cho thiết bị và mạng riêng
Đi tới Firewall (Tường lửa), Aliases (Bí danh) và tạo một alias mới thuộc loại Host (Máy chủ) để đại diện cho các địa chỉ IP của các thiết bị mà chúng ta muốn định tuyến qua VPN. Đối với điều này, tôi cũng khuyến nghị sử dụng các địa chỉ IP dành riêng (reserved IP addresses) cho các thiết bị được nhận dạng trong OPNsense, và có thể sử dụng “khối” địa chỉ IP cho các loại thiết bị cụ thể. Ví dụ, tôi có các thiết bị IoT được chỉ định vào một dải địa chỉ cụ thể. Điều này sẽ phụ thuộc vào nhu cầu của bạn và mục đích bạn muốn sử dụng VPN, nhưng để định tuyến lưu lượng một cách nhất quán, thiết bị sẽ cần một địa chỉ IP cục bộ nhất quán.
Tiếp theo, tạo một alias RFC1918 thuộc loại URL (IPs). Điều này không bắt buộc, nhưng nó sẽ cho phép các thiết bị đó vẫn thực hiện các kết nối cục bộ như bình thường. Nếu không, lưu lượng gửi đến các địa chỉ IP cục bộ từ các thiết bị đó cũng sẽ được định tuyến qua giao diện WireGuard. Tôi đã thêm 192.168.0.0/16
, 10.0.0.0/8
, và 172.16.0.0/12
vào alias này, vì đây là các địa chỉ được phân bổ cho mạng riêng. Bây giờ chúng ta đã sẵn sàng thực hiện các bước cuối cùng để định tuyến tất cả lưu lượng qua WireGuard.
Thiết lập quy tắc Firewall và NAT Outbound
Trong các quy tắc LAN của tường lửa, hãy tạo một quy tắc mới với Action (Hành động) là “Pass”, Source (Nguồn) là alias của bạn đại diện cho các thiết bị mà chúng ta muốn định tuyến qua VPN, và Destination (Đích đến) (với invert checked (đảo ngược được chọn)) là alias RFC1918 của chúng ta. Cuối cùng, đặt gateway là gateway WireGuard. Lưu lại và đặt quy tắc này phía trên quy tắc “Default allow LAN to any rule” để lưu lượng truy cập khớp với nó trước tiên. Cuối cùng, đi tới NAT và sau đó Outbound (Đi ra), đặt chế độ thành Hybrid (Lai) ở trên cùng, sau đó tạo một quy tắc mới trên giao diện WireGuard, trong đó Source (Nguồn) là alias đại diện cho các thiết bị chúng ta muốn định tuyến qua VPN, và Translation (Dịch) được đặt thành “Interface address”. Nhấn “Apply” (Áp dụng).
Bây giờ, chúng ta đã hoàn tất! Các thiết bị được chỉ định sẽ chỉ giao tiếp qua VPN WireGuard của chúng ta. Tùy chọn, bạn có thể thêm một “kill switch” bằng cách thêm một thẻ (tag) vào quy tắc LAN ban đầu của mình. Sau đó, thêm một quy tắc nổi (floating rule) để chặn lưu lượng truy cập với thẻ cụ thể đó. Hiện tại, DNS vẫn có thể bị rò rỉ, nhưng bạn cũng có thể chỉ định máy chủ DNS là máy chủ của nhà cung cấp VPN, sử dụng alias chúng ta đã tạo thông qua DHCP.
Kết luận
Việc cấu hình OPNsense để định tuyến lưu lượng VPN chọn lọc qua WireGuard là một giải pháp mạnh mẽ và linh hoạt. Nó không chỉ cung cấp lớp bảo mật và quyền riêng tư cho các thiết bị cụ thể mà bạn muốn, mà còn giải quyết được vấn đề giới hạn số lượng thiết bị kết nối đồng thời mà nhiều nhà cung cấp VPN áp đặt. Bạn không cần phải cài đặt ứng dụng VPN trên từng thiết bị, thay vào đó, OPNsense sẽ xử lý tất cả, biến nhiều thiết bị thành một kết nối duy nhất từ góc độ nhà cung cấp VPN.
Nếu bạn có các thiết bị mà bạn luôn muốn được định tuyến qua VPN, OPNsense là một trong những cách tốt nhất để đạt được điều đó một cách hiệu quả và kiểm soát hoàn toàn. Hãy thử cấu hình ngay hôm nay để tối ưu hóa mạng gia đình hoặc homelab của bạn!