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 :
- Một server Ubuntu 20.04 với user không phải root có quyền sudo và đã bật firewall . Để cài đặt điều này, bạn có thể làm theo hướng dẫn Cài đặt server ban đầu với Ubuntu 20.04 của ta . Ta sẽ gọi đây là Server OpenVPN trong suốt hướng dẫn này.
- Một server Ubuntu 20.04 riêng biệt được cài đặt làm Cơ quan cấp certificate riêng (CA), mà ta sẽ gọi là Server CA trong suốt hướng dẫn này. Sau khi thực hiện các bước từ Hướng dẫn Cài đặt Server Ban đầu trên server này, bạn có thể làm theo các bước từ 1 đến 3 trong hướng dẫn của ta về Cách Cài đặt và Cấu hình Tổ chức Phát hành Chứng chỉ (CA) trên Ubuntu 20.04 để thực hiện điều đó.
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:
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
và .key
chính xác.
- ./easyrsa gen-req server nopass
OutputCommon 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:
OutputYou 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.crt
và ca.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-req
và nopass
, 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 :
OutputType 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.crt
và ta.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:
;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
:
;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:
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
:
;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 nobody
và group nogroup
các dòng group nogroup
bằng cách xóa ;
ký hiệu từ đầu mỗi dòng:
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:
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:
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:
port 1194
Chỉnh sửa nó để cổng là 443:
# 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
:
# 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
:
# 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 cert
và key
dòng key
trong file cấu hình server.conf
để chúng trỏ đến các file .crt
và .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:
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 :
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
Outputnet.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:
Outputdefault 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:
# # 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
:
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:
. . . # 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 :
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:
# Downgrade privileges after initialization (non-Windows only) user nobody group nogroup
Tìm các lệnh đặt ca
, cert
và key
. Comment các chỉ thị này vì bạn sẽ sớm thêm certificate và khóa trong chính file :
# 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
):
# 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 cipher
và auth
mà bạn đã đặt trong file /etc/openvpn/server/server.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 :
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.
; 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:
; 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:
#!/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.crt
và client1.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
Outputclient1.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 :
- WinSCP
- Cách sử dụng SFTP để truyền file an toàn bằng server từ xa
- Cách sử dụng Filezilla để truyền và quản lý file an toàn trên VPS của bạn
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 Có . 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 đó:
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
Outputupdate-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:
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:
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:
OutputLink 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.
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ó.
Đ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.
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 .
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.
Đ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:
Để 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ắ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:
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:
- Thu hồi certificate bằng lệnh
./easyrsa revoke client_name
- Tạo CRL mới
- 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ũ. - 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 6 và 11-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 .
Các tin liên quan
Cách thiết lập và cấu hình server OpenVPN trên CentOS 82020-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