WireGuard có phải là VPN tuyệt vời của tương lai không?

WireGuard có phải là VPN tuyệt vời của tương lai không?

Đã đến lúc VPN không còn là một công cụ xa lạ của các quản trị viên hệ thống có râu nữa. Người dùng có những nhiệm vụ khác nhau, nhưng thực tế là mọi người đều cần có VPN.

Vấn đề với các giải pháp VPN hiện tại là chúng khó cấu hình chính xác, tốn kém để bảo trì và chứa đầy các mã cũ có chất lượng đáng nghi ngờ.

Vài năm trước, chuyên gia bảo mật thông tin người Canada Jason A. Donenfeld quyết định rằng ông đã chịu đựng đủ và bắt đầu nghiên cứu. Dây bảo vệ. WireGuard hiện đang được chuẩn bị để đưa vào nhân Linux và thậm chí còn nhận được lời khen ngợi từ Linus TorvaldsThượng viện Hoa Kỳ.

Các ưu điểm được khẳng định của WireGuard so với các giải pháp VPN khác:

  • Dễ sử dụng.
  • Sử dụng mật mã hiện đại: Khung giao thức tiếng ồn, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, v.v.
  • Mã nhỏ gọn, dễ đọc, dễ dàng điều tra các lỗ hổng hơn.
  • Hiệu suất cao.
  • Rõ ràng và chi tiết sự chỉ rõ.

Viên đạn bạc đã được tìm thấy chưa? Đã đến lúc chôn vùi OpenVPN và IPSec? Tôi quyết định giải quyết vấn đề này, đồng thời tôi đã làm tập lệnh để tự động cài đặt máy chủ VPN cá nhân.

Nguyên tắc làm việc

Nguyên tắc hoạt động có thể được mô tả như thế này:

  • Giao diện WireGuard được tạo và khóa riêng cũng như địa chỉ IP được gán cho nó. Cài đặt của các đồng nghiệp khác được tải: khóa chung, địa chỉ IP, v.v.
  • Tất cả các gói IP đến giao diện WireGuard đều được đóng gói trong UDP và giao hàng an toàn đồng nghiệp khác.
  • Khách hàng chỉ định địa chỉ IP công cộng của máy chủ trong cài đặt. Máy chủ tự động nhận dạng địa chỉ bên ngoài của máy khách khi nhận được dữ liệu được xác thực chính xác từ chúng.
  • Máy chủ có thể thay đổi địa chỉ IP công cộng mà không làm gián đoạn công việc của nó. Đồng thời, nó sẽ gửi cảnh báo đến các máy khách được kết nối và họ sẽ cập nhật cấu hình của mình một cách nhanh chóng.
  • Khái niệm định tuyến được sử dụng Định tuyến khóa mật mã. WireGuard chấp nhận và gửi các gói dựa trên khóa chung của thiết bị ngang hàng. Khi máy chủ giải mã một gói được xác thực chính xác, trường src của nó sẽ được chọn. Nếu nó phù hợp với cấu hình allowed-ips ngang hàng được xác thực, gói được nhận bởi giao diện WireGuard. Khi gửi một gói đi, quy trình tương ứng sẽ xảy ra: trường dst của gói được lấy và dựa vào đó, thiết bị ngang hàng tương ứng được chọn, gói được ký bằng khóa của nó, được mã hóa bằng khóa của thiết bị ngang hàng và gửi đến điểm cuối từ xa .

Tất cả logic cốt lõi của WireGuard chiếm ít hơn 4 nghìn dòng mã, trong khi OpenVPN và IPSec có hàng trăm nghìn dòng. Để hỗ trợ các thuật toán mã hóa hiện đại, người ta đề xuất đưa API mật mã mới vào nhân Linux Zinc . Hiện tại đang có một cuộc thảo luận về việc liệu đây có phải là một ý tưởng hay hay không.

Năng suất

