Một số thiết bị không nhất thiết phải kết nối internet với địa chỉ IP công khai của mạng gia đình, và nếu bạn đang sử dụng OPNsense, việc tự động định tuyến lưu lượng 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. Với vai trò là chuyên gia tại kienthucthuthuat.com, tôi đã thử nghiệm phương pháp này và nhận thấy bạn chỉ cần một dịch vụ VPN hỗ trợ WireGuard cùng các thông tin cấu hình cần thiết để kết nối với nhà cung cấp bằng một ứng dụng WireGuard thông thường.
Đối với hướng dẫn này, tôi sử dụng Windscribe, nhưng hầu hết các nhà cung cấp VPN khác đều hoạt động tốt. NordVPN có thể là một trường hợp khác biệt một chút do dịch vụ này 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ần thiết của bạn. Một khi bạn có thể nhận được hồ sơ WireGuard từ nhà cung cấp VPN và đã cài đặt plugin WireGuard VPN trên OPNsense, bạn đã sẵn sàng bắt đầu!
Kết Nối Với VPN Trong OPNsense
Tạo Peer và Mở Kết Nối WireGuard
Trước tiên, bạn sẽ cần cấu hình nhà cung cấp VPN của mình như một “điểm kết nối” (peer) trong WireGuard đang chạy trên OPNsense. Điều này về cơ bản tạo ra một client kết nối tới nhà cung cấp, mặc dù chưa có lưu lượng nào được định tuyến qua đó. Trong mục VPN, WireGuard, và Peers, hãy nhập các thông tin sau:
Cấu hình điểm kết nối (peer) WireGuard trên OPNsense cho nhà cung cấp VPN
- Name (Tên): Bất kỳ tên nào bạn muốn, nhưng hãy đặt sao cho dễ nhận biết.
- Public key (Khóa công khai): Trong tệp cấu hình WireGuard từ nhà cung cấp của bạn, dưới phần
[Peer]
. - Pre-shared key (Khóa chia sẻ trước): Trong tệp cấu hình WireGuard từ nhà cung cấp của bạn, dưới phần
[Peer]
. - Allowed IPs (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): Trong tệp cấu hình WireGuard từ nhà cung cấp của bạn, dưới phần
[Peer]
. - Endpoint port (Cổng điểm cuối): Cổng từ địa chỉ điểm cuối trong tệp cấu hình WireGuard của bạn.
- Keepalive interval (Khoảng thời gian giữ kết nối):
25
.
Tiếp theo, chúng ta sẽ tạo một giao diện (interface). Trong OPNsense, 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 chỉ định. Đặt các chi tiết sau:
- Name (Tên): Bất kỳ tên nào bạn muốn, nhưng hãy đặt sao cho dễ nhận biết.
- 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): Trong tệp cấu hình WireGuard từ nhà cung cấp của bạn, dưới phần
[Interface]
. - Peers (Điểm kết nối): Đặt thành điểm kết nối bạn đã tạo trước đó.
- Disable routes (Vô hiệu hóa định tuyến): Đảm bảo rằng mục này đã được chọn.
Trạng thái kết nối WireGuard đang hoạt động trên giao diện OPNsense
Hãy chắc chắn nhấp vào “Apply” và đảm bảo rằng WireGuard đã được kích hoạt. Quá trình thiết lập có thể hơi khác nhau tùy thuộc vào nhà cung cấp VPN của bạn, nhưng đối với tôi, các bước này đã hoạt động và cho phép OPNsense của tôi kết nối với nhà cung cấp VPN và nhận một địa chỉ IP.
Sau khi hoàn tất, bạn đã sẵn sàng chuyển sang việc 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 Disable routes đã được chọn. Nếu không, toàn bộ lưu lượng của bạn sẽ được định tuyến qua kết nối VPN, thay vì chỉ định các thiết bị cụ thể sử dụng nó.
Tạo Interface và Gateway
Chỉ Lưu Lượng Được Gửi Đến Đây Mới Đi Qua VPN
Truy cập Interfaces và nhấp vào Assignments. 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 gán, hãy nhấp vào tên giao diện mới của bạn ở phía trên để vào cài đặt của nó. Không có quá nhiều điều cần làm ở đây, ngoài việc đảm bảo rằng giao diện được kích hoạt bằng hộp kiểm ở đầu.
Cài đặt giao diện WireGuard trong hệ thống OPNsense
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 trong ảnh chụp màn hình ở trên, nhưng tôi thực tế đã gặp sự cố khi client của tôi không thể hoàn thành quá trình bắt tay với nhà cung cấp. Khi tôi kích hoạt cài đặt này, nó đã hoạt động. Như tôi đã đề cập, cài đặt của bạn sẽ khác nhau tùy thuộc vào nhà cung cấp của bạn, 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.
Tiếp theo, chúng ta sẽ tạo cổng mạng (gateway) của mình. Điều hướng đến System, Gateways, và Configuration. Một gateway đáng lẽ đã được tạo khi bạn vô hiệu hóa định tuyến, 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, nhưng nếu không, bạn có thể tự tạo một gateway với tùy chọn “Far Gateway” được kích hoạ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 cụ thể mà chúng ta muốn định tuyến qua VPN.
Thiết Lập Alias và Quy Tắc Tường Lửa
Bước Cuối Cùng Để Định Tuyến Lưu Lượng
Truy cập Firewall, Aliases, và tạo một bí danh (alias) mới thuộc loại Host sẽ đạ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 bạn nên sử dụng các địa chỉ IP dự trữ (reserved IP addresses) cho các thiết bị được nhận diện trong OPNsense, và có thể sử dụng các “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 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 bí danh RFC1918 thuộc loại URLs (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 được 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 bí danh này, vì đây là các địa chỉ được phân bổ cho các mạng riêng tư. 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.
Trong các quy tắc LAN của bạn dưới firewall, tạo một quy tắc mới trong đó Action là “Pass”, Source là bí danh của bạn đại diện cho các thiết bị chúng ta muốn định tuyến qua VPN, và Destination (với invert checked) là bí danh RFC1918 của chúng ta. Cuối cùng, đặt gateway thành gateway WireGuard. Lưu lại và đặt quy tắc này lên trên “Default allow LAN to any rule” để lưu lượng khớp với nó trước. Cuối cùng, truy cập NAT và sau đó Outbound, đặt chế độ thành Hybrid ở phía trên, sau đó tạo một quy tắc mới trên giao diện WireGuard trong đó Source là bí danh đại diện cho các thiết bị chúng ta muốn định tuyến qua VPN, và Translation được đặt thành “Interface address”. Nhấp “Apply”.
Vậy là xong! Các thiết bị được chỉ định sẽ chỉ giao tiếp qua WireGuard VPN 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 tag vào quy tắc LAN ban đầu của bạn. Sau đó, thêm một quy tắc nổi (floating rule) chặn lưu lượng với tag 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à của nhà cung cấp VPN, sử dụng bí danh chúng ta đã tạo thông qua DHCP.
Nếu bạn có các thiết bị mà bạn luôn muốn định tuyến qua VPN, OPNsense là một trong những cách tốt nhất để đạt được điều đó. Bạn không cần chạy client VPN trên thiết bị, và đối với các nhà cung cấp giới hạn số lượng thiết bị có thể đăng nhập cùng một lúc, đây là một cách dễ dàng để coi nhiều thiết bị như một kết nối duy nhất.