Trang chủ / Chuyên đề / Cài đặt OpenVPN Server trên Ubuntu 16.04
Thứ tư, 04/05/2016 | 00:00 GMT+7

Cài đặt OpenVPN Server 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 máy tính xách tay khi kết nối với mạng không đá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 đá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 (mạng tại nhà, tại không ty, những nơi tin cậy). Lưu lượng  sẽ đi qua một Server VPN và được mã hóa an toàn.

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

OpenVPN là giải pháp VPN bảo mật (SSL) mã nguồn mở đầ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ẽ thiết lập Server OpenVPN 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ẽ đơn giản nhất có thể cho các thiết lập.

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 sẽ cần config user không phải root với cá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 thiết lập Server ban đầu Ubuntu 16.04 để thiết lập user có quyền thích hợp. Hướng dẫn bao gồm thiết lập Firewall.

Khi bạn đã sẵn sàng, hãy đăng nhập vào Server Ubuntu với tư cách là user sudo và tiếp tục.

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

Để bắt đầu, ta sẽ cài đặt OpenVPN trên Server . OpenVPN có sẵn trong kho 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 easy-rsa , dùng để tạo CA nội bộ (tổ chức phát hành chứng chỉ (certificate)), sử dụng với VPN của ta.

Để cập nhật Server 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: Thiết lập Thư mục CA

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

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

  • make-cadir ~/openvpn-ca

Di chuyển vào thư mục mới tạo để bắt đầu config CA:

  • cd ~/openvpn-ca

Bước 3: config các biến CA

Để config các giá trị mà CA của ta sẽ sử dụng, ta cần chỉnh sửa file vars trong thư mục. Mở file đó:

  • 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 chứng chỉ (certificate) của bạn sẽ được tạo. Ta chỉ cần quan tâm về một vài tham số cần thiết.

Ở cuối file, hãy tìm chỗ đặt giá trị mặc định của các trường cho chứng chỉ (certificate) mới, 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ị thành bất kỳ giá trị nào bạn muốn, đừng để trống:

~ / openvpn-ca / vars
. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="ABC City"
export KEY_ORG="Abc123"
export KEY_EMAIL="admin@example.com"
export KEY_OU="Community"

. . .

Ta cũng sẽ chỉnh sửa giá trị KEY_NAME ngay bên dưới phần này. Để đơ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 và đóng file.

Bước 4: Tạo CA (nơi phát hành chứng chỉ bảo mật)

Bây giờ, có thể sử dụng  easy-rsa để xây dựng cơ quan cấp chứng chỉ CA 

Đảm bảo rằng bạn đang ở trong thư mục CA , rồi 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 lấy đúng nguồn:

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 bằng lệnh:

  • ./clean-all

Bây giờ, ta có thể xây dựng Root CA (gốc CA) bằng lệnh:

  • ./build-ca

Thao tác này sẽ tạo khóa và chứng chỉ (certificate) của tổ chức phát hành chứng chỉ (certificate) gốc. 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 để 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ó thể sử dụng để tạo phần còn lại, các file ta cần.

Bước 5: Tạo chứng chỉ (certificate) Server, khóa và file mã hóa