Lợi thế về hiệu suất tối đa (so với OpenVPN và IPSec) sẽ thấy rõ trên các hệ thống Linux, vì WireGuard được triển khai như một mô-đun hạt nhân ở đó. Ngoài ra, macOS, Android, iOS, FreeBSD và OpenBSD đều được hỗ trợ, nhưng trong đó WireGuard chạy trong không gian người dùng với tất cả các hậu quả về hiệu suất sau đó. Hỗ trợ Windows dự kiến ​​sẽ được bổ sung trong thời gian tới.

Kết quả điểm chuẩn với trang web chính thức:

WireGuard có phải là VPN tuyệt vời của tương lai không?

Trải nghiệm sử dụng của tôi

Tôi không phải là chuyên gia VPN. Tôi đã từng thiết lập OpenVPN theo cách thủ công và việc đó rất tẻ nhạt và tôi thậm chí còn chưa thử IPSec. Có quá nhiều quyết định phải đưa ra, rất dễ tự bắn vào chân mình. Vì vậy, tôi luôn sử dụng các tập lệnh có sẵn để cấu hình máy chủ.

Vì vậy, WireGuard, theo quan điểm của tôi, nhìn chung là lý tưởng cho người dùng. Tất cả các quyết định cấp thấp đều được đưa ra trong thông số kỹ thuật, do đó quá trình chuẩn bị cơ sở hạ tầng VPN thông thường chỉ mất vài phút. Gần như không thể gian lận trong cấu hình.

Quá trình cài đặt được mô tả chi tiết trên trang web chính thức, tôi muốn lưu ý riêng về sự xuất sắc Hỗ trợ OpenWRT.

Khóa mã hóa được tạo bởi tiện ích wg:

SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )

Tiếp theo, bạn cần tạo cấu hình máy chủ /etc/wireguard/wg0.conf với nội dung như sau:

[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32

và nâng cao đường hầm bằng một tập lệnh wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

Trên các hệ thống có systemd, bạn có thể sử dụng cái này thay thế sudo systemctl start [email protected].

Trên máy khách, tạo cấu hình /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # Внешний IP сервера
PersistentKeepalive = 25 

Và nâng đường hầm theo cách tương tự:

sudo wg-quick up /etc/wireguard/wg0.conf

Tất cả những gì còn lại là cấu hình NAT trên máy chủ để máy khách có thể truy cập Internet, thế là xong!

Tính dễ sử dụng và tính gọn nhẹ của cơ sở mã này đạt được bằng cách loại bỏ chức năng phân phối khóa. Không có hệ thống chứng chỉ phức tạp và tất cả những điều kinh dị của công ty này; các khóa mã hóa ngắn được phân phối giống như các khóa SSH. Nhưng điều này đặt ra một vấn đề: WireGuard sẽ không dễ triển khai trên một số mạng hiện có.

Trong số những nhược điểm, cần lưu ý rằng WireGuard sẽ không hoạt động thông qua proxy HTTP, vì chỉ có giao thức UDP khả dụng dưới dạng phương tiện truyền tải. Câu hỏi đặt ra: liệu có thể làm xáo trộn giao thức không? Tất nhiên, đây không phải là nhiệm vụ trực tiếp của VPN, nhưng đối với OpenVPN chẳng hạn, có nhiều cách để ngụy trang thành HTTPS, giúp cư dân của các quốc gia toàn trị có thể sử dụng Internet đầy đủ.

Những phát hiện

Tóm lại, đây là một dự án rất thú vị và đầy hứa hẹn, bạn đã có thể sử dụng nó trên các máy chủ cá nhân. Lợi nhuận là bao nhiêu? Hiệu suất cao trên hệ thống Linux, dễ cài đặt và hỗ trợ, cơ sở mã nhỏ gọn và dễ đọc. Tuy nhiên, còn quá sớm để vội vàng chuyển một cơ sở hạ tầng phức tạp sang WireGuard, đáng để chờ đợi việc đưa nó vào nhân Linux.

Để tiết kiệm thời gian của tôi (và của bạn), tôi đã phát triển Trình cài đặt tự động của WireGuard. Với sự trợ giúp của nó, bạn có thể thiết lập VPN cá nhân cho bản thân và bạn bè mà không cần hiểu gì về nó.

Nguồn: www.habr.com

Thêm một lời nhận xét