Thứ tư, 06/05/2020 | 00:00 GMT+7

Cách thiết lập và cấu hình server OpenVPN trên Ubuntu 20.04

Mạng riêng ảo (VPN) cho phép bạn truy cập các mạng không tin cậy như thể bạn đang ở trên một mạng riêng. Nó cho phép bạn tự do truy cập Internet một cách an toàn và bảo mật từ điện thoại thông minh hoặc notebook của bạn khi được kết nối với mạng không tin cậy , như WiFi tại khách sạn hoặc quán cà phê.

Khi được kết hợp với kết nối HTTPS , cài đặt này cho phép bạn bảo mật thông tin đăng nhập và giao dịch không dây của bạn . Bạn có thể phá vỡ các giới hạn địa lý và kiểm duyệt, đồng thời che chắn vị trí của bạn và bất kỳ lưu lượng truy cập HTTP không được mã hóa nào khỏi các mạng không tin cậy .

OpenVPN là giải pháp VPN transport layer security (TLS) open-souce đầy đủ tính năng, có thể đáp ứng nhiều loại cấu hình. Trong hướng dẫn này, bạn sẽ cài đặt OpenVPN trên server Ubuntu 20.04, sau đó cấu hình nó để có thể truy cập được từ client .

Lưu ý: Nếu bạn định cài đặt Server OpenVPN trên DigitalOcean Server, hãy lưu ý ta , giống như nhiều nhà cung cấp dịch vụ lưu trữ, tính phí băng thông trung bình. Vì lý do này, hãy lưu ý đến lượng lưu lượng truy cập mà server của bạn đang xử lý.

Xem trang này để biết thêm thông tin.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

Lưu ý: Mặc dù về mặt kỹ thuật, có thể sử dụng Server OpenVPN hoặc máy local làm CA của bạn, nhưng điều này không được khuyến khích vì nó mở VPN của bạn đến một số lỗ hổng bảo mật. Theo tài liệu OpenVPN chính thức , bạn nên đặt CA của bạn trên một máy độc lập chuyên dùng để nhập và ký các certificate request . Vì lý do này, hướng dẫn này giả định CA của bạn nằm trên một server Ubuntu 20.04 riêng biệt cũng có user không phải root có quyền sudo và một firewall cơ bản được bật.

Ngoài ra, bạn cần một client mà bạn sẽ sử dụng để kết nối với Server OpenVPN của bạn . Trong hướng dẫn này, ta sẽ gọi đây là Ứng dụng khách OpenVPN . Vì mục đích của hướng dẫn này, bạn nên sử dụng máy local của bạn làm ứng dụng client OpenVPN.

Với những yêu cầu này, bạn đã sẵn sàng để bắt đầu cài đặt và cấu hình Server OpenVPN trên Ubuntu 20.04.

Lưu ý: Xin lưu ý nếu bạn tắt xác thực password trong khi cấu hình các server này, bạn có thể gặp khó khăn khi chuyển file giữa chúng sau này trong hướng dẫn này. Để giải quyết vấn đề này, bạn có thể bật lại xác thực password trên mỗi server . Ngoài ra, bạn có thể tạo cặp SSH key cho từng server , sau đó thêm SSH key công khai của Server OpenVPN vào file authorized_keys của máy CA và ngược lại.Xem Cách cài đặt SSH key trên Ubuntu 20.04 để biết hướng dẫn về cách thực hiện một trong các giải pháp này.

Bước 1 - Cài đặt OpenVPN và Easy-RSA

Bước đầu tiên trong hướng dẫn này là cài đặt OpenVPN và Easy-RSA. Easy-RSA là công cụ quản lý cơ sở hạ tầng public key (PKI) mà bạn sẽ sử dụng trên Server OpenVPN để tạo certificate request mà sau đó bạn sẽ xác minh và ký trên Server CA.

Để bắt đầu, hãy cập nhật index gói OpenVPN Server và cài đặt OpenVPN và Easy-RSA. Cả hai gói đều có sẵn trong repository lưu trữ mặc định của Ubuntu, vì vậy bạn có thể sử dụng apt để cài đặt:

  • sudo apt update
  • sudo apt install openvpn easy-rsa

Tiếp theo, bạn cần tạo một folder mới trên Server OpenVPN với quyền là user không phải root của bạn được gọi là ~/easy-rsa :

  • mkdir ~/easy-rsa

Đến đây bạn cần tạo một softlink từ tập lệnh easyrsa mà gói đã cài đặt vào folder ~/easy-rsa mà bạn vừa tạo:

  • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Lưu ý: Trong khi các hướng dẫn khác có thể hướng dẫn bạn sao chép các file gói easy-rsa vào folder PKI của bạn, hướng dẫn này sử dụng phương pháp softlink . Do đó, bất kỳ cập nhật nào đối với gói easy-rsa sẽ được tự động phản ánh trong các tập lệnh PKI của bạn.

Cuối cùng, đảm bảo chủ sở hữu folder là user sudo không phải root của bạn và hạn chế quyền truy cập vào user đó bằng chmod :

  • sudo chown sammy ~/easy-rsa
  • chmod 700 ~/easy-rsa

Khi các chương trình này được cài đặt và đã được di chuyển đến đúng vị trí trên hệ thống của bạn, bước tiếp theo là tạo Cơ sở hạ tầng public key (PKI) trên server OpenVPN để bạn có thể yêu cầu và quản lý certificate TLS cho client và các server khác. kết nối với VPN của bạn.

Bước 2 - Tạo PKI cho OpenVPN

Trước khi có thể tạo certificate và private key của server OpenVPN, bạn cần tạo folder Cơ sở hạ tầng public key local trên server OpenVPN của bạn . Bạn sẽ sử dụng folder này để quản lý các certificate request của server và client thay vì thực hiện chúng trực tiếp trên server CA của bạn.

Để tạo folder PKI trên server OpenVPN của bạn, bạn cần điền vào một file có tên là vars với một số giá trị mặc định. Đầu tiên, bạn sẽ cd vào folder easy-rsa , sau đó bạn sẽ tạo và chỉnh sửa file vars bằng nano hoặc editor bạn muốn .

  • cd ~/easy-rsa
  • nano vars

Sau khi file được mở, hãy paste vào hai dòng sau:

~ / easy-rsa / vars
set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512" 

Đây là hai dòng duy nhất bạn cần trong file vars này trên server OpenVPN của bạn vì nó sẽ không được sử dụng làm Tổ chức phát hành certificate . Họ sẽ đảm bảo các private key và certificate request của bạn được cấu hình để sử dụng Mật mã đường cong Elliptic (ECC) hiện đại để tạo khóa và chữ ký an toàn cho client và server OpenVPN của bạn.

Việc cấu hình server OpenVPN & CA của bạn để sử dụng ECC nghĩa là khi client và server cố gắng cài đặt một khóa đối xứng được chia sẻ, họ có thể sử dụng thuật toán Đường cong Elliptic để thực hiện trao đổi của họ. Sử dụng ECC cho trao đổi khóa nhanh hơn đáng kể so với sử dụng Diffie-Hellman thuần túy với thuật toán RSA cổ điển vì các con số nhỏ hơn nhiều và tính toán nhanh hơn.

Thông tin cơ bản: Khi khách hàng kết nối với OpenVPN, họ sử dụng mã hóa không đối xứng ( còn gọi là public key / riêng tư) để thực hiện bắt tay TLS . Tuy nhiên, khi truyền lưu lượng VPN được mã hóa, server và client sử dụng mã hóa đối xứng, còn gọi là mã hóa khóa chia sẻ.

