Cách thiết lập Máy chủ và Máy khách WireGuard VPN trên Ubuntu 20.04

Thiết lập VPN tự lưu trữ bằng Wireguard

MỘT VPN (Mạng riêng ảo) cho phép người dùng kết nối từ xa với mạng riêng như thể máy tính của người dùng được kết nối trực tiếp với mạng riêng. Ban đầu, công nghệ này được phát triển để cho phép truy cập từ xa vào mạng riêng nội bộ của công ty, đối với những nhân viên không thực sự có mặt tại vị trí của mạng nội bộ.

Máy chủ VPN được triển khai tại vị trí của mạng nội bộ. Máy chủ này nằm trên mạng công cộng và nhân viên có thể truy cập bằng máy khách VPN. Xác thực là cần thiết để kết nối với Máy chủ VPN. Giao tiếp giữa Máy chủ VPN và Máy khách VPN được bảo mật bằng giao thức đường hầm. Lưu ý rằng giao tiếp này có thể được mã hóa hoặc không, nhưng thông thường trong hầu hết các giao thức VPN, nó được mã hóa.

Một cách sử dụng khác của VPN là ẩn danh khi truy cập Internet hoặc để vượt qua các hạn chế địa lý được áp đặt khi truy cập một số trang web. Trong những trường hợp như vậy, mạng mà người dùng muốn kết nối không phải là mạng riêng, mà thay vào đó, nó là Internet.

Nhiều giao thức VPN đã được phát triển trong nhiều năm. Các giao thức này sử dụng các giao thức đường hầm khác nhau và các thuật toán mã hóa để giao tiếp giữa máy chủ và máy khách.

Một trong những giao thức như vậy, đang được sử dụng rộng rãi gần đây, là Bảo vệ dây. Wireguard nhẹ hơn, đơn giản hơn và hiệu suất hơn các giao thức VPN truyền thống được sử dụng phổ biến như OpenVPN, IPSec. Nó đã được triển khai cho Windows, Mac OS và một số lượng lớn các bản phân phối Linux. Trong Linux, nó được thực hiện như một mô-đun hạt nhân. Nó có sẵn trong kho lưu trữ chính thức của Ubuntu 20.04.

Trong bài viết này, chúng ta sẽ xem cách thiết lập Máy chủ và Máy khách Wireguard VPN trong Ubuntu 20.04.

Cài đặt

Đối với bài viết này, tôi đang thiết lập Máy chủ Wireguard trên Ubuntu 20.04 Linode và Máy khách Wireguard trên máy cục bộ của tôi với Ubuntu 20.04.

Gói người bảo vệ cài đặt cả Máy chủ và Máy khách Wireguard. Chạy lệnh sau trên cả máy chủ và máy khách.

sudo apt cài đặt wireguard

Cấu hình máy chủ

Khóa bảo mật

Chúng ta cần tạo một tập hợp các cặp khóa công khai / riêng tư để xác thực và bảo mật kết nối Wireguard. Điều này có thể được thực hiện bằng cách sử dụng các lệnh sau:

sudo su cd / etc / wireguard umask 077 wg genkey | tee private_key | wg pubkey> public_key

Lưu ý rằng chúng tôi đang thực hiện tất cả các tác vụ cấu hình với tư cách là một siêu người dùng. Lý do là quyền truy cập vào thư mục / etc / wireguard bị ngăn đối với người dùng bình thường và không thể đạt được quyền truy cập thư mục chỉ với các đặc quyền sudo dành cho người dùng bình thường.

Tiếp theo, chúng tôi đặt mặt nạ tạo tệp thành 077. Điều này có nghĩa là bất cứ khi nào một tệp mới được tạo trong thư mục này bằng bất kỳ quá trình nào, quyền của nó sẽ tự động được che bằng 077. Ví dụ: nếu tệp được tạo trong thư mục này với quyền 777, tệp đó sẽ tự động bị che và quyền có hiệu lực trở thành 700. Điều này được thực hiện để chỉ chủ sở hữu tệp mới có tất cả quyền đối với tệp và những người khác không có quyền.

Trên dòng tiếp theo, chúng tôi tạo cặp khóa công khai / riêng tư cho máy chủ. Chúng được lưu trong các tệp private_keykhóa công khai. Để xem các phím, hãy chạy:

cat private_key cat public_key

Sao chép khóa cá nhân, chúng ta cần nó trong bước tiếp theo.

Ghi chú: Không bao giờ chia sẻ khóa riêng tư của bạn một cách công khai!

Tập tin cấu hình

Hãy tạo tệp cấu hình cho Máy chủ Wireguard. Bạn có thể chọn bất kỳ tên nào cho tệp. Chúng tôi sẽ tạo một tệp wg0.conf trong ví dụ này.

vim wg0.conf

Thêm phần sau vào tệp.

