Thứ tư, 04/05/2016 | 00:00 GMT+7

Cách thiết lập server OpenVPN trên Ubuntu 16.04

Bạn muốn 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 của khách sạn hoặc quán cà phê? Mạng riêng ảo (VPN) cho phép bạn truy cập các mạng không tin cậy một cách riêng tư và an toàn như thể bạn đang sử dụng mạng riêng. Lưu lượng xuất phát từ server VPN và tiếp tục hành trình đến đích.

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ể vượt qua các hạn chế đị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 mạng không tin cậy .

OpenVPN là giải pháp VPN Lớp cổng bảo mật (SSL) 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, ta sẽ cài đặt server OpenVPN trên Server và sau đó cấu hình quyền truy cập vào nó từ Windows, OS X, iOS và Android. Hướng dẫn này sẽ giữ cho các bước cài đặt và cấu hình đơn giản nhất có thể cho các cài đặt này.

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

Để hoàn thành hướng dẫn này, bạn cần truy cập vào server Ubuntu 16.04.

Bạn cần phải cấu hình user không phải root với các quyền sudo trước khi bắt đầu hướng dẫn này. Bạn có thể làm theo hướng dẫn cài đặt server ban đầu Ubuntu 16.04 của ta để cài đặt user có quyền thích hợp. Hướng dẫn được liên kết cũng sẽ cài đặt tường lửa , mà ta sẽ giả định là được đặt trong hướng dẫn này.

Khi đã sẵn sàng để bắt đầu, hãy đăng nhập vào server Ubuntu với quyền là user sudo của bạn và tiếp tục bên dưới.

Bước 1: Cài đặt OpenVPN

Để bắt đầu, ta sẽ cài đặt OpenVPN trên server của bạn . OpenVPN có sẵn trong repository lưu trữ mặc định của Ubuntu, vì vậy ta có thể sử dụng apt để cài đặt. Ta cũng sẽ cài đặt gói easy-rsa , gói này sẽ giúp ta cài đặt CA nội bộ (tổ chức phát hành certificate ) để sử dụng với VPN của ta .

Để cập nhật index gói của server của bạn và cài đặt loại gói cần thiết:

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

Phần mềm cần thiết hiện đã có trên server , sẵn sàng được cấu hình.

Bước 2: Cài đặt Thư mục CA

OpenVPN là một VPN TLS / SSL. Điều này nghĩa là nó sử dụng các certificate để mã hóa lưu lượng giữa server và client . Để cấp certificate tin cậy , ta cần cài đặt tổ chức phát hành certificate đơn giản (CA) của riêng mình.

Để bắt đầu, ta có thể sao chép folder mẫu easy-rsa vào folder chính bằng lệnh make-cadir :

  • make-cadir ~/openvpn-ca

Di chuyển vào folder mới tạo để bắt đầu cấu hình CA:

  • cd ~/openvpn-ca

Bước 3: Cấu hình các biến CA

Để cấu hình các giá trị mà CA của ta sẽ sử dụng, ta cần chỉnh sửa file vars trong folder . Mở file đó ngay bây giờ trong editor của bạn:

  • nano vars

Bên trong, bạn sẽ tìm thấy một số biến có thể được điều chỉnh để xác định cách các certificate của bạn sẽ được tạo. Ta chỉ cần lo lắng về một vài trong số này.

Ở cuối file , hãy tìm cài đặt đặt giá trị mặc định của trường cho certificate mới. Nó trông giống như sau :

~ / openvpn-ca / vars
. . .  export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain" export KEY_OU="MyOrganizationalUnit"  . . . 

Chỉnh sửa các giá trị màu đỏ thành bất kỳ giá trị nào bạn muốn, nhưng đừng để trống:

~ / openvpn-ca / vars
. . .  export KEY_COUNTRY="US" export KEY_PROVINCE="NY" export KEY_CITY="New York City" export KEY_ORG="DigitalOcean" export KEY_EMAIL="admin@example.com" export KEY_OU="Community"  . . . 

Trong khi ta ở đây, ta cũng sẽ chỉnh sửa giá trị KEY_NAME ngay bên dưới phần này, sẽ điền trường chủ đề. Để đơn giản, ta sẽ gọi nó là server trong hướng dẫn này:

~ / openvpn-ca / vars
export KEY_NAME="server" 

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