Chi phí tính toán ít hơn nhiều với mã hóa đối xứng so với không đối xứng: các số được sử dụng nhỏ hơn nhiều và các CPU hiện đại tích hợp các lệnh để thực hiện các hoạt động mã hóa đối xứng được tối ưu hóa . Để thực hiện chuyển đổi từ mã hóa không đối xứng sang mã hóa đối xứng, server và ứng dụng client OpenVPN sẽ sử dụng thuật toán Elliptic Curve Diffie-Hellman (ECDH) để đồng ý về khóa bí mật được chia sẻ nhanh nhất có thể.

Khi bạn đã điền file vars bạn có thể tiếp tục tạo folder PKI. Để làm như vậy, hãy chạy tập lệnh easyrsa với tùy chọn init-pki . Mặc dù bạn đã chạy lệnh này trên server CA như một phần của yêu cầu , bạn cần phải chạy lệnh này ở đây vì server OpenVPN và server CA của bạn có các folder PKI riêng biệt:

  • ./easyrsa init-pki

Lưu ý trên server OpenVPN của bạn, không cần tạo Tổ chức phát hành certificate . Server CA của bạn hoàn toàn chịu trách nhiệm về việc xác thực và ký các certificate . PKI trên server VPN của bạn chỉ được sử dụng như một nơi thuận tiện và tập trung để lưu trữ các certificate request và public certificate .

Sau khi bạn đã khởi tạo PKI của bạn trên server OpenVPN, bạn đã sẵn sàng chuyển sang bước tiếp theo, đó là tạo certificate request server OpenVPN và private key .

Bước 3 - Tạo Yêu cầu Chứng chỉ Server OpenVPN và Khóa Riêng tư

Bây giờ server OpenVPN của bạn đã cài đặt tất cả các yêu cầu , bước tiếp theo là tạo private key và Yêu cầu ký certificate (CSR) trên server OpenVPN của bạn. Sau đó, bạn sẽ chuyển yêu cầu đến CA của bạn để được ký, tạo certificate bắt buộc. Sau khi bạn có certificate đã ký, bạn sẽ chuyển nó trở lại server OpenVPN và cài đặt nó để server sử dụng.

Để bắt đầu, hãy chuyển đến folder ~/easy-rsa trên Server OpenVPN với quyền là user không phải root của bạn:

  • cd ~/easy-rsa

Đến đây bạn sẽ gọi easyrsa với tùy chọn gen-req theo sau là Tên chung (CN) cho máy. CN có thể là bất cứ thứ gì bạn thích nhưng có thể hữu ích nếu biến nó thành thứ gì đó mang tính mô tả. Trong suốt hướng dẫn này, CN của Server OpenVPN sẽ là server . Hãy chắc chắn bao gồm cả tùy chọn nopass . Không làm như vậy sẽ bảo vệ bằng password file yêu cầu, điều này có thể dẫn đến các vấn đề về quyền sau này.

Lưu ý: Nếu bạn chọn tên khác với server ở đây, bạn sẽ phải điều chỉnh một số hướng dẫn bên dưới. Ví dụ: khi sao chép các file đã tạo vào folder /etc/openvpn , bạn sẽ phải thay thế các tên chính xác. Bạn cũng sẽ phải sửa đổi file /etc/openvpn/server.conf sau đó để trỏ đến các file .crt.key chính xác.

  • ./easyrsa gen-req server nopass
Output
Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

Thao tác này sẽ tạo private key cho server và file certificate request được gọi là server.req . Sao chép khóa server vào folder /etc/openvpn/server :

  • sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

Sau khi hoàn thành các bước này, bạn đã tạo thành công private key cho server OpenVPN của bạn . Bạn cũng đã tạo Yêu cầu ký certificate cho server OpenVPN. CSR hiện đã sẵn sàng để CA của bạn ký. Trong phần tiếp theo của hướng dẫn này, bạn sẽ tìm hiểu cách ký CSR bằng private key của server CA của bạn.

Bước 4 - Ký Yêu cầu Chứng chỉ của Server OpenVPN

Ở bước trước, bạn đã tạo Yêu cầu ký certificate (CSR) và private key cho server OpenVPN. Bây giờ server CA cần biết về certificate server và xác thực nó. Sau khi CA xác thực và chuyển tiếp certificate trở lại server OpenVPN, các ứng dụng client tin tưởng CA của bạn cũng sẽ có thể tin cậy server OpenVPN.

Trên server OpenVPN, với quyền là user không phải root của bạn, hãy sử dụng SCP hoặc một phương thức chuyển khác để sao chép certificate request server.req tới server CA để ký:

  • scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

Nếu bạn đã làm theo yêu cầu Cách cài đặt và cấu hình tổ chức phát hành certificate (CA) trên hướng dẫn Ubuntu 20.04 , thì bước tiếp theo là đăng nhập vào server CA với quyền là user không phải root mà bạn đã tạo để quản lý CA của bạn . Bạn sẽ cd vào folder ~/easy-rsa nơi bạn đã tạo PK của bạn và sau đó nhập certificate request bằng tập lệnh easyrsa :

  • cd ~/easy-rsa
  • ./easyrsa import-req /tmp/server.req server
Output
. . . The request has been successfully imported with a short name of: server You may now use this name to perform signing operations on this request.

Tiếp theo, ký yêu cầu bằng cách chạy tập lệnh easyrsa với tùy chọn yêu cầu sign-req , tiếp theo là loại yêu cầu và Tên chung. Loại yêu cầu có thể là client hoặc server . Vì ta đang làm việc với certificate request của server OpenVPN, hãy đảm bảo sử dụng loại yêu cầu server :

  • ./easyrsa sign-req server server

Trong kết quả , bạn sẽ được yêu cầu xác minh yêu cầu đến từ một nguồn tin cậy . Nhập yes sau đó nhấn ENTER để xác nhận:

Output
You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

Lưu ý nếu bạn đã mã hóa private key CA của bạn , bạn sẽ được yêu cầu nhập password của bạn tại thời điểm này.

Với các bước đó hoàn tất, bạn đã ký certificate request của server OpenVPN bằng private key của server CA. Tệp server.crt kết quả chứa khóa mã hóa công khai của server OpenVPN, cũng như chữ ký từ server CA. Điểm của chữ ký là nói với bất kỳ ai tin cậy server CA rằng họ cũng có thể tin cậy server OpenVPN khi họ kết nối với nó.

Để hoàn tất việc cấu hình certificate , hãy sao chép file server.crtca.crt từ server CA sang server OpenVPN:

  • scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
  • scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

Bây giờ trở lại server OpenVPN của bạn, sao chép các file từ /tmp sang /etc/openvpn/server :

  • sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

Bây giờ server OpenVPN của bạn gần như đã sẵn sàng để chấp nhận các kết nối. Trong bước tiếp theo, bạn sẽ thực hiện một số bước bổ sung để tăng tính bảo mật của server .

Bước 5 - Cấu hình tài liệu mật mã OpenVPN

Đối với một lớp bảo mật bổ sung, ta sẽ thêm một khóa bí mật được chia sẻ bổ sung mà server và tất cả các client sẽ sử dụng với chỉ thị tls-crypt của OpenVPN . Tùy chọn này được sử dụng để làm xáo trộn certificate TLS được sử dụng khi server và client kết nối với nhau ban đầu. Nó cũng được sử dụng bởi server OpenVPN để thực hiện kiểm tra nhanh các gói đến: nếu một gói được ký bằng khóa chia sẻ trước, thì server sẽ xử lý nó; nếu nó không được ký, thì server biết nó đến từ một nguồn không tin cậy và có thể loại bỏ nó mà không cần phải thực hiện công việc giải mã bổ sung.