[Giao diện] Address = 10.20.43.1/24 SaveConfig = true ListenPort = 51190 PrivateKey = PostUp = iptables -A FORWARD -i wg0 -j CHẤP NHẬN; iptables -t nat -A POSTROUTING -o -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j CHẤP NHẬN; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j CHẤP NHẬN; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j CHẤP NHẬN; ip6tables -t nat -D POSTROUTING -o -j MASQUERADE 

Dán Khóa cá nhân mà chúng tôi đã sao chép trước đó vào dòng 5 trong đoạn mã trên.

Chúng tôi phải định cấu hình Wireguard trên một mạng con (ảo) khác hơn Địa chỉ IP của máy chủ. Ở đây, tôi đã sử dụng 10.20.43.1 cho máy chủ và sẽ sử dụng 10.20.43.2 cho máy khách. Bất kỳ mạng con nào cũng có thể được sử dụng tại đây. Để lấy Địa chỉ IP của máy chủ và giao diện, hãy chạy:

ifconfig

Lưu ý Địa chỉ IP của máy chủ. Điều này là bắt buộc trong quá trình cấu hình máy khách.

Giao diện được sử dụng bởi máy chủ, như trong hình trên, là eth0. Tên giao diện có thể khác nhau tùy theo mạng của người dùng, nó có thể wlan0 hoặc là wlp2s0 trong trường hợp người dùng được kết nối với mạng WiFi bằng thẻ không dây.

Thay thế cái trong Gửi lênPostDown với giao diện của bạn; trong ví dụ này, nó là eth0.Gửi lênPostDown các chỉ thị được sử dụng để chỉ định các lệnh nào sẽ được chạy khi máy chủ khởi động và dừng tương ứng. Trong ví dụ của chúng tôi, chúng tôi sử dụng iptables lệnh để đặt các quy tắc IP sao cho Địa chỉ IP của máy chủ được chia sẻ bởi các máy khách. Các quy tắc sẽ giảm xuống khi máy chủ dừng.

Lưu và thoát khỏi tệp. Khi sử dụng vim, nhấn Thoát ra, sau đó gõ : wq và hãy nhấn đi vào để lưu và thoát.

Nếu bạn đang sử dụng ufw tường lửa trên máy chủ, chúng tôi cần cho phép kết nối UDP đến cổng cho máy chủ VPN, 51190.

ufw cho phép 51190 / udp

Bắt đầu dịch vụ

Bây giờ khi cấu hình xong, chúng ta có thể bắt đầu dịch vụ Wireguard VPN.

Để kích hoạt dịch vụ bắt đầu lúc khởi động, chạy:

systemctl cho phép wg-quick @ wg0

Lưu ý rằng ở đây wg0 là tên của tệp cấu hình.

Để bắt đầu dịch vụ, chạy:

bắt đầu dịch vụ wg-quick @ wg0

Kiểm chứng rằng dịch vụ đã bắt đầu thành công:

trạng thái dịch vụ wg-quick @ wg0

Xác minh rằng giao diện chúng tôi đã tạo trong tệp cấu hình đã bắt đầu, bằng cách sử dụng lệnh IP.

ip a show wg0

Máy chủ Wireguard VPN hiện đã được thiết lập và đang chạy. Hãy định cấu hình ứng dụng khách ngay bây giờ.

Cấu hình máy khách

Cấu hình máy khách cho Wireguard ít nhiều giống với cấu hình máy chủ. Chúng tôi tạo các khóa cho máy khách, sau đó tạo tệp cấu hình.

Khóa bảo mật

Để tạo khóa công khai / riêng tư ghép nối cho khách hàng, chạy:

sudo su cd / etc / wireguard umask 077 wg genkey | tee client_private_key | wg pubkey> client_public_key

Khóa công khai và khóa riêng tư cho máy khách hiện được tạo tương ứng trong các tệp client_private_keyclient_public_key.

Kiểm tra xem chúng đã được tạo bằng cách sử dụng con mèo yêu cầu.

cat client_private_key cat client_public_key

Sao chép khóa cá nhân được hiển thị khi chúng tôi cần thêm nó vào tệp cấu hình cho ứng dụng khách.

Tập tin cấu hình

Tạo tệp cấu hình với bất kỳ tên nào bạn muốn. Chúng tôi sẽ tạo nó với tên wg0-client cho ví dụ này.

vim wg0-client.conf

Thêm cấu hình sau.

[Giao diện] # Địa chỉ IP và Khóa riêng của Địa chỉ Máy khách = 10.20.43.2/24 PrivateKey = [Ngang hàng] # Khóa công khai, Địa chỉ IP và Cổng của Máy chủ PublicKey = Điểm cuối =: 51190 AllowedIPs = 0.0.0.0/0,: : / 0

Nhập địa chỉ mạng con cho máy khách. Như đã mô tả trước đây, chúng tôi sử dụng 10.20.43.2 cho khách hàng trong ví dụ này.