Bước 4: Xây dựng Tổ chức phát hành certificate

Bây giờ, ta có thể sử dụng các biến ta đặt và các tiện ích easy-rsa để xây dựng cơ quan cấp certificate của ta .

Đảm bảo bạn đang ở trong folder CA của bạn , sau đó nguồn file vars mà bạn vừa chỉnh sửa:

  • cd ~/openvpn-ca
  • source vars

Bạn sẽ thấy những điều sau nếu nó được cung cấp đúng nguồn root :

Output
NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys

Đảm bảo rằng ta đang hoạt động trong một môi trường sạch sẽ bằng lệnh :

  • ./clean-all

Bây giờ, ta có thể xây dựng CA root của bạn bằng lệnh :

  • ./build-ca

Thao tác này sẽ bắt đầu quá trình tạo khóa và certificate của tổ chức phát hành certificate root . Vì ta đã điền vào file vars , nên tất cả các giá trị sẽ được điền tự động. Chỉ cần nhấn ENTER qua dấu nhắc để xác nhận các lựa chọn:

Output
Generating a 2048 bit RSA private key ..........................................................................................+++ ...............................+++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [US]: State or Province Name (full name) [NY]: Locality Name (eg, city) [New York City]: Organization Name (eg, company) [DigitalOcean]: Organizational Unit Name (eg, section) [Community]: Common Name (eg, your name or your server's hostname) [DigitalOcean CA]: Name [server]: Email Address [admin@email.com]:

Bây giờ ta có một CA được dùng để tạo phần còn lại của các file ta cần.

Bước 5: Tạo certificate server , khóa và file mã hóa

Tiếp theo, ta sẽ tạo certificate server và cặp khóa, cũng như một số file bổ sung được sử dụng trong quá trình mã hóa.

Bắt đầu bằng cách tạo certificate server OpenVPN và cặp khóa. Ta có thể làm điều này bằng lệnh :

Lưu ý : Nếu bạn chọn tên không phả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 được tạo vào directroy /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.

  • ./build-key-server server

, các dấu nhắc sẽ có giá trị mặc định dựa trên đối số mà ta vừa chuyển vào ( server ) và nội dung của file vars mà ta đã lấy nguồn.

Vui lòng chấp nhận các giá trị mặc định bằng cách nhấn ENTER . Không nhập password thách thức đối với cài đặt này. Ở phần cuối, bạn sẽ phải nhập y vào hai câu hỏi để ký và commit certificate :

Output
. . . Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated

Tiếp theo, ta sẽ tạo một vài mục khác. Ta có thể tạo các khóa Diffie-Hellman mạnh mẽ để sử dụng trong quá trình trao đổi khóa bằng lệnh :

  • ./build-dh

Quá trình này có thể mất vài phút để hoàn thành.

Sau đó, ta có thể tạo chữ ký HMAC để tăng cường khả năng xác minh tính toàn vẹn TLS của server :

  • openvpn --genkey --secret keys/ta.key

Bước 6: Tạo certificate khách hàng và cặp khóa

Tiếp theo, ta có thể tạo certificate ứng dụng client và cặp khóa. Mặc dù điều này có thể được thực hiện trên client và sau đó được ký bởi server / CA vì mục đích bảo mật, đối với hướng dẫn này, ta sẽ tạo khóa đã ký trên server vì mục đích đơn giản.

Ta sẽ tạo một khóa khách hàng / certificate cho hướng dẫn này, nhưng nếu bạn có nhiều khách hàng, bạn có thể lặp lại quy trình này nhiều lần tùy thích. Chuyển một giá trị duy nhất vào tập lệnh cho mỗi ứng dụng client .

Vì bạn có thể quay lại bước này sau đó, ta sẽ lấy lại nguồn của file vars . Ta sẽ sử dụng client1 làm giá trị cho cặp khóa / certificate đầu tiên của ta cho hướng dẫn này.

Để tạo thông tin xác thực mà không cần password , để hỗ trợ kết nối tự động, hãy sử dụng lệnh build-key như sau:

  • cd ~/openvpn-ca
  • source vars
  • ./build-key client1

Thay vào đó, nếu bạn muốn tạo một bộ thông tin xác thực được bảo vệ bằng password , hãy sử dụng lệnh build-key-pass :

  • cd ~/openvpn-ca
  • source vars
  • ./build-key-pass client1

, các giá trị mặc định sẽ được điền, vì vậy bạn chỉ cần nhấn ENTER để tiếp tục. Để trống password thử thách và đảm bảo nhập y cho dấu nhắc hỏi có nên ký và commit certificate hay không.

Bước 7: Cấu hình Dịch vụ OpenVPN

Tiếp theo, ta có thể bắt đầu cấu hình dịch vụ OpenVPN bằng thông tin đăng nhập và file ta đã tạo.

Sao chép file vào Thư mục OpenVPN

Để bắt đầu, ta cần sao chép các file ta cần vào folder cấu hình /etc/openvpn .

Ta có thể bắt đầu với tất cả các file mà ta vừa tạo. Chúng được đặt trong folder ~/openvpn-ca/keys khi chúng được tạo. Ta cần di chuyển certificate CA, certificate và khóa server của ta , chữ ký HMAC và file Diffie-Hellman:

  • cd ~/openvpn-ca/keys
  • sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn

Tiếp theo, ta cần sao chép và extract file cấu hình OpenVPN mẫu vào folder cấu hình để ta có thể sử dụng nó làm cơ sở cho cài đặt của bạn :

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

Điều chỉnh cấu hình OpenVPN

Bây giờ các file của ta đã có sẵn, ta có thể sửa đổi file cấu hình server :

  • sudo nano /etc/openvpn/server.conf

Cấu hình cơ bản

Trước tiên, tìm phần HMAC bằng cách tìm chỉ thị tls-auth . Bỏ dấu “ ; ”Để bỏ comment tls-auth :

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

Tiếp theo, tìm phần về mật mã mật mã bằng cách tìm các dòng cipher comment . Mật mã AES-128-CBC cung cấp mức độ mã hóa tốt và được hỗ trợ tốt. Bỏ dấu “ ; ”Để bỏ comment cipher AES-128-CBC :

/etc/openvpn/server.conf
cipher AES-128-CBC 

Dưới đây, thêm một dòng auth thực để chọn thuật toán thông báo tin nhắn HMAC. Đối với điều này, SHA256 là một lựa chọn tốt:

/etc/openvpn/server.conf
auth SHA256 

Cuối cùng, tìm cài đặt usergroup và xóa “ ; ”Ở đầu để bỏ ghi chú những dòng đó:

/etc/openvpn/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 hai máy, 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 truy cập của bạn , bạn có thể cần đẩy cài đặt DNS cho các client .

Bạn có thể làm điều này, bỏ ghi chú một số chỉ thị sẽ cấu hình các client để chuyển hướng tất cả lưu lượng truy cập web thông qua VPN. Tìm phần redirect-gateway và xóa dấu chấm phẩy “ ; ”Từ đầu dòng redirect-gateway để bỏ ghi chú:

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

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

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

Điều này sẽ hỗ trợ khách hàng trong việc 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ì điều này thường được cho phép thông qua các luật firewall .

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

Thường thì nếu giao thức cũng sẽ bị hạn chế đối với cổng đó. Nếu vậy, hãy thay đổi proto từ UDP thành TCP:

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

Nếu bạn không có nhu cầu sử dụng cổng khác, tốt nhất nên để hai cài đặt này làm mặc định.

(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 ./build-key-server trước đó, hãy sửa đổi cert và dòng key mà bạn thấy để trỏ đến các file .crt.key thích hợp. Nếu bạn sử dụng server mặc định, điều này phải được đặt chính xác:

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

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

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

Tiếp theo, ta cần điều chỉnh một số khía cạnh của mạng của server để OpenVPN có thể định tuyến lưu lượng một cách chính xác.

Cho phép chuyển tiếp IP

Đầu tiên, ta cần cho phép server chuyển tiếp lưu lượng truy cập. Điều này khá cần thiết đối với chức năng mà ta muốn server VPN của bạn cung cấp.

Ta có thể điều chỉnh cài đặt này bằng cách sửa đổi file /etc/sysctl.conf :

  • sudo nano /etc/sysctl.conf

Bên trong, hãy tìm dòng đặt net.ipv4.ip_forward . Xóa ký tự “ # ” ở đầu dòng để bỏ ghi chú cài đặt đó:

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

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

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

  • sudo sysctl -p

Điều chỉnh các luật UFW để giả mạo kết nối client

Nếu bạn đã làm theo hướng dẫn cài đặt server ban đầu Ubuntu 16.04 trong yêu cầu , bạn nên có firewall UFW. Dù bạn có sử dụng firewall để chặn lưu lượng truy cập không mong muốn hay không (điều mà bạn hầu như luôn làm), ta cần firewall trong hướng dẫn này để thao tác một số lưu lượng truy cập vào server . Ta cần sửa đổi file luật để cài đặt giả mạo, một khái niệm iptables cung cấp NAT động nhanh chóng để định tuyến chính xác các kết nối client .

Trước khi ta mở file cấu hình firewall để thêm giả mạo, ta cần 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 | grep default

Giao diện công khai của bạn phải theo từ "dev". Ví dụ: kết quả này hiển thị giao diện có tên wlp11s0 , được đánh dấu bên dưới:

Output
default via 203.0.113.1 dev wlp11s0 proto static metric 600

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

Tệp này xử lý cấu hình cần được đặt 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:

Lưu ý : Hãy nhớ thay thế wlp11s0 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 wlp11s0 (change to the interface you discovered!) -A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -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.

Ta cần nói với 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, ta sẽ mở file /etc/default/ufw :

  • sudo nano /etc/default/ufw

Bên trong, tìm chỉ thị DEFAULT_FORWARD_POLICY . Ta sẽ 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.

Mở Cổng OpenVPN và Bật các Thay đổi

Tiếp theo, ta sẽ đ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 tại đây.

Ta cũng sẽ thêm cổng SSH trong trường hợp bạn quên thêm nó khi làm theo hướng dẫn yêu cầu :

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

Bây giờ, ta có thể tắt và bật lại UFW để tải các thay đổi từ tất cả các file mà ta đã sửa đổi:

  • sudo ufw disable
  • sudo ufw enable

Server của ta hiện đã được cấu hình để xử lý chính xác lưu lượng OpenVPN.

Bước 9: Khởi động và kích hoạt dịch vụ OpenVPN

Cuối cùng thì ta cũng đã sẵn sàng để bắt đầu dịch vụ OpenVPN trên server của bạn . Ta có thể làm điều này bằng cách sử dụng systemd.

Ta cần khởi động server OpenVPN bằng cách chỉ định tên file cấu hình của ta dưới dạng biến version sau tên file đơn vị systemd. Tệp cấu hình cho server của ta được gọi là /etc/openvpn/ server .conf , vì vậy ta sẽ thêm @server vào cuối file đơn vị của ta khi gọi nó:

  • sudo systemctl start openvpn@server

Kiểm tra kỹ xem dịch vụ đã chạy hay chưa bằng lệnh :

  • sudo systemctl status openvpn@server

Nếu mọi thứ diễn ra tốt đẹp, kết quả của bạn sẽ trông giống như sau:

Output
● openvpn@server.service - OpenVPN connection to server Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta Main PID: 5856 (openvpn) Tasks: 1 (limit: 512) CGroup: /system.slice/system-openvpn.slice/openvpn@server.service └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip route add 10.8.0.0/24 via 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server[5856]: GID set to nogroup May 03 15:30:05 openvpn2 ovpn-server[5856]: UID set to nobody May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link local (bound): [undef] May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link remote: [undef] May 03 15:30:05 openvpn2 ovpn-server[5856]: MULTI: multi_init called, r=256 v=256 May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0 May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL LIST May 03 15:30:05 openvpn2 ovpn-server[5856]: Initialization Sequence Completed

Bạn cũng có thể kiểm tra xem giao diện OpenVPN tun0 có khả dụng không bằng lệnh :

  • ip addr show tun0

Bạn sẽ thấy một giao diện được cấu hình :

Output
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 link/none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 valid_lft forever preferred_lft forever

Nếu mọi thứ diễn ra tốt đẹp, hãy kích hoạt dịch vụ để nó tự động khởi động khi server khởi động :

  • sudo systemctl enable openvpn@server

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

Tiếp theo, ta cần cài đặt một hệ thống cho phép ta tạo các file cấu hình client một cách dễ dàng.

Tạo cấu trúc folder cấu hình client

Tạo cấu trúc folder trong folder chính của bạn để lưu trữ các file :

  • mkdir -p ~/client-configs/files

Vì các file cấu hình client của ta sẽ có các khóa client được nhúng, ta nên khóa các quyền trên folder bên trong của ta :

  • chmod 700 ~/client-configs/files

Tạo cấu hình cơ sở

Tiếp theo, hãy sao chép một cấu hình client mẫu vào folder của ta để sử dụng làm cấu hình cơ sở của ta :

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

Mở file mới này trong editor của bạn:

  • nano ~/client-configs/base.conf

Bên trong, ta cần thực hiện một vài điều chỉnh.

Đầu tiên, xác định vị trí chỉ thị remote . Điều này trỏ khách hàng đến địa chỉ server OpenVPN của ta . Đây phải là địa chỉ IP công cộng của server OpenVPN của bạn. Nếu bạn đã thay đổi cổng mà server OpenVPN đang nghe, hãy 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 server_IP_address 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 “ ; ”:

~ / 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ì ta sẽ 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 

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

~ / client-configs / base.conf
cipher AES-128-CBC auth SHA256 

Tiếp theo, thêm chỉ thị key-direction ở đâu đó trong file . Điều này phải được đặt thành “1” để hoạt động với server :

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

Cuối cùng, thêm một vài dòng comment . Ta muốn bao gồm chúng với mọi cấu hình, nhưng chỉ nên bật chúng cho các client Linux có file /etc/openvpn/update-resolv-conf . Tập lệnh này sử dụng trình 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 

Nếu client của bạn đang chạy Linux và có file /etc/openvpn/update-resolv-conf , bạn nên bỏ ghi chú những dòng này khỏi file cấu hình client OpenVPN đã tạo.

Lưu file khi bạn hoàn thành.

Tạo tập lệnh tạo cấu hình

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

Tạo và mở một file có tên make_config.sh trong folder ~/client-configs :

  • nano ~/client-configs/make_config.sh

Bên trong, dán tập lệnh sau:

~ / client-configs / make_config.sh
#!/bin/bash  # First argument: Client identifier  KEY_DIR=~/openvpn-ca/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-auth>') \     ${KEY_DIR}/ta.key \     <(echo -e '</tls-auth>') \     > ${OUTPUT_DIR}/${1}.ovpn 

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

Đánh dấu file là có thể thực thi bằng lệnh :

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

Bước 11: Tạo cấu hình client

Bây giờ, ta có thể dễ dàng tạo các file cấu hình client .

Nếu bạn đã làm theo hướng dẫn, bạn đã tạo certificate client và khóa được gọi là client1.crtclient1.key tương ứng bằng cách chạy lệnh ./build-key client1 ở bước 6. Ta có thể tạo cấu hình cho các thông tin đăng nhập này bằng cách chuyển sang ~/client-configs folder và sử dụng tập lệnh ta đã tạo:

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

Nếu mọi thứ suôn sẻ, ta sẽ có một file client1.ovpn trong folder ~/client-configs/files :

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

Chuyển cấu hình sang thiết bị khách

Ta cần chuyển file cấu hình client sang thiết bị có liên quan. 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ẽ tùy thuộc vào lựa chọn của bạn và hệ điều hành của thiết bị, nhưng bạn muốn ứng dụng 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 sử dụng ví dụ client1.ovpn của ta . Lệnh này có thể được chạy từ máy tính local của bạn (OS X hoặc Linux). Nó đặt file .ovpn 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 sang máy tính local :

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

Bây giờ, ta sẽ thảo luận về cách cài đặt cấu hình VPN ứng dụng client trên Windows, OS X, iOS và Android. Không có hướng dẫn nào trong số các hướng dẫn dành cho khách hàng này phụ thuộc vào nhau, vì vậy, vui lòng bỏ qua phần nào phù hợp với bạn.

Kết nối OpenVPN sẽ được gọi là bất kỳ thứ gì bạn đặt tên cho file .ovpn . Trong ví dụ của ta , điều này nghĩa là kết nối sẽ được gọi là client1.ovpn cho file khách hàng đầu tiên ta tạo.

các cửa sổ

Đang cài đặt

Ứng dụng khách OpenVPN dành cho Windows có thể được tìm thấy trên trang Download của OpenVPN . Chọn version trình cài đặt thích hợp cho version Windows của bạn.

Ghi chú
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 xem profile và làm cho nó có sẵn.

OpenVPN phải được chạy với quyền administrator mỗi khi nó được sử dụng, ngay cả bởi 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 có thể đặt trước điều này, nhưng điều này phải được thực hiện 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 . Việc chạy ứng dụng client OpenVPN chỉ đặt applet vào khay hệ thống để VPN có thể được kết nối và ngắt kết nối 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 ta ) 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 .

OS X

Đang cài đặt

Tunnelblick là ứng dụng client OpenVPN open-souce miễn phí dành cho Mac OS X. Bạn có thể download hình ảnh đĩa mới nhất từ trang Download 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. Có thể dễ dàng hơn khi trả lời Không và để Tunnelblick kết thúc. 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 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 Kết nối để bắt đầu kết nối VPN. Chọn kết nối client1 .

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-get update
  • sudo apt-get 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 yum install epel-release
  • sudo yum install openvpn

Cấu hình

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 :

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

Tiếp theo, chỉnh sửa file cấu hình client OpenVPN mà bạn đã chuyển:

  • nano client1.ovpn

Bỏ ghi chú ba dòng ta đã đặt để điều chỉnh cài đặt DNS nếu bạn có thể tìm thấy file update-resolv-conf :

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 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 .

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 server của bạn.

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.

Việc hoàn tất quá trình chuyển bằng iTunes sẽ được trình bày ở đâ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. Sẽ có một thông báo rằng một profile 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 .

Ghi chú
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.

Cấu .ovpn có thể được chuyển bằng cách kết nối thiết bị Android với máy tính của bạn bằng USB và sao chép file qua. 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 để 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 /sdcard/Download/ ) và chọn file . Ứng dụng sẽ ghi chú rằng profile đã được nhập.

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