Tùy chọn này sẽ giúp đảm bảo server OpenVPN của bạn có thể đối phó với lưu lượng truy cập không được xác thực, quét cổng và các cuộc tấn công từ chối dịch vụ, có thể làm mất tài nguyên server . Nó cũng làm cho việc xác định lưu lượng mạng OpenVPN khó hơn.

Để tạo khóa chia sẻ trước tls-crypt , hãy chạy phần sau trên server OpenVPN trong folder ~/easy-rsa :

  • cd ~/easy-rsa
  • openvpn --genkey --secret ta.key

Kết quả sẽ là một file có tên ta.key . Sao chép nó vào folder /etc/openvpn/server/ :

  • sudo cp ta.key /etc/openvpn/server

Với các file này trên server OpenVPN, bạn đã sẵn sàng tạo certificate ứng dụng client và file khóa cho user của bạn , bạn sẽ sử dụng các file này để kết nối với VPN.

Bước 6 - Tạo certificate ứng dụng client và cặp khóa

Mặc dù bạn có thể tạo private key và certificate request trên client của bạn và sau đó gửi đến CA để được ký, hướng dẫn này phác thảo quy trình tạo certificate request trên server OpenVPN. Lợi ích của phương pháp này là ta có thể tạo một tập lệnh sẽ tự động tạo các file cấu hình client chứa tất cả các khóa và certificate cần thiết. Điều này cho phép bạn tránh phải chuyển khóa, certificate và file cấu hình cho client và hợp lý hóa quá trình tham gia VPN.

Ta sẽ tạo một cặp certificate và khóa ứng dụng cho hướng dẫn này. Nếu bạn có nhiều khách hàng, bạn có thể lặp lại quy trình này cho từng khách hàng. Tuy nhiên, xin lưu ý bạn cần chuyển một giá trị tên duy nhất cho tập lệnh cho mọi ứng dụng client . Trong suốt hướng dẫn này, cặp khóa / certificate đầu tiên được gọi là client1 .

Bắt đầu bằng cách tạo cấu trúc folder trong folder chính của bạn để lưu trữ certificate ứng dụng client và các file khóa:

  • mkdir -p ~/client-configs/keys

Vì bạn sẽ lưu trữ certificate / cặp khóa và file cấu hình của khách hàng trong folder này, bạn nên khóa các quyền của nó ngay bây giờ như một biện pháp bảo mật:

  • chmod -R 700 ~/client-configs

Tiếp theo, chuyển trở lại folder EasyRSA và chạy tập lệnh easyrsa với các tùy chọn gen-reqnopass , cùng với tên chung cho ứng dụng client :

  • cd ~/easy-rsa
  • ./easyrsa gen-req client1 nopass

Nhấn ENTER để xác nhận tên thông thường. Sau đó, sao chép file client1.key vào folder ~/client-configs/keys/ mà bạn đã tạo trước đó:

  • cp pki/private/client1.key ~/client-configs/keys/

Tiếp theo, chuyển file client1.req sang Server CA của bạn bằng phương pháp bảo mật:

  • scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

Bây giờ đăng nhập vào Server CA của bạn. Sau đó, chuyển đến folder EasyRSA và nhập certificate request :

  • cd ~/easy-rsa
  • ./easyrsa import-req /tmp/client1.req client1

Tiếp theo, ký tên vào yêu cầu giống như cách bạn đã làm đối với server ở bước trước. Tuy nhiên, lần này, hãy nhớ chỉ định loại yêu cầu của client :

  • ./easyrsa sign-req client client1

Khi được yêu cầu , hãy nhập yes để xác nhận bạn định ký vào certificate request và yêu cầu đó đến từ một nguồn tin cậy :

Output
Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

, nếu bạn đã mã hóa khóa CA của bạn , bạn sẽ được yêu cầu nhập password của bạn tại đây.

Thao tác này sẽ tạo file certificate ứng dụng client có tên client1.crt . Chuyển file này trở lại server :

  • scp pki/issued/client1.crt sammy@your_server_ip:/tmp

Quay lại server OpenVPN của bạn, sao chép certificate ứng dụng client vào folder ~/client-configs/keys/ :

  • cp /tmp/client1.crt ~/client-configs/keys/

