Saturday, June 29, 2024

WireGuard VPN – Site to Site trên hệ điều hành Ubuntu

-

1. Tổng quan.

VPN Site-to-Site là một kiểu kết nối mạng ảo giữa hai địa điểm vật lý (site) khác nhau thông qua internet. Mục tiêu của VPN Site-to-Site là kết nối hai mạng LAN khác nhau một cách an toàn và riêng tư, cho phép các thiết bị và nguồn tài nguyên trên mỗi mạng có thể tương tác như nếu chúng ở trong cùng một mạng nội bộ.

WireGuard là một công nghệ VPN hiện đại và nhẹ được thiết kế để cung cấp kết nối mạng an toàn và hiệu suất cao. Dưới đây là một số lý do tại sao WireGuard thường được lựa chọn cho triển khai VPN Site-to-Site:

  • Hiệu Suất Cao:
    • WireGuard được thiết kế để có hiệu suất cao, giảm độ trễ và tối ưu hóa tốc độ truyền dữ liệu. Điều này làm cho nó trở thành lựa chọn phù hợp cho các kịch bản yêu cầu băng thông lớn.
  • Dễ Cấu Hình và Quản Lý:
    • WireGuard có cú pháp cấu hình đơn giản hóa so với nhiều giải pháp VPN truyền thống, điều này làm cho quá trình triển khai và quản lý dễ dàng hơn.
  • Tiết Kiệm Tài Nguyên:
    • WireGuard yêu cầu ít tài nguyên hệ thống so với nhiều giải pháp VPN khác. Điều này làm cho nó phù hợp với các thiết bị có tài nguyên hạn chế.
  • Cấu Hình Linh Hoạt:
    • WireGuard hỗ trợ nhiều nền tảng và có khả năng tích hợp với nhiều hệ điều hành khác nhau, từ Linux đến Windows và các thiết bị nhúng.
  • Bảo Mật Cao:
    • WireGuard được thiết kế với một số tính năng bảo mật cao, bao gồm cả việc sử dụng mã hóa mạnh mẽ để bảo vệ dữ liệu khi đi qua mạng công cộng.
  • Hỗ Trợ Cộng Đồng Tốt:
    • Cộng đồng WireGuard đang ngày càng lớn mạnh, có nghĩa là có nhiều tài nguyên, tư vấn và cập nhật từ cộng đồng người dùng.

Những ưu điểm trên làm cho WireGuard trở thành lựa chọn hấp dẫn cho triển khai VPN Site-to-Site, đặc biệt là trong các môi trường yêu cầu hiệu suất, đơn giản hóa cấu hình và quản lý, và độ bảo mật cao. Tuy nhiên bên cạnh đó nó cũng có một số nhược điểm như sau:

  • Thiếu Một Số Tính Năng:
    • Nhược điểm: WireGuard có thể thiếu một số tính năng mở rộng có sẵn trong các giải pháp VPN truyền thống như OpenVPN.
  • Chưa Được Đưa vào Sử Dụng Rộng Rãi: Mặc dù đã được nhiều người chấp nhận, nhưng WireGuard vẫn đang trong quá trình phát triển và chưa được triển khai rộng rãi trong môi trường doanh nghiệp so với một số giải pháp cũ hơn.
  • Khả Năng Mở Rộng Chưa Rõ Ràng: Trong môi trường đòi hỏi khả năng mở rộng lớn, có thể có một số thách thức, vì WireGuard là một giải pháp tương đối mới.
  • Quản Lý Người Dùng: Cho đến nay, WireGuard không có mô hình quản lý người dùng và quản lý chính sách mạng (network policy) tích hợp mạnh mẽ như một số giải pháp VPN doanh nghiệp.
  • Khả Năng Tương Thích Ngược: Mặc dù có sự hỗ trợ rộng rãi, nhưng vẫn có một số hệ điều hành và thiết bị mà WireGuard có thể không tương thích ngược tốt.

2. Triển khai VPN Site To Site trên hệ điều hành Ubuntu.

Một cấu hình VPN thông thường khác mà người ta có thể triển khai WireGuard là kết nối hai mạng riêng biệt của 2 Site qua internet.

2.1. Sơ đồ.

