Trong một hệ thống mạng gia đình hiện đại, không phải tất cả các thiết bị đều cần phải công khai địa chỉ IP trên internet. Trên thực tế, có nhiều tình huống bạn muốn lưu lượng truy cập từ một số thiết bị nhất định được bảo vệ và định tuyến qua một mạng riêng ảo (VPN), trong khi vẫn duy trì khả năng truy cập mạng cục bộ bình thường. Nếu bạn đang sử dụng OPNsense làm tường lửa chính cho mạng của mình, việc thiết lập định tuyến lưu lượng truy cập của các thiết bị cụ thể qua VPN bằng WireGuard là một tác vụ đơn giản nhưng cực kỳ hiệu quả, giúp nâng cao đáng kể quyền riêng tư và bảo mật trực tuyến.
Bài viết này từ camnangcongnghe.net sẽ hướng dẫn bạn từng bước cách triển khai giải pháp này. Để bắt đầu, bạn cần một nhà cung cấp VPN hỗ trợ WireGuard và các thông tin cấu hình cần thiết để kết nối qua một máy khách WireGuard thông thường. Với sự kết hợp mạnh mẽ giữa OPNsense và giao thức WireGuard, bạn sẽ có thể quản lý lưu lượng internet một cách linh hoạt, đảm bảo rằng các thiết bị mong muốn của bạn luôn được bảo vệ dưới lớp vỏ VPN mà không ảnh hưởng đến các thiết bị khác trong mạng. Chúng tôi sử dụng Windscribe làm ví dụ, nhưng hầu hết các nhà cung cấp VPN khác đều hoạt động tương tự. Riêng NordVPN có thể yêu cầu thêm một vài bước để trích xuất khóa kết nối do sử dụng NordLynx. Sau khi 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!
Thiết lập kết nối VPN trong OPNsense
Bước đầu tiên trong hành trình bảo vệ lưu lượng truy cập của bạn là cấu hình OPNsense để kết nối với nhà cung cấp VPN. Điều này bao gồm việc tạo một “peer” (điểm cuối) và sau đó thiết lập một giao diện (interface) để WireGuard hoạt động.
Tạo peer và mở kết nối WireGuard
Trước tiên, bạn sẽ cấu hình nhà cung cấp dịch vụ VPN của mình như một “peer” trong WireGuard đang chạy trên OPNsense. Về cơ bản, điều này tạo ra một máy khách kết nối với nhà cung cấp, mặc dù chưa có lưu lượng truy cập nào được định tuyến qua đó. Trong giao diện OPNsense, điều hướng đến VPN, chọn WireGuard, và sau đó chọn Peers. Nhập các thông tin sau:
- Name (Tên): Một tên dễ nhận biết tùy ý của bạn (ví dụ: Windscribe_VPN).
- Public key (Khóa công khai): Tìm trong phần
[Peer]
của file cấu hình WireGuard từ nhà cung cấp. - Pre-shared key (Khóa chia sẻ trước): Tìm trong phần
[Peer]
của file cấu hình WireGuard từ nhà cung cấp. - Allowed IPs (IP được phép): Đặt là
0.0.0.0/0
(và::/0
nếu sử dụng IPv6). Điều này cho phép WireGuard xử lý mọi địa chỉ IP. - Endpoint address (Địa chỉ điểm cuối): Tìm trong phần
[Peer]
của file cấu hình WireGuard từ nhà cung cấp (thường là địa chỉ máy chủ VPN). - 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): Đặt là
25
.
Giao diện cấu hình Peer WireGuard trên OPNsense với nhà cung cấp Windscribe
Tiếp theo, chúng ta sẽ tạo một giao diện WireGuard. Trong OPNsense, một giao diện đóng vai trò là cửa ngõ cho luồng lưu lượng truy cập, và chúng ta sẽ sử dụng WireGuard làm một giao diện cho các thiết bị được chỉ định. Thiết lập các chi tiết sau:
- Name (Tên): Một tên dễ nhận biết cho giao diện (ví dụ: WG_Interface).
- 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ự động tạo cả hai khóa.
- Tunnel address (Địa chỉ tunnel): Tìm trong phần
[Interface]
của file cấu hình WireGuard từ nhà cung cấp. Đây là địa chỉ IP mà máy khách WireGuard (OPNsense) sẽ sử dụng trong tunnel VPN. - Peers (Các peer): Đặt thành peer bạn vừa tạo trước đó.
- Disable routes (Tắt định tuyến): Đảm bảo rằng tùy chọn này được chọn. Đây là cài đặt cực kỳ quan trọng; nếu không chọn, 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ỉ định các thiết bị cụ thể sử dụng nó.
Hãy đảm bảo nhấp vào nút “Apply” và xác nhận rằng WireGuard đã được kích hoạ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 đã giúp OPNsense kết nối với nhà cung cấp VPN và nhận một địa chỉ IP thành công.
Trạng thái kết nối WireGuard đang hoạt động trên giao diện OPNsense
Một khi bạn đã hoàn thành các bước này, bạn đã sẵn sàng để tạo một giao diện thông qua đó lưu lượng truy cập có thể được định tuyến. Nhắc lại, hãy đảm bảo rằng tùy chọn Disable routes đã được đánh dấu. Nếu không, tất cả lưu lượng của bạn sẽ bị đị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 chuyên dụng
Với WireGuard đã được cấu hình và kết nối, bước tiếp theo là tạo một giao diện mạng riêng trong OPNsense và một gateway tương ứng để chỉ định lưu lượng truy cập nào sẽ đi qua VPN.
Định tuyến traffic qua VPN thông qua interface mới
Điều hướng đến Interfaces và nhấp vào Assignments. Tại đây, chúng ta sẽ gán WireGuard một giao diện riêng, có thể là “opt2” hoặc một tên tương tự trong trường hợp của bạn. Sau khi được gán, nhấp vào tên của giao diện mới ở phía trên để vào cài đặt của nó. Bạn không cần phải làm quá nhiều ở đây, ngoài việc đảm bảo rằng giao diện được kích hoạt bằng cách đánh dấu vào ô kiểm ở phía trên.
Cài đặt cấu hình 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ù trong ảnh chụp màn hình, tùy chọn Dynamic gateway policy được tắt, nhưng đôi khi người dùng có thể gặp phải sự cố khi máy khách không thể hoàn tất quá trình bắt tay với nhà cung cấp. Khi bật cài đặt này, vấn đề có thể được giải quyết. Như đã đề cập, cài đặt của bạn sẽ thay đổi 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.
Tiếp theo, chúng ta sẽ tạo gateway của mình. Điều hướng đến System, Gateways, và Configuration. Một gateway thường sẽ được tạo tự động khi bạn tắt tùy chọn “Disable routes” cho WireGuard (ví dụ: “WIREGUARD_ONLY_GW”). Giả sử nó tồn tại, bạn có thể chuyển sang bước tiếp theo. 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.
Tạo Alias và Quy tắc Tường lửa
Đây là bước cuối cùng và quan trọng nhất để điều khiển lưu lượng truy cập. Chúng ta sẽ tạo các bí danh (aliases) để nhóm các thiết bị và dải IP, sau đó thiết lập các quy tắc tường lửa và NAT để định tuyến lưu lượng của các thiết bị đã chọn qua VPN.
Các bước cuối cùng để hoàn tất định tuyến VPN
Đi đến Firewall, Aliases, và tạo một alias mới với loại Host. Alias này 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. Để đảm bảo tính nhất quán, tôi 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 dạng trong OPNsense, hoặc có thể sử dụng các “khối” địa chỉ IP cho các loại thiết bị cụ thể (ví dụ: một dải IP dành riêng cho các thiết bị IoT). Điều này sẽ phụ thuộc vào nhu cầu và mục đích sử dụng VPN của bạn, 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ộ cố định.
Tiếp theo, hãy tạo một alias 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 tạo kết nối cục bộ như bình thường. Nếu không có alias này, lưu lượng truy cập đến các địa chỉ IP cục bộ từ các thiết bị đó cũng sẽ bị định tuyến qua giao diện WireGuard VPN. 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 dải địa chỉ được phân bổ cho các mạng riêng (private networks). Giờ đây, chúng ta đã sẵn sàng thực hiện các bước cuối cùng để định tuyến toàn bộ lưu lượng qua WireGuard.
Trong các quy tắc LAN của tường lửa (Firewall -> Rules -> LAN
), hãy tạo một quy tắc mới với các thiết lập sau:
- Action (Hành động): “Pass” (Cho phép).
- Source (Nguồn): Alias đại diện cho các thiết bị mà chúng ta muốn định tuyến qua VPN.
- Destination (Đích): Alias RFC1918 (với tùy chọn invert checked – đảo ngược). Điều này có nghĩa là quy tắc sẽ áp dụng cho tất cả lưu lượng không hướng đến các địa chỉ IP cục bộ.
- Gateway (Cổng): Đặt là gateway WireGuard của bạn (ví dụ: WIREGUARD_ONLY_GW).
Lưu quy tắc này và đặt nó 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. Cuối cùng, điều hướng đến 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 của bạn, trong đó Source (Nguồn) là alias đại diện cho các thiết bị mà chúng ta muốn định tuyến qua VPN, và Translation (Dịch) được đặt thành “Interface address.” Nhấp vào “Apply”.
Bây giờ, bạn đã hoàn thành! Các thiết bị được chỉ định của bạn sẽ chỉ giao tiếp qua VPN WireGuard. 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 truy cập 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 alias mà 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 truy cập của các thiết bị cụ thể qua VPN bằng WireGuard là một giải pháp mạnh mẽ và linh hoạt. Đối với những ai có các thiết bị cần được bảo vệ liên tục thông qua VPN, OPNsense cung cấp một cách tối ưu để đạt được điều đó mà không cần cài đặt máy khách VPN trên từng thiết bị. Điều này đặc biệt hữu ích với các nhà cung cấp VPN giới hạn số lượng thiết bị có thể đăng nhập cùng lúc, vì OPNsense giúp bạn gom nhiều thiết bị thành một kết nối duy nhất từ góc độ của nhà cung cấp.
Thông qua các bước chi tiết về việc tạo peer, thiết lập giao diện WireGuard, cấu hình gateway chuyên dụng và triển khai các quy tắc tường lửa cùng NAT, bạn đã thành công trong việc tạo một mạng lưới an toàn và riêng tư hơn cho các thiết bị mong muốn. Hãy thử nghiệm các cài đặt và khám phá thêm các tính năng bảo mật của OPNsense để tối ưu hóa trải nghiệm mạng của bạn. Đừng ngần ngại để lại bình luận nếu bạn có bất kỳ câu hỏi hoặc chia sẻ kinh nghiệm của mình!