Tiếp theo, sao chép các file ca.crtta.key vào folder ~/client-configs/keys/ và đặt các quyền thích hợp cho user sudo của bạn:

  • cp ~/easy-rsa/ta.key ~/client-configs/keys/
  • sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
  • sudo chown sammy.sammy ~/client-configs/keys/*

Cùng với đó, các certificate và khóa của server và ứng dụng client của bạn đều đã được tạo và được lưu trữ trong các folder thích hợp trên server OpenVPN của bạn. Vẫn còn một số thao tác cần được thực hiện với các file này, nhưng chúng sẽ có ở bước sau. Hiện tại, bạn có thể chuyển sang cấu hình OpenVPN.

Bước 7 - Cấu hình OpenVPN

Giống như nhiều công cụ open-souce được sử dụng rộng rãi khác, OpenVPN có sẵn nhiều tùy chọn cấu hình để tùy chỉnh server của bạn cho các nhu cầu cụ thể của bạn. Trong phần này, ta sẽ cung cấp hướng dẫn về cách cài đặt cấu hình server OpenVPN dựa trên một trong các file cấu hình mẫu có trong tài liệu của phần mềm này.

Đầu tiên, sao chép file server.conf mẫu làm điểm bắt đầu cho file cấu hình của bạn :

  • sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
  • sudo gunzip /etc/openvpn/server/server.conf.gz

Mở file mới để chỉnh sửa bằng editor mà bạn chọn. Ta sẽ sử dụng nano trong ví dụ của ta :

  • sudo nano /etc/openvpn/server/server.conf

Ta cần thay đổi một vài dòng trong file này. Trước tiên, tìm phần HMAC của cấu hình bằng cách tìm kiếm lệnh tls-auth . Dòng này nên được bỏ chú thích. Comment nó ra bằng cách thêm a ; đến đầu dòng. Sau đó, thêm một dòng mới sau dòng chứa giá trị tls-crypt ta.key only:

/etc/openvpn/server/server.conf
;tls-auth ta.key 0 # This file is secret tls-crypt ta.key 

Tiếp theo, tìm phần về mật mã bằng cách tìm các dòng cipher . Giá trị mặc định được đặt thành AES-256-CBC , tuy nhiên, mật mã AES-256-GCM cung cấp mức độ mã hóa, hiệu suất tốt hơn và được hỗ trợ tốt trong các ứng dụng OpenVPN cập nhật. Ta sẽ comment giá trị mặc định bằng cách thêm một ; ký vào đầu dòng này, sau đó ta sẽ thêm một dòng khác vào sau dòng chứa giá trị cập nhật của AES-256-GCM :

/etc/openvpn/server/server.conf
;cipher AES-256-CBC cipher AES-256-GCM 

Ngay sau dòng này, hãy thêm chỉ thị auth thực để chọn thuật toán thông báo thông báo HMAC. Đối với điều này, SHA256 là một lựa chọn tốt:

/etc/openvpn/server/server.conf
auth SHA256 

Tiếp theo, tìm dòng chứa chỉ thị dh , chỉ thị này xác định các tham số Diffie-Hellman. Vì ta đã cấu hình tất cả các certificate để sử dụng Elliptic Curve Cryptography, nên không cần file hạt giống Diffie-Hellman. Comment dòng hiện có giống như dh dh2048.pem hoặc dh dh.pem . Tên file cho khóa Diffie-Hellman có thể khác với tên được liệt kê trong file cấu hình server mẫu. Sau đó, thêm một dòng sau nó với nội dung dh none :

/etc/openvpn/server/server.conf
;dh dh2048.pem dh none 

Tiếp theo, ta muốn OpenVPN chạy mà không có quyền khi nó đã khởi động, vì vậy ta cần yêu cầu nó chạy với một user không ai cả và group nogroup . Để kích hoạt điều này, hãy tìm và bỏ ghi chú user nobodygroup nogroup các dòng group nogroup bằng cách xóa ; ký hiệu từ đầu mỗi dòng:

/etc/openvpn/server/server.conf
user nobody group nogroup 

(Tùy chọn) Đẩy các thay đổi DNS để chuyển hướng tất cả lưu lượng truy cập thông qua VPN

Cài đặt ở trên sẽ tạo kết nối VPN giữa client và server của bạn, nhưng sẽ không buộc bất kỳ kết nối nào sử dụng tunnel . Nếu bạn muốn sử dụng VPN để định tuyến tất cả lưu lượng client của bạn qua VPN, bạn có thể sẽ muốn đẩy một số cài đặt bổ sung cho các client .

Để bắt đầu, hãy tìm và bỏ comment chứa push "redirect-gateway def1 bypass-dhcp" . Làm điều này sẽ yêu cầu khách hàng của bạn chuyển hướng tất cả lưu lượng truy cập của nó thông qua Server OpenVPN của bạn. Lưu ý việc bật chức năng này có thể gây ra sự cố kết nối với các dịch vụ mạng khác, như SSH:

/etc/openvpn/server/server.conf
push "redirect-gateway def1 bypass-dhcp" 

Ngay bên dưới dòng này, hãy tìm phần dhcp-option . , hãy loại bỏ ; từ đầu của cả hai dòng để bỏ ghi chú chúng:

/etc/openvpn/server/server.conf
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" 

Các dòng này sẽ thông báo cho khách hàng của bạn sử dụng các trình phân giải OpenDNS miễn phí tại các địa chỉ IP được liệt kê. Nếu bạn thích các trình phân giải DNS khác, bạn có thể thay thế chúng thay cho các IP được đánh dấu.

Điều này sẽ hỗ trợ khách hàng cấu hình lại cài đặt DNS của họ để sử dụng tunnel VPN làm cổng mặc định.

(Tùy chọn) Điều chỉnh Cổng và Giao thức

Theo mặc định, server OpenVPN sử dụng cổng 1194 và giao thức UDP để chấp nhận các kết nối client . Nếu bạn cần sử dụng một cổng khác do môi trường mạng hạn chế mà client của bạn có thể ở trong, bạn có thể thay đổi tùy chọn port . Nếu bạn không lưu trữ nội dung web trên server OpenVPN của bạn , cổng 443 là một lựa chọn phổ biến vì nó thường được cho phép thông qua các luật firewall .

Để thay đổi OpenVPN để lắng nghe trên cổng 443, hãy mở file server.conf và tìm dòng trông giống như sau:

/etc/openvpn/server/server.conf
port 1194 

Chỉnh sửa nó để cổng là 443:

/etc/openvpn/server/server.conf
# Optional! port 443 

Thông thường, giao thức cũng bị hạn chế đối với cổng đó. Nếu vậy, hãy tìm dòng proto bên dưới dòng port và thay đổi giao thức từ udp thành tcp :

/etc/openvpn/server/server.conf
# Optional! proto tcp 

Nếu bạn làm chuyển đổi giao thức TCP, bạn cần phải thay đổi explicit-exit-notify giá trị chỉ thị từ 1 đến 0 , như chỉ thị này chỉ được sử dụng bởi UDP. Không làm như vậy trong khi sử dụng TCP sẽ gây ra lỗi khi bạn khởi động dịch vụ OpenVPN.

Tìm dòng explicit-exit-notify ở cuối file và thay đổi giá trị thành 0 :

/etc/openvpn/server/server.conf
# Optional! explicit-exit-notify 0 

Nếu bạn không có nhu cầu sử dụng cổng và giao thức khác, tốt nhất là bạn nên giữ nguyên các cài đặt này.

(Tùy chọn) Trỏ đến thông tin đăng nhập không mặc định

Nếu bạn đã chọn một tên khác trong lệnh ./easyrsa gen-req server trước đó, hãy sửa đổi certkey dòng key trong file cấu hình server.conf để chúng trỏ đến các file .crt.key thích hợp. Nếu bạn sử dụng tên, server mặc định, tên này đã được đặt đúng:

/etc/openvpn/server/server.conf
cert server.crt key server.key 

Khi bạn hoàn tất, hãy lưu file .

Đến đây bạn đã hoàn tất việc cấu hình cài đặt chung OpenVPN của bạn . Trong bước tiếp theo, ta sẽ tùy chỉnh các tùy chọn mạng của server .

Bước 8 - Điều chỉnh cấu hình mạng server OpenVPN

Có một số khía cạnh của cấu hình mạng của server cần được tinh chỉnh để OpenVPN có thể định tuyến chính xác lưu lượng truy cập thông qua VPN. Đầu tiên trong số này là chuyển tiếp IP , một phương pháp để xác định nơi lưu lượng truy cập IP nên được định tuyến. Đây là điều cần thiết đối với chức năng VPN mà server của bạn sẽ cung cấp.

Để điều chỉnh cài đặt chuyển tiếp IP mặc định của server OpenVPN, hãy mở file /etc/sysctl.conf bằng nano hoặc editor bạn muốn :

  • sudo nano /etc/sysctl.conf

Sau đó, thêm dòng sau vào cuối file :

/etc/sysctl.conf
net.ipv4.ip_forward = 1 

Lưu file khi bạn hoàn tất.

Để đọc file và tải các giá trị mới cho phiên hiện tại, hãy nhập:

  • sudo sysctl -p
Output
net.ipv4.ip_forward = 1

Bây giờ server OpenVPN của bạn có thể chuyển tiếp lưu lượng đến từ một thiết bị ethernet khác. Cài đặt này đảm bảo server có thể hướng lưu lượng truy cập từ các client kết nối trên giao diện VPN ảo qua các thiết bị ethernet vật lý khác của nó. Cấu hình này sẽ định tuyến tất cả lưu lượng truy cập web từ client của bạn thông qua địa chỉ IP của server và địa chỉ IP công cộng của client của bạn sẽ bị ẩn một cách hiệu quả.

Trong bước tiếp theo, bạn cần phải cấu hình một số luật firewall đảm bảo rằng lưu lượng truy cập đến và từ server OpenVPN của bạn chảy đúng cách.

Bước 9 - Cấu hình firewall

Lúc này, bạn đã cài đặt OpenVPN trên server của bạn , cấu hình nó và tạo các khóa và certificate cần thiết để khách hàng của bạn có thể truy cập VPN. Tuy nhiên, bạn vẫn chưa cung cấp cho OpenVPN bất kỳ hướng dẫn nào về nơi gửi lưu lượng truy cập web đến từ client . Bạn có thể quy định cách server xử lý lưu lượng client bằng cách cài đặt một số luật firewall và cấu hình định tuyến.

Giả sử bạn đã làm theo các yêu cầu khi bắt đầu hướng dẫn này, bạn hẳn đã cài đặt và chạy ufw trên server của bạn . Để cho phép OpenVPN thông qua firewall , bạn cần bật giả mạo, một khái niệm iptables cung cấp tính năng dịch địa chỉ mạng động (NAT) nhanh chóng để định tuyến chính xác các kết nối client .

Trước khi mở file cấu hình firewall để thêm các luật giả mạo, trước tiên bạn phải tìm network interface công cộng của máy mình. Để làm điều này, hãy nhập:

  • ip route list default

Giao diện công khai của bạn là chuỗi được tìm thấy trong kết quả của lệnh này theo sau từ “dev”. Ví dụ: kết quả này hiển thị giao diện có tên eth0 , được đánh dấu bên dưới:

Output
default via 159.65.160.1 dev eth0 proto static

Khi bạn có giao diện được liên kết với tuyến đường mặc định của bạn , hãy mở file /etc/ufw/before.rules để thêm cấu hình có liên quan:

  • sudo nano /etc/ufw/before.rules

Các luật UFW thường được thêm vào bằng lệnh ufw . Tuy nhiên, các luật được liệt kê trong file before.rules được đọc và đưa vào vị trí trước khi các luật UFW thông thường được tải. Về đầu file , thêm các dòng được đánh dấu bên dưới. Điều này sẽ đặt policy mặc định cho chuỗi POSTROUTING trong bảng nat và giả mạo bất kỳ lưu lượng nào đến từ VPN. Hãy nhớ thay thế eth0 trong dòng -A POSTROUTING bên dưới bằng giao diện bạn tìm thấy trong lệnh trên:

/etc/ufw/before.rules
# # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: #   ufw-before-input #   ufw-before-output #   ufw-before-forward #  # START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!) -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES  # Don't delete these required lines, otherwise there will be errors *filter . . . 

Lưu file khi bạn hoàn tất.

Tiếp theo, bạn cần yêu cầu UFW cho phép các gói được chuyển tiếp theo mặc định. Để thực hiện việc này, hãy mở file /etc/default/ufw :

  • sudo nano /etc/default/ufw

Bên trong, tìm chỉ thị DEFAULT_FORWARD_POLICY và thay đổi giá trị từ DROP thành ACCEPT :

/ etc / default / ufw
DEFAULT_FORWARD_POLICY="ACCEPT" 

Lưu file khi bạn hoàn tất.

Tiếp theo, điều chỉnh chính firewall để cho phép lưu lượng truy cập vào OpenVPN. Nếu bạn không thay đổi cổng và giao thức trong file /etc/openvpn/server.conf , bạn cần mở lưu lượng UDP đến cổng 1194 . Nếu bạn đã sửa đổi cổng và / hoặc giao thức, hãy thay thế các giá trị bạn đã chọn ở đây.

Trong trường hợp bạn quên thêm cổng SSH khi làm theo hướng dẫn yêu cầu , hãy thêm nó vào đây:

  • sudo ufw allow 1194/udp
  • sudo ufw allow OpenSSH

Sau khi thêm các luật đó, hãy tắt và bật lại UFW để khởi động lại nó và tải các thay đổi từ tất cả các file bạn đã sửa đổi:

  • sudo ufw disable
  • sudo ufw enable

Server của bạn hiện đã được cấu hình để xử lý chính xác lưu lượng OpenVPN. Với các luật firewall được áp dụng, ta có thể bắt đầu dịch vụ OpenVPN trên server .

Bước 10 - Khởi động OpenVPN

OpenVPN chạy như một dịch vụ systemd , vì vậy ta có thể sử dụng systemctl để quản lý nó. Ta sẽ cấu hình OpenVPN để khởi động khi server khởi động để bạn có thể kết nối với VPN của bạn bất kỳ lúc nào miễn là server của bạn đang chạy. Để thực hiện việc này, hãy bật dịch vụ OpenVPN bằng cách thêm nó vào systemctl :

  • sudo systemctl -f enable openvpn-server@server.service

Sau đó khởi động dịch vụ OpenVPN:

  • sudo systemctl start openvpn-server@server.service

Kiểm tra kỹ xem dịch vụ OpenVPN có đang hoạt động hay không bằng lệnh sau. Bạn sẽ thấy active (running) trong kết quả :

  • sudo systemctl status openvpn-server@server.service
Output
● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-29 15:39:59 UTC; 6s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 16872 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1137) Memory: 1.0M CGroup: /system.slice/system-openvpn\x2dserver.slice/openvpn-server@server.service └─16872 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c> . . . . . . Apr 29 15:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed

Hiện ta đã hoàn thành cấu hình phía server cho OpenVPN. Tiếp theo, bạn sẽ cấu hình client của bạn và kết nối với Server OpenVPN.

Bước 11 - Tạo cơ sở hạ tầng cấu hình client

Việc tạo file cấu hình cho client OpenVPN có thể hơi liên quan, vì mỗi client phải có cấu hình riêng và mỗi máy phải phù hợp với cài đặt được nêu trong file cấu hình của server . Thay vì viết một file cấu hình duy nhất chỉ được dùng trên một client , bước này phác thảo quy trình xây dựng cơ sở hạ tầng cấu hình client mà bạn có thể sử dụng để tạo file cấu hình một cách nhanh chóng. Trước tiên, bạn sẽ tạo một file cấu hình “cơ sở” sau đó xây dựng một tập lệnh cho phép bạn tạo các file , certificate và khóa cấu hình ứng dụng client duy nhất nếu cần.

Bắt đầu bằng cách tạo một folder mới, nơi bạn sẽ lưu trữ các file cấu hình client trong folder cấu hình client-configs mà bạn đã tạo trước đó:

  • mkdir -p ~/client-configs/files

Tiếp theo, sao chép file cấu hình client mẫu vào folder cấu hình client-configs để sử dụng làm cấu hình cơ sở của bạn:

  • cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Mở file mới này bằng nano hoặc editor bạn muốn :

  • nano ~/client-configs/base.conf

Bên trong, xác định vị trí chỉ thị remote . Điều này trỏ client đến địa chỉ server OpenVPN của bạn - địa chỉ IP công cộng của server OpenVPN của bạn. Nếu bạn quyết định thay đổi cổng mà server OpenVPN đang nghe, bạn cũng cần thay đổi 1194 thành cổng bạn đã chọn:

~ / client-configs / base.conf
. . . # The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote your_server_ip 1194 . . . 

Đảm bảo rằng giao thức trùng với giá trị bạn đang sử dụng trong cấu hình server :

~ / client-configs / base.conf
proto udp 

Tiếp theo, bỏ ghi chú user và chỉ thị group bằng cách xóa ; ký hiệu ở đầu mỗi dòng:

~ / client-configs / base.conf
# Downgrade privileges after initialization (non-Windows only) user nobody group nogroup 

Tìm các lệnh đặt ca , certkey . Comment các chỉ thị này vì bạn sẽ sớm thêm certificate và khóa trong chính file :

~ / client-configs / base.conf
# SSL/TLS parms. # See the server config file for more # description. It's best to use # a separate .crt/.key file pair # for each client. A single ca # file can be used for all clients. ;ca ca.crt ;cert client.crt ;key client.key 

Tương tự, hãy comment chỉ thị ta.key tls-auth , vì bạn sẽ thêm ta.key trực tiếp vào file cấu hình client (và server được cài đặt để sử dụng tls-crypt ):

~ / client-configs / base.conf
# If a tls-auth key is used on the server # then every client must also have the key. ;tls-auth ta.key 1 

Phản chiếu cài đặt cipherauth mà bạn đã đặt trong file /etc/openvpn/server/server.conf :

~ / client-configs / base.conf
cipher AES-256-GCM auth SHA256 

Tiếp theo, thêm chỉ thị key-direction ở đâu đó trong file . Bạn phải đặt giá trị này thành “1” để VPN hoạt động chính xác trên client :

~ / client-configs / base.conf
key-direction 1 

Cuối cùng, thêm một vài dòng đã comment để xử lý các phương pháp khác nhau mà các client VPN dựa trên Linux sẽ sử dụng để phân giải DNS. Bạn sẽ thêm hai tập hợp các dòng chú thích giống nhau, nhưng riêng biệt. Bộ đầu tiên dành cho các client không sử dụng systemd-resolved để quản lý DNS. Các client này dựa vào tiện ích resolvconf để cập nhật thông tin DNS cho các client Linux.

~ / client-configs / base.conf
; script-security 2 ; up /etc/openvpn/update-resolv-conf ; down /etc/openvpn/update-resolv-conf 

Bây giờ, hãy thêm một tập hợp các dòng khác cho các client sử dụng systemd-resolved để phân giải DNS:

~ / client-configs / base.conf
; script-security 2 ; up /etc/openvpn/update-systemd-resolved ; down /etc/openvpn/update-systemd-resolved ; down-pre ; dhcp-option DOMAIN-ROUTE . 

Lưu file khi bạn hoàn tất.

Sau đó ở Bước 13 - Cài đặt bước Cấu hình Máy khách của hướng dẫn này, bạn sẽ học cách xác định cách phân giải DNS hoạt động trên các client Linux và phần nào cần bỏ ghi chú.

Tiếp theo, ta sẽ tạo một tập lệnh sẽ biên dịch cấu hình cơ sở của bạn với certificate , khóa và file mã hóa có liên quan, sau đó đặt cấu hình đã tạo vào folder ~/client-configs/files . Mở một file mới có tên make_config.sh trong folder ~/client-configs :

  • nano ~/client-configs/make_config.sh

Bên trong, thêm nội dung sau:

~ / client-configs / make_config.sh
#!/bin/bash  # First argument: Client identifier  KEY_DIR=~/client-configs/keys OUTPUT_DIR=~/client-configs/files BASE_CONFIG=~/client-configs/base.conf  cat ${BASE_CONFIG} \     <(echo -e '<ca>') \     ${KEY_DIR}/ca.crt \     <(echo -e '</ca>\n<cert>') \     ${KEY_DIR}/${1}.crt \     <(echo -e '</cert>\n<key>') \     ${KEY_DIR}/${1}.key \     <(echo -e '</key>\n<tls-crypt>') \     ${KEY_DIR}/ta.key \     <(echo -e '</tls-crypt>') \     > ${OUTPUT_DIR}/${1}.ovpn 

Lưu file khi bạn hoàn tất.

Trước khi tiếp tục, hãy nhớ đánh dấu file này là file thực thi bằng lệnh :

  • chmod 700 ~/client-configs/make_config.sh

Tập lệnh này sẽ tạo một bản sao của file base.conf mà bạn đã tạo, thu thập tất cả certificate và file khóa mà bạn đã tạo cho ứng dụng client của bạn , extract nội dung của chúng, nối chúng vào bản sao của file cấu hình cơ sở và xuất tất cả những thứ này nội dung vào file cấu hình client mới. Điều này nghĩa là thay vì phải quản lý các file cấu hình, certificate và khóa của khách hàng một cách riêng biệt, tất cả thông tin cần thiết được lưu trữ ở một nơi. Lợi ích của việc sử dụng phương pháp này là nếu bạn cần thêm ứng dụng client trong tương lai, bạn có thể chạy tập lệnh này để nhanh chóng tạo file cấu hình mới và đảm bảo tất cả thông tin quan trọng được lưu trữ trong một file duy nhất, dễ truy cập vị trí.

Xin lưu ý bất kỳ khi nào bạn thêm một ứng dụng client mới, bạn cần tạo khóa và certificate mới cho nó trước khi bạn có thể chạy tập lệnh này và tạo file cấu hình của nó. Bạn sẽ thực hành một số cách sử dụng script này trong bước tiếp theo.

Bước 12 - Tạo cấu hình client

Nếu bạn làm theo hướng dẫn, bạn đã tạo certificate ứng dụng client và khóa có tên client1.crtclient1.key , tương ứng, ở Bước 6. Bạn có thể tạo file cấu hình cho các thông tin đăng nhập này bằng cách chuyển vào folder ~/client-configs và chạy tập lệnh bạn đã thực hiện ở cuối bước trước:

  • cd ~/client-configs
  • ./make_config.sh client1

Thao tác này sẽ tạo một file có tên client1.ovpn trong folder ~/client-configs/files :

  • ls ~/client-configs/files
Output
client1.ovpn

Bạn cần chuyển file này sang thiết bị bạn định sử dụng làm ứng dụng client . Ví dụ: đây có thể là máy tính local của bạn hoặc thiết bị di động.

Mặc dù các ứng dụng chính xác được sử dụng để thực hiện quá trình chuyển này sẽ phụ thuộc vào hệ điều hành của thiết bị và sở thích cá nhân của bạn, nhưng một phương pháp tin cậy và an toàn là sử dụng SFTP (giao thức truyền file SSH) hoặc SCP (Bản sao bảo mật) trên chương trình backend . Điều này sẽ vận chuyển các file xác thực VPN của khách hàng của bạn qua một kết nối được mã hóa.

Đây là một ví dụ về lệnh SFTP mà bạn có thể chạy từ máy tính local của bạn (macOS hoặc Linux). Thao tác này sẽ sao chép file client1.ovpn mà ta đã tạo ở bước cuối cùng vào folder chính của bạn:

  • sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

Dưới đây là một số công cụ và hướng dẫn để truyền file an toàn từ server OpenVPN sang máy tính local :

Bước 13 - Cài đặt cấu hình client

Phần này trình bày cách cài đặt cấu hình VPN ứng dụng client trên Windows, macOS, Linux, iOS và Android. Không có hướng dẫn ứng dụng nào trong số này phụ thuộc vào nhau, vì vậy, vui lòng bỏ qua phần nào áp dụng cho thiết bị của bạn.

Kết nối OpenVPN sẽ có cùng tên với bất kỳ tên nào bạn đã gọi là file .ovpn . Liên quan đến hướng dẫn này, điều này nghĩa là kết nối được đặt tên là client1.ovpn , phù hợp với file khách hàng đầu tiên bạn đã tạo.

các cửa sổ

Đang cài đặt

Download ứng dụng client OpenVPN dành cho Windows từ trang Download của OpenVPN . Chọn version trình cài đặt thích hợp cho version Windows của bạn.

Lưu ý : OpenVPN cần có quyền quản trị để cài đặt.

Sau khi cài đặt OpenVPN, hãy sao chép file .ovpn vào:

C:\Program Files\OpenVPN\config 

Khi bạn chạy OpenVPN, nó sẽ tự động định vị profile và cung cấp profile đó.

Bạn phải chạy OpenVPN với quyền administrator mỗi khi nó được sử dụng, ngay cả bằng account quản trị. Để thực hiện việc này mà không cần phải nhấp chuột phải và chọn Chạy với quyền administrator mỗi khi sử dụng VPN, bạn phải đặt trước điều này từ account quản trị. Điều này cũng nghĩa là user tiêu chuẩn cần nhập password của administrator để sử dụng OpenVPN. Mặt khác, user tiêu chuẩn không thể kết nối đúng cách với server trừ khi ứng dụng OpenVPN trên client có quyền quản trị, do đó, các quyền nâng cao là cần thiết.

Để đặt ứng dụng OpenVPN luôn chạy với quyền administrator , hãy nhấp chuột phải vào biểu tượng lối tắt của nó và đi tới Thuộc tính . Ở cuối tab Tương thích , nhấp vào nút để Thay đổi cài đặt cho tất cả user . Trong cửa sổ mới, chọn Chạy chương trình này với quyền administrator .

Đang kết nối

Mỗi lần bạn chạy OpenVPN GUI, Windows sẽ hỏi bạn có muốn cho phép chương trình áp dụng các thay đổi đối với máy tính của bạn hay không. Nhấp vào . Chạy ứng dụng client OpenVPN chỉ đặt applet vào khay hệ thống để bạn có thể kết nối và ngắt kết nối VPN khi cần; nó không tạo kết nối VPN.

Sau khi OpenVPN được khởi động, hãy bắt đầu kết nối bằng cách vào applet khay hệ thống và nhấp chuột phải vào biểu tượng applet OpenVPN. Thao tác này sẽ mở menu ngữ cảnh. Chọn client1 ở đầu menu (đó là profile client1.ovpn của bạn) và chọn Connect .

Một cửa sổ trạng thái sẽ mở ra hiển thị kết quả log trong khi kết nối được cài đặt và một thông báo sẽ hiển thị khi client được kết nối.

Ngắt kết nối khỏi VPN theo cách tương tự: Vào applet khay hệ thống, nhấp chuột phải vào biểu tượng applet OpenVPN, chọn cấu hình client và nhấp vào Ngắt kết nối .

hệ điều hành Mac

Đang cài đặt

Tunnelblick là một ứng dụng OpenVPN open-souce miễn phí dành cho macOS. Bạn có thể download hình ảnh đĩa mới nhất từ trang Download của Tunnelblick . Nhấp đúp vào file .dmg download và làm theo dấu nhắc để cài đặt.

Vào cuối quá trình cài đặt, Tunnelblick sẽ hỏi bạn có file cấu hình nào không. Trả lời Tôi có các file cấu hình và hãy để Tunnelblick hoàn tất. Mở cửa sổ Finder và nhấp đúp vào client1.ovpn . Tunnelblick sẽ cài đặt profile khách hàng. Đặc quyền quản trị là bắt buộc.

Đang kết nối

Chạy Tunnelblick bằng cách nhấp đúp vào biểu tượng Tunnelblick trong folder Ứng dụng . Khi Tunnelblick đã được chạy , sẽ có biểu tượng Tunnelblick trong thanh menu ở trên cùng bên phải của màn hình để kiểm soát các kết nối. Nhấp vào biểu tượng, sau đó nhấp vào mục menu Connect client1 để bắt đầu kết nối VPN.

Linux

Đang cài đặt

Nếu bạn đang sử dụng Linux, có rất nhiều công cụ mà bạn có thể sử dụng tùy thuộc vào bản phân phối của bạn . Môi trường máy tính để bàn hoặc trình quản lý cửa sổ của bạn cũng có thể bao gồm các tiện ích kết nối.

Tuy nhiên, cách kết nối phổ biến nhất là chỉ sử dụng phần mềm OpenVPN.

Trên Ubuntu hoặc Debian, bạn có thể cài đặt nó giống như bạn đã làm trên server bằng lệnh :

  • sudo apt update
  • sudo apt install openvpn

Trên CentOS, bạn có thể kích hoạt kho EPEL và sau đó cài đặt nó bằng lệnh :

  • sudo dnf install epel-release
  • sudo dnf install openvpn

Cấu hình khách hàng sử dụng systemd-resolved

Trước tiên, hãy xác định xem hệ thống của bạn có đang sử dụng systemd-resolved để xử lý độ phân giải DNS hay không bằng cách kiểm tra file /etc/resolv.conf :

  • cat /etc/resolv.conf
Output
# This file is managed by man:systemd-resolved(8). Do not edit. . . . nameserver 127.0.0.53 options edns0

Nếu hệ thống của bạn được cấu hình để sử dụng systemd-resolved phân giải DNS để phân giải DNS, thì địa chỉ IP sau tùy chọn nameserver sẽ là 127.0.0.53 . Cũng nên có các comment trong file như kết quả được hiển thị giải thích cách systemd-resolved đang quản lý file . Nếu bạn có địa chỉ IP khác với 127.0.0.53 thì rất có thể hệ thống của bạn không sử dụng systemd-resolved và bạn có thể chuyển đến phần tiếp theo về cấu hình các client Linux có tập lệnh update-resolv-conf .

Để hỗ trợ những client này, trước tiên hãy cài đặt gói openvpn-systemd-resolved . Nó cung cấp các tập lệnh sẽ buộc systemd-resolved sử dụng server VPN để phân giải DNS.

  • sudo apt install openvpn-systemd-resolved

Một gói đó được cài đặt, cấu hình client để sử dụng nó và gửi tất cả các truy vấn DNS qua giao diện VPN. Mở file VPN của khách hàng:

  • nano client1.ovpn

Bây giờ bỏ ghi chú những dòng sau mà bạn đã thêm trước đó:

client1.ovpn
script-security 2 up /etc/openvpn/update-systemd-resolved down /etc/openvpn/update-systemd-resolved down-pre dhcp-option DOMAIN-ROUTE . 

Cấu hình client sử dụng update-resolv-conf

Nếu hệ thống của bạn không sử dụng systemd-resolved để quản lý DNS, hãy kiểm tra xem bản phân phối của bạn có bao gồm tập lệnh /etc/openvpn/update-resolv-conf thay thế hay không:

  • ls /etc/openvpn
Output
update-resolv-conf

Nếu client của bạn bao gồm file update-resolv-conf , thì hãy chỉnh sửa file cấu hình client OpenVPN mà bạn đã chuyển trước đó:

  • nano client1.ovpn

Bỏ ghi chú ba dòng bạn đã thêm để điều chỉnh cài đặt DNS:

client1.ovpn
script-security 2 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf 

Nếu bạn đang sử dụng CentOS, hãy thay đổi chỉ thị group từ không nogroup thành nobody để phù hợp với các group có sẵn của phân phối:

client1.ovpn
group nobody 

Lưu và đóng file .

Đang kết nối

Bây giờ, bạn có thể kết nối với VPN chỉ bằng cách trỏ lệnh openvpn vào file cấu hình client :

  • sudo openvpn --config client1.ovpn

Điều này sẽ kết nối bạn với VPN của bạn.

Lưu ý: Nếu khách hàng của bạn sử dụng systemd-resolved để quản lý DNS, hãy kiểm tra các cài đặt đã được áp dụng đúng cách chưa bằng cách chạy lệnh systemd-resolve --status như sau:

  • systemd-resolve --status tun0

Bạn sẽ thấy kết quả như sau:

Output
Link 22 (tun0) . . . DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.

Nếu bạn thấy địa chỉ IP của server DNS mà bạn đã cấu hình trên server OpenVPN, cùng với dấu ~. cài đặt cho Miền DNS trong kết quả , sau đó bạn đã cấu hình chính xác client của bạn để sử dụng trình phân giải DNS của server VPN. Bạn cũng có thể kiểm tra xem mình có đang gửi truy vấn DNS qua VPN hay không bằng cách sử dụng một trang web như DNS rò rỉ test.com .

iOS

Đang cài đặt

Từ iTunes App Store, tìm kiếm và cài đặt OpenVPN Connect , ứng dụng client OpenVPN chính thức của iOS. Để chuyển cấu hình ứng dụng client iOS của bạn vào thiết bị, hãy kết nối trực tiếp với máy tính.

Quá trình hoàn tất quá trình chuyển bằng iTunes được nêu ở đây. Mở iTunes trên máy tính và nhấp vào iPhone > ứng dụng . Cuộn xuống dưới cùng đến phần Chia sẻ file và nhấp vào ứng dụng OpenVPN. Cửa sổ trống ở bên phải, Tài liệu OpenVPN , là để chia sẻ file . Kéo file .ovpn vào cửa sổ Tài liệu OpenVPN.
iTunes hiển thị cấu hình VPN đã sẵn sàng để tải trên iPhone

Bây giờ chạy ứng dụng OpenVPN trên iPhone. Bạn sẽ nhận được thông báo rằng một cấu hình mới đã sẵn sàng để nhập. Nhấn vào dấu cộng màu xanh lục để nhập nó.

Ứng dụng OpenVPN iOS hiển thị cấu hình mới đã sẵn sàng để nhập
Đang kết nối

OpenVPN hiện đã sẵn sàng để sử dụng với cấu hình mới. Bắt đầu kết nối bằng cách trượt nút Kết nối sang vị trí Bật . Ngắt kết nối bằng cách trượt nút tương tự sang Tắt .

Lưu ý : Không thể sử dụng lựa chọn VPN trong Cài đặt để kết nối với VPN. Nếu cố gắng, bạn sẽ nhận được thông báo chỉ kết nối bằng ứng dụng OpenVPN.

Ứng dụng OpenVPN iOS được kết nối với VPN

Android

Đang cài đặt

Mở Cửa hàng Google Play. Tìm kiếm và cài đặt Android OpenVPN Connect , ứng dụng client Android OpenVPN chính thức.

Bạn có thể chuyển profile .ovpn bằng cách kết nối thiết bị Android với máy tính bằng USB và sao chép file . Ngoài ra, nếu bạn có đầu đọc thẻ SD, bạn có thể tháo thẻ SD của thiết bị, sao chép profile vào nó và sau đó lắp thẻ trở lại thiết bị Android.

Khởi động ứng dụng OpenVPN và nhấn vào menu FILE để nhập profile .

Lựa chọn menu nhập cấu hình ứng dụng OpenVPN Android

Sau đó, chuyển đến vị trí của profile đã lưu (ảnh chụp màn hình sử dụng /storage/emulated/0/openvpn ) và chọn file .ovpn của bạn. Nhấn vào nút IMPORT để hoàn tất việc nhập cấu hình này.

Ứng dụng OpenVPN Android chọn cấu hình VPN để nhập

Đang kết nối
Khi profile được thêm vào, bạn sẽ thấy một màn hình như sau:

Ứng dụng OpenVPN Android với cấu hình mới được thêm vào

Để kết nối, hãy nhấn vào lựa chọn đổi gần với cấu hình bạn muốn sử dụng. Bạn sẽ thấy số liệu thống kê thời gian thực về kết nối và lưu lượng truy cập của bạn được định tuyến thông qua server OpenVPN:
Ứng dụng OpenVPN Android được kết nối với VPN

Để ngắt kết nối, chỉ cần nhấn vào nút bật tắt ở trên cùng bên trái . Bạn sẽ được yêu cầu xác nhận bạn muốn ngắt kết nối khỏi VPN của bạn .

Bước 14 - Kiểm tra kết nối VPN của bạn (Tùy chọn)

Lưu ý: Phương pháp này để kiểm tra kết nối VPN của bạn sẽ chỉ hoạt động nếu bạn đã chọn định tuyến tất cả lưu lượng truy cập của bạn thông qua VPN ở Bước 7 khi bạn chỉnh sửa file server.conf cho OpenVPN.

Khi mọi thứ đã được cài đặt, một kiểm tra đơn giản xác nhận mọi thứ đang hoạt động bình thường. Nếu không bật kết nối VPN, hãy mở trình duyệt và truy cập DNSLeakTest .

Trang web sẽ trả lại địa chỉ IP được chỉ định bởi nhà cung cấp dịch vụ internet của bạn và khi bạn xuất hiện với phần còn lại của thế giới. Để kiểm tra cài đặt DNS của bạn thông qua cùng một trang web, hãy nhấp vào Kiểm tra mở rộng và nó sẽ cho bạn biết bạn đang sử dụng server DNS nào.

Bây giờ, hãy kết nối ứng dụng OpenVPN với VPN của Server và làm mới trình duyệt. Một địa chỉ IP hoàn toàn khác (của server VPN của bạn) bây giờ sẽ xuất hiện và đây là cách bạn xuất hiện với thế giới. , Kiểm tra mở rộng của DNSLeakTest sẽ kiểm tra cài đặt DNS của bạn và xác nhận bạn hiện đang sử dụng trình phân giải DNS do VPN của bạn đẩy.

Bước 15 - Thu hồi certificate khách hàng

Đôi khi, bạn có thể cần phải thu hồi certificate ứng dụng client để ngăn truy cập thêm vào server OpenVPN.

Để làm như vậy, hãy làm theo ví dụ trong hướng dẫn yêu cầu về Cách cài đặt và cấu hình tổ chức phát hành certificate trên Ubuntu 20.04 trong phần Thu hồi certificate .

Khi bạn đã thu hồi certificate cho ứng dụng client bằng các hướng dẫn đó, bạn cần sao chép file crl.pem tạo vào server OpenVPN của bạn trong folder /etc/openvpn/server :

  • sudo cp /tmp/crl.pem /etc/openvpn/server/

Tiếp theo, mở file cấu hình server OpenVPN:

  • sudo nano /etc/openvpn/server/server.conf

Ở cuối file , hãy thêm tùy chọn crl-verify , tùy chọn này sẽ hướng dẫn server OpenVPN kiểm tra danh sách thu hồi certificate mà ta đã tạo mỗi lần cố gắng kết nối:

/etc/openvpn/server/server.conf
crl-verify crl.pem 

Lưu và đóng file .

Cuối cùng, khởi động lại OpenVPN để thực hiện việc thu hồi certificate :

  • sudo systemctl restart openvpn-server@server.service

Máy khách sẽ không thể kết nối thành công với server bằng thông tin đăng nhập cũ.

Để thu hồi khách hàng bổ sung, hãy làm theo quy trình sau:

  1. Thu hồi certificate bằng lệnh ./easyrsa revoke client_name
  2. Tạo CRL mới
  3. Chuyển file crl.pem mới sang server OpenVPN của bạn và sao chép nó vào folder /etc/openvpn/server/ để overrides lên danh sách cũ.
  4. Khởi động lại dịch vụ OpenVPN.

Bạn có thể sử dụng quy trình này để thu hồi bất kỳ certificate nào mà bạn đã cấp trước đó cho server của bạn .

Kết luận

Đến đây bạn sẽ có một mạng riêng ảo hoạt động đầy đủ chạy trên Server OpenVPN của bạn . Bạn có thể duyệt web và download nội dung mà không phải lo lắng về các tác nhân độc hại theo dõi hoạt động của bạn.

Có một số bước bạn có thể thực hiện để tùy chỉnh cài đặt OpenVPN của bạn hơn nữa, chẳng hạn như cấu hình client của bạn để kết nối với VPN tự động hoặc cấu hình các luật và policy truy cập dành riêng cho client . Đối với những tùy chỉnh này và các tùy chỉnh OpenVPN khác, bạn nên tham khảo tài liệu OpenVPN chính thức .

Để cấu hình nhiều client hơn, bạn chỉ cần làm theo các bước 611-13 cho từng thiết bị bổ sung. Để thu hồi quyền truy cập vào client , hãy làm theo bước 15 .


Tags:

Các tin liên quan

Cách thiết lập và cấu hình server OpenVPN trên CentOS 8
2020-04-14
Cách thiết lập server OpenVPN trên Debian 9
2018-09-07
Cách thiết lập server OpenVPN trên Ubuntu 18.04
2018-05-24
Cách thiết lập và cấu hình server OpenVPN trên CentOS 7
2018-03-19
Cách thiết lập và cấu hình server OpenVPN trên CentOS 7
2018-03-19
Cách chặn quảng cáo ở cấp DNS bằng Pi-hole và OpenVPN trên Ubuntu 16.04
2017-12-04
Cách tạo mạng nội bộ với OpenVPN trên Ubuntu 16.04
2016-09-23
Cách thiết lập server OpenVPN trên Ubuntu 16.04
2016-05-04
3 cách duyệt Internet an toàn với OpenVPN trên Debian 8
2015-08-31
Cách thiết lập server OpenVPN trên Debian 8
2015-08-10