Tham khảo sơ đồ dưới đây.

                  ┌─────── WireGuard tunnel ──────┐
                  │         10.10.9.0/31          │
                  │                               │
     10.10.9.0 wgA│               xx              │wgB 10.10.9.1
                ┌─┴─┐          xxx  xxxx        ┌─┴─┐
alpha site      │   │ext     xx        xx    ext│   │  beta site
                │   ├───    x           x    ───┤   │
10.10.10.0/24   │   │      xx           xx      │   │  10.10.11.0/24
                │   │      x             x      │   │
                └─┬─┘      x              x     └─┬─┘
        10.10.10.1│        xx             x       │10.10.11.1
...┌─────────┬────┘          xx   xxx    xx       └───┬─────────┐...
   │         │                  xx   xxxxx            │         │
   │         │                                        │         │
 ┌─┴─┐     ┌─┴─┐           public internet          ┌─┴─┐     ┌─┴─┐
 │   │     │   │                                    │   │     │   │
 └───┘     └───┘                                    └───┘     └───┘

2.2. Mục tiêu và yêu cầu.

Mục tiêu ở đây là tích hợp mạng alpha với mạng beta nối thông mạng với nhau để các hệ thống trên site alpha có thể truy cập một cách trong suốt đến các hệ thống trên site beta và ngược lại.

Dưới đây là yêu cầu về cài đặt:

  • Cả hai đầu kết nối (peers) luôn ở trạng thái hoạt động.
  • Cả 2 site sẽ yêu cầu khởi tạo kết nối, không giống như VPN Client To Site ví dụ như trường hợp một laptop ở quán cà phê, thì chỉ Laptop mới yêu cầu khởi tạo kết nối.
  • Cả hai đầu kết nối đều nên có địa chỉ IP Public tĩnh hoặc tên miền hợp lệ.
  • Do không gán địa chỉ IP VPN cho tất cả các hệ thống ở mỗi bên, mạng VPN ở đây sẽ rất nhỏ (một /31, cho phép hai địa chỉ IP) và chỉ được sử dụng cho việc định tuyến. Các hệ thống duy nhất có địa chỉ IP trong mạng VPN là các cổng điều khiển (gateways) chính.
  • Không sử dụng NAT cho dữ liệu đi qua mạng WireGuard. Do đó, các mạng của cả hai site phải khác nhau và không chồng chéo.

Đây là kết quả của mtr từ hệ thống trong mạng beta đến hệ thống alpha:

ubuntu@b1:~$ mtr -n -r 10.10.10.230
Start: 2022-09-02T18:56:51+0000
HOST: b1                Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 10.10.11.1       0.0%    10    0.1   0.1   0.1   0.2   0.0
  2.|-- 10.10.9.0        0.0%    10  299.6 299.3 298.3 300.0   0.6
  3.|-- 10.10.10.230     0.0%    10  299.1 299.1 298.0 300.2   0.6

Lưu ý, việc sử dụng mạng CIDR /31 trong cấu hình WireGuard. Mạng /31 thường không có địa chỉ IP có thể sử dụng, vì địa chỉ đầu tiên là địa chỉ mạng và địa chỉ thứ hai (và cuối cùng) là địa chỉ broadcast. Tuy nhiên, theo RFC 3021, mạng /31 có thể được sử dụng và là hợp lệ. Tuy nhiên nếu bạn gặp vấn đề về định tuyến hoặc các vấn đề mạng khác, thì nên chuyển sang sử dụng mạng CIDR /30 với hai địa chỉ IP hợp lệ cho các host. Điều này đảm bảo có đủ địa chỉ IP cho hai đầu kết nối và giúp giải quyết các vấn đề có thể phát sinh khi sử dụng mạng CIDR /31.

3. Cấu hình.

3.1. Với Site Alpha.

Cài đặt Wireguard.

sudo apt install wireguard -y

Tạo Private Key.

wg genkey | sudo tee /etc/wireguard/wgA.key

Lệnh này tạo một Private Key cho site alpha và lưu vào file /etc/wireguard/wgA.key.

Tạo Public Key.

sudo cat /etc/wireguard/wgA.key | wg pubkey | sudo tee /etc/wireguard/wgA.pub

Lệnh này tạo Public Key tương ứng và lưu vào tệp /etc/wireguard/wgA.pub.

Cấu hình WireGuard cho Site Alpha (/etc/wireguard/wgA.conf).