Thêm khóa cá nhân của khách hàng được tạo ở bước trước vào dòng 4 trong mã cấu hình ở trên.

Trong phần "Peer", chúng tôi thêm thông tin về máy chủ Wireguard VPN chúng tôi muốn kết nối với.

Nhập khóa công khai của máy chủ. Nhập Địa chỉ IP của máy chủ, mà chúng tôi đã lưu ý trước đây và chuyển theo định dạng đã cho Điểm cuối. Đây là cổng mà chúng tôi đã chỉ định trong tệp cấu hình máy chủ và trên đó dịch vụ VPN trên máy chủ đã bắt đầu.

Các IP được phép phải được nhập như đã cho (0.0.0.0/0) để mọi yêu cầu về IP công cộng động được ứng dụng khách sử dụng sẽ luôn chuyển tiếp đến máy chủ VPN.

Lưu và thoát khỏi tệp. Khi sử dụng vim, nhấn Thoát ra, sau đó gõ : wq và hãy nhấn đi vào để lưu và thoát.

Bật dịch vụ khách hàng để chạy với mọi lần khởi động và khởi động nó.

systemctl kích hoạt wg-quick @ wg-client service wg-quick @ wg-client start

Kiểm chứng nếu dịch vụ đã bắt đầu.

tình trạng dịch vụ wg-quick @ wg-client

Thêm ngang hàng vào máy chủ

Bây giờ chúng ta có máy chủ và máy khách VPN đang hoạt động. Tuy nhiên, một đường hầm an toàn giữa cả hai sẽ không được thiết lập trừ khi chúng tôi thiết lập một kết nối ngang hàng giữa máy chủ và máy khách.

Quay lại đến máy chủ. Ngày thứ nhất, dừng dịch vụ VPN.

dịch vụ wg-quick @ wg0 stop

Tiếp theo, mở tệp cấu hình để thêm cấu hình cho ngang hàng (khách hàng).

vim /etc/wireguard/wg0.conf

Nối các dòng sau vào tệp.

[Peer] PublicKey = AllowedIPs = 10.20.43.2/32

Bây giờ, khởi động lại dịch vụ VPN.

bắt đầu dịch vụ wg-quick @ wg0

Đó là nó! Đây là tất cả cấu hình cần thiết để thiết lập máy khách và máy chủ Wireguard VPN. Bây giờ hãy thử nghiệm VPN của chúng tôi.

Kiểm tra VPN

Trước tiên, hãy thực hiện một ping đơn giản từ máy khách đến máy chủ để đảm bảo giao tiếp đường hầm VPN hoạt động. Chạy phần sau trên máy khách:

ping 10.20.43.1

Kế tiếp, mở trình duyệt web và mở bất kỳ trang web nào để kiểm tra xem bạn có thể kết nối Internet từ máy khách hay không. Bạn cũng có thể kiểm tra kết nối internet của mình từ dòng lệnh bằng cách sử dụng wget.

wget 

Bây giờ, chúng tôi đã kiểm tra kết nối đường hầm và kết nối Internet. Nếu cả hai đều hoạt động, bây giờ chúng ta cần đảm bảo rằng tất cả lưu lượng truy cập internet đến máy khách đều đi qua máy chủ.

Đối với điều này, chúng tôi chỉ cần kiểm tra Địa chỉ IP của máy khách như đã thấy trên Internet. Một cách để làm điều đó là truy cập whatsmyip.org. Hoặc từ dòng lệnh khác, chúng ta có thể truy vấn một dịch vụ tương tự khác được gọi là thông tin IP, sử dụng Curl.

Chạy phần sau trên máy khách

curl //ipinfo.io/ip

Đúng. Đây là Địa chỉ IP công khai của Linode nơi máy chủ VPN được lưu trữ. Đây là cách đạt được tính ẩn danh khi sử dụng VPN, vì trên Internet giờ đây IP của máy chủ VPN được nhìn thấy chứ không phải của máy tính của bạn.

Sự kết luận

Dễ dàng thiết lập là một trong những lợi thế quan trọng nhất của Wireguard so với phần mềm VPN truyền thống như OpenVPN, phần mềm này cần kiến ​​thức mạng và định tuyến cao hơn để thiết lập. Tuy nhiên, thiếu tài liệu chính thức chi tiết về Wireguard, điều này có thể gây ra sự cố nếu thiết lập Wireguard của bạn gặp lỗi hoặc không hoạt động như mong đợi.

Tuy nhiên, Wireguard là một lựa chọn tuyệt vời nếu bạn muốn có một VPN tự lưu trữ để liên lạc an toàn qua Internet. Để tìm hiểu thêm về Wireguard cũng như các giao thức và công nghệ mà nó sử dụng, bạn có thể xem trang web chính thức.