Đang kết nối

Để kết nối, chỉ cần nhấn vào nút Kết nối . Bạn sẽ được hỏi liệu bạn có tin tưởng ứng dụng OpenVPN hay không. Chọn OK để bắt đầu kết nối. Để ngắt kết nối khỏi VPN, hãy quay lại ứng dụng OpenVPN và chọn Ngắt kết nối .

Ứng dụng OpenVPN Android đã sẵn sàng kết nối với VPN

Bước 13: Kiểm tra kết nối VPN của bạn

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. Đị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.Đó 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 14: 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 nhập folder CA của bạn và nguồn lại file vars :

  • cd ~/openvpn-ca
  • source vars

Tiếp theo, gọi lệnh revoke-full bằng cách sử dụng tên client mà bạn muốn thu hồi:

  • ./revoke-full client3

Điều này sẽ hiển thị một số kết quả , kết thúc bằng error 23 . Điều này là bình thường và quá trình này lẽ ra đã tạo thành công thông tin thu hồi cần thiết, được lưu trữ trong một file có tên crl.pem trong folder con keys .

Chuyển file này vào folder cấu hình /etc/openvpn :

  • sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn

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

  • sudo nano /etc/openvpn/server.conf

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

/etc/openvpn/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

Bây giờ client sẽ có 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. Tạo danh sách thu hồi certificate mới bằng cách tìm nguồn cung cấp file vars trong folder ~/openvpn-ca và sau đó gọi tập lệnh revoke-full trên tên client .
  2. Sao chép danh sách thu hồi certificate mới vào folder /etc/openvpn để overrides lên danh sách cũ.
  3. Khởi động lại dịch vụ OpenVPN.

Quy trình này được dùng để 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

Xin chúc mừng! Như vậy, bạn đang duyệt qua internet một cách an toàn, bảo vệ danh tính, vị trí và lưu lượng truy cập của bạn khỏi những kẻ rình mò và kiểm duyệt.

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


Tags:

Các tin liên quan

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
Cách cấu hình và kết nối với server OpenVPN riêng trên FreeBSD 10.1
2015-04-14
Cách chạy OpenVPN trong Docker Container trên Ubuntu 14.04
2015-02-02
Cách thiết lập server OpenVPN trên Ubuntu 14.04
2015-01-28
Cách cài đặt và cấu hình server truy cập OpenVPN trên CentOS 6.5
2014-04-04
Cách bảo mật lưu lượng truy cập giữa các VPS bằng OpenVPN
2013-09-26
Cách thiết lập và cấu hình server OpenVPN trên Debian 6
2013-05-03
Cách thiết lập và cấu hình server OpenVPN trên CentOS 6
2013-05-02