[Interface]
PostUp = wg set %i private-key /etc/wireguard/wgA.key
Address = 10.10.9.0/31
ListenPort = 51000

[Peer]
# beta site
PublicKey = <nội dung của /etc/wireguard/wgB.pub>
AllowedIPs = 10.10.11.0/24, 10.10.9.0/31
Endpoint = <địa chỉ IP của cổng điều khiển ở site beta>:51000
  • PostUp:
    • Lệnh này được thực thi sau khi interface WireGuard được thiết lập. Nó chỉ định private key cho interface.
  • Address:
    • Gán địa chỉ IP 10.10.9.0/31 cho interface WireGuard. Như đã đề cập trước đó, đây là một dải CIDR rất nhỏ chỉ cho phép hai địa chỉ IP cho 2 thiết bị chạy WireGuard.
  • ListenPort:
    • Xác định cổng mà WireGuard sẽ lắng nghe các kết nối đến. Trong trường hợp này, nó được đặt là 51000.
  • Mục Peer (Đối Tác):
    • Cấu hình kết nối đến site beta.
    • PublicKey:
      • Phải được thay thế bằng khóa public key thực tế của site beta (nằm trong /etc/wireguard/wgB.pub).
    • AllowedIPs:
      • Xác định các địa chỉ IP được phép cho đối tác. Ở đây, nó cho phép truy cập vào 10.10.11.0/24 ở site beta và dải /31 cho định tuyến.
    • Endpoint:
      • Chỉ định endpoint (địa chỉ IP hoặc tên miền) và cổng của port của WireGuard ở site beta.

Cấu hình này thiết lập interface WireGuard cho site alpha, gán một địa chỉ IP và cấu hình kết nối đến site beta. Public key và endpoint của site beta cần được cấu hình trong mục [Peer].

3.1. Với Site Beta.

Cài đặt WireGuard.

sudo apt install wireguard -y

Lệnh này cài đặt gói WireGuard cho hệ thống site beta.

Tạo Private Key.

wg genkey | sudo tee /etc/wireguard/wgB.key

Lệnh này tạo một private key cho site beta và lưu vào file /etc/wireguard/wgB.key.

Tạo Public Key.

sudo cat /etc/wireguard/wgB.key | wg pubkey | sudo tee /etc/wireguard/wgB.pub

Lệnh này tạo khóa private key tương ứng và lưu vào file /etc/wireguard/wgB.pub

Cấu hình WireGuard cho Site Beta (/etc/wireguard/wgB.conf).

[Interface]
Address = 10.10.9.1/31
PostUp = wg set %i private-key /etc/wireguard/%i.key
ListenPort = 51000

[Peer]
# alpha site
PublicKey = <nội dung của /etc/wireguard/wgA.pub>
AllowedIPs = 10.10.10.0/24, 10.10.9.0/31
Endpoint = <địa chỉ IP của cổng điều khiển ở site alpha>:51000
  • Address:
    • Gán địa chỉ IP 10.10.9.1/31 cho interface WireGuard của site beta. Đây là địa chỉ thứ hai trong dải CIDR /31.
  • PostUp:
    • Lệnh này được thực thi sau khi interface WireGuard được thiết lập. Nó chỉ định private key cho interface
  • ListenPort:
    • Xác định cổng mà WireGuard sẽ lắng nghe các kết nối đến. Trong trường hợp này, nó được đặt là 51000.
  • Mục Peer (Đối Tác):
    • Cấu hình kết nối đến site alpha.
    • PublicKey:
      • Phải được thay thế bằng public key thực tế của site alpha (nằm trong /etc/wireguard/wgA.pub).
    • AllowedIPs:
      • Xác định các địa chỉ IP được phép cho đối tác. Ở đây, nó cho phép truy cập vào 10.10.10.0/24 ở site alpha và dải /31 cho định tuyến.

Quan Trọng.

Thiết lập kết nối VPN Site To Site trên WireGuard cũng giống như các loại VPN Site To Site giải pháp khác. Do đó, không cần thay đổi thông tin subnet hay địa chỉ IP trong local của từng Site. Lưu ý rằng các kết nối và mã hóa của WireGuard chỉ xảy ra giữa cổng điều khiển alpha và beta, không xảy ra giữa các máy chủ của mỗi Site.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories