Cài OpenVPN cho Ubuntu

OpenVPN là protocol VPN được khuyên dùng vì độ bảo mật cao. Trong bài này, tôi sẽ hướng dẫn cài một OpenVPN server để dùng cho mục đích cá nhân (vượt tường lửa chẳng hạn).

Có 3 cách cài OpenVPN. Một là cài thủ công. Hai là sử dụng đoạn shell script có sẵn. Ba là dùng Docker. Cách thứ nhất quá rườm rà nên tôi chỉ trình bày hai cách còn lại.

Dùng shell script có sẵn

Đầu tiên, ta dùng wget để lấy về file script:

wget https://git.io/vpn -O openvpn-install.sh

https://git.io/vpn là link rút gọn của file shell script trên GitHub. Ngoài ra, ta có thể dùng file script tương tự cũng trên GitHub.

Sau đó, ta gán permission cho phép chạy file script:

sudo chmod +x openvpn-install.sh

Cuối cùng, ta chạy đoạn script:

sudo ./openvpn-install.sh

Trong lúc cài, file script sẽ hỏi thông tin để cấu hình OpenVPN server.

Welcome to this OpenVPN "road warrior" installer!

I need to ask you a few questions before starting the setup.
You can leave the default options and just press enter if you are ok with them.

First, provide the IPv4 address of the network interface you want OpenVPN
listening to.
IP address: 192.168.1.2

Which protocol do you want for OpenVPN connections?
   1) UDP (recommended)
   2) TCP
Protocol [1-2]: 1

What port do you want OpenVPN listening to?
Port: 1194

Which DNS do you want to use with the VPN?
   1) Current system resolvers
   2) 1.1.1.1
   3) Google
   4) OpenDNS
   5) Verisign
DNS [1-5]: 2

Finally, tell me your name for the client certificate.
Please, use one word only, no special characters.
Client name: client

Okay, that was all I needed. We are ready to set up your OpenVPN server now.
Press any key to continue...

Khi script chạy xong, nó tạo ra file cấu hình OpenVPN có đuôi .ovpn. File này để client kết nối đến server. Ta copy file này về máy bằng lệnh sau:

scp [email protected]:~/client.ovpn .

Dùng Docker

1. Đặt tên cho container volume:

OVPN_DATA="ovpn-data-example"

2. Chạy container:

docker volume create --name $OVPN_DATA

docker run -v $OVPN_DATA:/etc/openvpn \
    --log-driver=none \
    --rm kylemanna/openvpn \
    ovpn_genconfig \
    -u udp://192.168.1.1

docker run -v $OVPN_DATA:/etc/openvpn \
    --log-driver=none \
    --rm -it kylemanna/openvpn \
    ovpn_initpki

Bạn nhớ thay 192.168.1.1 bằng IP của server.

Bạn sẽ được yêu cầu nhập passphrase cho private key.

3. Chạy OpenVPN server:

docker run -v $OVPN_DATA:/etc/openvpn -d \
    -p 1194:1194/udp \
    --cap-add=NET_ADMIN \
    kylemanna/openvpn

4. Tạo certificate cho client:

docker run -v $OVPN_DATA:/etc/openvpn \
    --log-driver=none \
    --rm -it kylemanna/openvpn \
    easyrsa \
    build-client-full \
    vpnclient nopass

5. Tạo file cấu hình OpenVPN cho client:

docker run -v $OVPN_DATA:/etc/openvpn \
    --log-driver=none \
    --rm kylemanna/openvpn \
    ovpn_getclient \
    vpnclient > vpnclient.ovpn

Để dùng file client cho nhiều máy, thêm dòng sau vào file /etc/openvpn/server/server.conf:

duplicate-cn

Dưới đây là lệnh để thao tác với OpenVPN server:

sudo systemctl start openvpn-server@server
sudo systemctl stop openvpn-server@server
sudo systemctl restart openvpn-server@server
sudo systemctl status openvpn-server@server