Tiếp theo, ta sẽ tạo chứng chỉ (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 chứng chỉ (certificate) Server OpenVPN và cặp khóa bằng lệnh:

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 đượ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

Chấp nhận các giá trị mặc định bằng cách nhấn ENTER . Không nhập mật khẩu đối với thiết lập này. Ở phần cuối, bạn sẽ phải nhập y vào hai câu hỏi để ký và cam kết chứng chỉ (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, có thể tạo các khóa Diffie-Hellman mạnh để 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 chứng chỉ (certificate) client (client certificate) và cặp khóa

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

Ta sẽ tạo một key/client certificate duy nhất cho hướng dẫn này, nhưng nếu bạn có nhiều ứng dụng client, 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 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 key/chứng chỉ (certificate) đầu tiên.

Để tạo thông tin đăng nhập mà không cần mật khẩu (để kết nối tự động sau này), hãy sử dụng lệnh build-key như sau:

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

Còn nếu bạn muốn tạo một bộ thông tin đăng nhập được bảo vệ bằng mật khẩu, 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 mật khẩu, nhập y nếu được hỏi chấp nhận chứng chỉ (certificate).

Bước 7: config Dịch vụ OpenVPN

Tiếp theo, ta có thể bắt đầu config 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 thư mục 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, được đặt trong thư mục ~/openvpn-ca/keys khi được tạo. Ta cần di chuyển chứng chỉ (certificate) CA, chứng chỉ (certificate) Server và khóa, 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, cần sao chép và giải nén file cấu hình OpenVPN mẫu vào thư mục cấu hình để ta có thể sử dụng nó để thiết lập:

  • 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ó 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, hãy tìm phần HMAC bằng cách tìm dòng tls-auth. Bỏ dấu “ ; ” để bỏ ghi chú dòng 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ã bằng cách tìm dòng cipher . 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ỏ ghi chú dòng cipher AES-128-CBC :

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

Bên dưới phần này, thêm một dòng auth để chọn thuật toán auth HMAC, 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) Push 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 các kết nối sử dụng đường hầm (tunnel). Nếu bạn muốn sử dụng VPN để định tuyến tất cả lưu lượng truy cập, bạn có thể push setting DNS cho các client.

Để 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 “ ; ”  trước của cả hai dòng để bỏ ghi chú:

/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 để sử dụng đường hầm (tunnel) VPN làm 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, bạn có thể thay đổi tùy chọn port. Cổng 443, nếu chưa dùng, là một lựa chọn phổ biến vì nó thường được cho phép thông qua các Firewall.

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

Nếu cần (ví dụ giao thức UDP bị chặn bởi firewall) thì ta cũng có thể thay đổi giao thức proto từ UDP thành TCP:

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

Nếu 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 trên 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 certkey dòng key 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 hoàn tất, hãy lưu và đóng file.

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

Tiếp theo, ta điều chỉnh thông tin mạng của Server để OpenVPN có thể định tuyến 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 cần thiết đối với chức năng mà ta muốn Server VPN 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 và đóng 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 thiết lập Server ban đầu Ubuntu 16.04, sẽ có Firewall UFW. Ta cần Firewall trong hướng dẫn này để xử lý một số lưu lượng truy cập vào Server. Ta cần sửa đổi file luật firewall để thiết lập giả mạo, iptables có thể cung cấp 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 giả mạo, ta cần tìm Interface (card) mạng công cộng của máy tính . Để làm điều này, hãy nhập:

  • ip route | grep default

Ví dụ: kết quả này hiển thị Interface (card) 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ó Interface (card) được liên kết với route mặc định, hãy mở file /etc/ufw/before.rules để thêm cấu hình có liên quan:

  • sudo nano /etc/ufw/before.rules

File này xử lý cấu hình cần được đặt trước khi các luật UFW thông thường. Về đầu file, thêm các dòng bên dưới, để đặt policy mặc định cho chuỗi POSTROUTING trong bảng nat và giả mạo địa chỉ (masquerade) lưu lượng đến từ VPN:

Lưu ý : Hãy nhớ thay thế wlp11s0 trong dòng -A POSTROUTING bên dưới bằng Interface (card) 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 và đóng 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 và đóng 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 Firewall để cho phép lưu lượng truy cập vào OpenVPN.

Nếu sử dụng cổng và giao thức trong file /etc/openvpn/server.conf, thì ta cần mở firewall cho giao thức UDP đến cổng 1194 như khai báo trong file. Nếu có sửa đổi cổng, giao thức trong file đó thì cho phép cổng, giao thức tương ứng đi qua firewall.

Ta cũng sẽ thêm cổng SSH trong trường hợp quên thêm nó khi cài đặt ban đầu:

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

Tiếp theo, ta có thể restart UFW để tải các thay đổi từ các file mà đã sửa:

  • sudo ufw disable
  • sudo ufw enable

Server đã được config để xử lý lưu lượng OpenVPN.

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

Vậy ta cũng đã sẵn sàng để bắt đầu dịch vụ OpenVPN trên Server, 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, file cấu hình cho Server là /etc/openvpn/server.conf, nên ta sẽ thêm @server vào dòng lệnh:

  • sudo systemctl start openvpn@server

Kiểm tra xem dịch vụ đã start chưa:

  • sudo systemctl status openvpn@server

Nếu mọi thứ diễn ra tốt đẹp, kết quả 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 Interface (card) OpenVPN tun0 có khả dụng không bằng lệnh:

  • ip addr show tun0

Bạn sẽ thấy một Interface được config:

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 đúng, 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ấu hình client

Tiếp theo, ta cần thiết lập 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 thư mục cấu hình client

Tạo cấu trúc thư mục trong thư mục 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, ta nên khóa các quyền trong thư mục bên trong:

  • chmod 700 ~/client-configs/files

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

Tiếp theo, sao chép cấu hình client mẫu vào thư mục để sử dụng làm cấu hình cơ sở:

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

Mở file mới này để soạn thảo:

  • 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ỏ client đến địa chỉ Server OpenVPN. Đâ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 đã 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 khớp 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 chứng chỉ (certificate) và khóa trong 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 cipherauth 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 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

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

Lưu file khi đã hoàn tất.

Tạo tập lệnh 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 chứng chỉ (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 thư mục ~/client-configs/files .

Tạo và mở file có tên make_config.sh trong thư mục ~/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 và đóng 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 client certificate và khóa được gọi là client1.crtclient1.key tương ứng bằng cách chạy lệnh ./build-key client1 trong 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 vào ~/client-configs thư mục 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 thư mục ~/client-configs/files :

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

Chuyển cấu hình sang client

Ta cần chuyển file cấu hình client sang thiết bị sẽ sử dụng openvpn làm client, có thể là máy tính Linux, Window, MACos, Android...
Bạn có thể thực hiện điều này bằng các công cụ copy file dễ dàng, như SCP, SSH, FTP... và đưa file cấu hình vào vị trí để có thể chạy, theo các hướng dẫn sau đây.

Bước 12: Cài đặt 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, tùy thuộc lựa chọn bạn muốn.

Kết nối OpenVPN sẽ được ghi trong file có đuôi .ovpn . Trong ví dụ của ta, là client1.ovpn cho file khách hàng đầu tiên đã tạo.

Trên Window

Cài đặt

Client OpenVPN dành cho Windows có thể tải trên trang Tải xuống của OpenVPN . Chọn phiên bản trình cài đặt thích hợp cho phiên bản Windows của bạn.

OpenVPN cần 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 khởi chạy OpenVPN, nó sẽ tự động xem file trong folder trên để thực thi.

OpenVPN phải được chạy với user có quyền admin. Để thực hiện việc này mà không cần phải nhấp chuột phải và chọn Run As Administrator mỗi khi sử dụng VPN, bạn có thể config điều này từ tài khoản admin.

Để đặt ứng dụng OpenVPN luôn chạy với quyền admin, hãy nhấp chuột phải vào biểu tượng OpenVPn vào Properties, và chọn như hình dưới, check box vào Run ... administrator:

Kết nối

Mỗi lần bạn khởi chạy OpenVPN GUI, Windows sẽ hỏi bạn có muốn cho phép chương trình thực hiện các thay đổi không. Nhấp vào Yes. Khi bắt đầu chạy client OpenVPN sẽ đặt Icon vào System tray (Cạnh đồng hồ), để VPN có thể được ta click kết nối hay ngắt kết nối khi cần; nó chưa tạo kết nối VPN cho đến khi ta click chọn file config để chạy ở Icon đó.

Sau khi OpenVPN được khởi động, hãy bắt đầu kết nối bằng cách vào Icon ở System tray (cạnh đồng hồ) và nhấp chuột phải vào icon đó, nhấn Connect, hoặc nếu có các Profile khác, giả sử là  client1 ở đầu menu (đó là profile client1.ovpn của ta) thì click vào profile đó để connect.



Một cửa sổ kết nối sẽ mở ra hiển thị kết quả kết nối.



Ngắt kết nối khỏi VPN theo cách tương tự: Vào Icon tray như hình ở trên, chọn Disconnect.

HĐH MAC - OS X

Cài đặt

Tunnelblick là ứng dụng client OpenVPN mã nguồn mở miễn phí dành cho Mac OS X. Bạn có thể tải từ trang Tải xuống Tunnelblick . Nhấp đúp vào file .dmg tải xuống và cài đặt.

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ể trả lời Không để Tunnelblick kết thúc. Mở cửa sổ Finder và nhấp đúp vào client1.ovpn . Tunnelblick sẽ cài đặt profile client. Quyền quản trị là bắt buộc.

Kết nối

Khởi chạy Tunnelblick bằng cách nhấp đúp vào Tunnelblick trong thư mục Ứng dụng . Khi Tunnelblick đã được khởi 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 để bắt đầu kết nối VPN. Chọn kết nối client1 .

Linux

Cài đặt

Nếu đ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 setup.

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 setup 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 đã có:

  • 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ấ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 nhóm có sẵn:

client1.ovpn
group nobody

Lưu và đóng tập tin.

Giờ đây, bạn có thể kết nối với VPN với lệnh:

  • sudo openvpn --config client1.ovpn

Sẽ kết nối bạn với Server của bạn.

iOS / IPhone

Cài đặt

Từ iTunes App Store, tìm và cài OpenVPN Connect , ứng dụng client OpenVPN của iOS. Kết nối IOS với máy tính PC để đưa file client.opvn đã tạo vào Iphone IOS.

Bằng cách Mở iTunes trên máy tính và nhấp vào iPhone > ứng dụng . Cuộn xuống cuối phần Chia sẻ file và nhấp vào ứng dụng OpenVPN. Cửa sổ trống ở bên phải, OpenVPN Documents , là để chia sẻ file. Kéo file .ovpn vào cho OpenVPN.

iTunes hiển thị cấu hình VPN đã sẵn sàng để tải trên iPhone

Rồi  ta khởi chạy ứng dụng OpenVPN trên iPhone. Sẽ có một thông báo một profile mới đã sẵn sàngp. Nhấn vào dấu cộng màu xanh lục để vào nó.

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

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 (On) . Ngắt kết nối bằng cách trượt nút tương tự sang Tắt (Off).

 

Ghi chú
Không thể sử dụng nút bật tắt VPN trong Cài đặt để kết nối với VPN. khi đó ta 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

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 vào thiết bị 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 vào, hoặc copy qua thẻ nhớ SD.

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

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

Sau đó, điều hướng đế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

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

Ứ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

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ả về địa chỉ IP được chỉ định bởi nhà cung cấp dịch vụ internet của bạn. Để kiểm tra cài đặt DNS của bạn thông qua 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 refresh trình duyệt. Địa chỉ IP mới sẽ là IP Server VPN sẽ hiện ra, vậy bạn đã được đổi IP Public. Một lần nữa, 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 rằng bạn hiện đang sử dụng trình phân giải DNS do VPN của bạn có.

Kết luận

Xin chúc mừng! Với VPN đã chạ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 nguy cơ bảo mật. Ngoài phục vụ thiết bị Cá nhân, thì OpenVPN cũng phù hợp với Quản trị hệ thống server , cài đặt trên các Server để tạo ra mạng LAN nội bộ kết nối bất kỳ server nào có kết nối Internet với nhau, nhằm quản trị hệ thống, qui hoạch dễ dàng.


Tags: Ubuntu

Các tin trước

Cài đặt JAVA với Apt-Get trên Ubuntu 16.04 2016-04-23

Cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 16.04 2016-04-21

Cài đặt đăng nhập với ssh và key authentication trên Ubuntu 16.4 2016-04-21

Sử dụng UFW căn bản, các luật firewall phổ biến 2015-08-20

Nâng cấp lên Mysql 5.7 2015-04-20

Cấu hình xác thực bằng ssh-key trên server Linux 2014-10-20

Toàn tập làm việc với Openssl và chứng chỉ số 2014-09-12

Cài đặt Nginx trên CentOS 7 2014-07-22

Cài đặt Linux Apache MySQL PHP (LAMP) On CentOS 7 2014-07-21

Cài đặt Bảo mật cơ bản cho CentOS 7 2014-07-21