NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
24/05/2024
Lượt xem

Hướng dẫn cài đặt OpenVPN server trên Linux

24/05/2024
12 phút đọc
Lượt xem

Đánh giá

5/5 - (64 bình chọn)

Cài đặt OpenVPN server trên Linux giúp bạn tạo mạng riêng ảo (VPN) an toàn để truy cập internet và tài nguyên mạng cục bộ từ xa. Các kết nối sẽ được mã hoá tăng bộ bảo mật, tránh rò rỉ dữ liệu không mong muốn. Hãy cùng Vietnix tìm hiểu thêm về cách cài đặt OpenVPN server trên Linux qua bài viết sau đây.

Sơ lược về OpenVPN

OpenVPN là một SSL VPN có đầy đủ tính năng, với phần mở rộng mạng OSI layer 2 hoặc 3 dựa trên giao thức SSL/TLS. Đây là một phần mềm mã nguồn mở, được phân phối theo GNU GPL. Một VPN cho phép người dùng kết nối an toàn đến mạng các mạng công cộng có bảo mật thấp, chẳng hạn như ở quán cafe hay sân bay. Bên cạnh đó, VPN cũng thường được dùng để truy cập tài nguyên công ty hoặc server gia đình. VPN còn cho giúp người dùng truy cập vào các website bị chặn theo vị trí địa lý, đồng thời tăng khả năng bảo mật khi sử dụng Internet.

Trong bài viết này, ta sẽ cùng tìm hiểu cách cài đặt tự động OpenVPN server trên Linux Ubuntu 18.04, 20.04 LTS và cấu hình firewall ufw/iptables.

Các bước thực hiện cài đặt OpenVPN server trên Linux

Lưu ý: Bạn cần tối thiểu sử dụng Ubuntu phiên bản 18.04 LTS trở lên để thực hiện bài hướng dẫn này. Các phiên bản cũ hơn đã không còn được hỗ trợ.

Bước 1: Kiểm tra địa chỉ IP public

Sử dụng một trong các lệnh dưới đây để tìm địa chỉ IPv4 public của máy, tùy vào việc tên interface là eth0 hay eth1:

ip addr show eth0 

Hoặc

ip addr show eth1

Ngoài ra ta cũng có thể sử dụng lệnh host hoặc dig như sau:

host myip.opendns.com resolver1.opendns.com ## get IPv4 ## host -4 myip.opendns.com resolver1.opendns.com

Hoặc

dig TXT +short o-o.myaddr.l.google.com @ns1.google.com ## see IPv4 instead of default IPv6 ## dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com
Hướng dẫn cài đặt OpenVPN server trên Linux
Cách kiểm tra IP public của máy tính

Sau khi có được IP4 hoặc IPv6 thì bạn hãy ghi chú lại 2 giá trị này sẽ cần dùng đến sau đó để thiết lập OpenVPN server trên Ubuntu.

Ví dụ: bạn ghi lại địa chỉ IPv4 public là 172.105.102.90 (hoặc IPv6 2600:3c04::f03c:92ff:fe42:3d72), tức là địa chỉ IP public của OpenVPN server được cung cấp bởi Ubuntu Linux.

Bước 2: Tải về script openvpn-install.sh

Nhập lệnh dưới đây để download script:

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

Để xác thực xem quá trình download đã hoàn tất hay chưa, ta có thể dùng một text editor bất kỳ:

nano openvpn-install.sh

Bước 3: Chạy file script để cài đặt OpenVPN server

Nhập các lệnh dưới đây để cài đặt server từ script openvpn-install.sh:

sudo chmod +x openvpn-install.sh sudo bash openvpn-install.sh

Hãy đảm bảo rằng ta đã cung cấp đủ thông tin:

Welcome to this OpenVPN road warrior installer!

Which protocol should OpenVPN use?
1) UDP (recommended)
2) TCP
Protocol [1]: 1

What port should OpenVPN listen to?
Port [1194]:

Select a DNS server for the clients:
1) Current system resolvers
2) Google
3) 1.1.1.1
4) OpenDNS
5) Quad9
6) AdGuard
DNS server [1]: 2

Enter a name for the first client:
Name [client]: iphone

OpenVPN installation is ready to begin.
Press any key to continue...

Nhấn bất kỳ phím nào trên bàn phím, màn hình sẽ hiển thị thông tin như sau:

writing new private key to '/etc/openvpn/server/easy-rsa/pki/easy-rsa-1768.FjG9Gr/tmp.vQL9q8'
-----
Using configuration from /etc/openvpn/server/easy-rsa/pki/easy-rsa-1768.FjG9Gr/tmp.FiauWW
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'server'
Certificate is to be certified until Dec 7 09:22:17 2030 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
Generating a RSA private key
....................................+++++
...................+++++
writing new private key to '/etc/openvpn/server/easy-rsa/pki/easy-rsa-1843.4USwJm/tmp.lOecLW'
-----
Using configuration from /etc/openvpn/server/easy-rsa/pki/easy-rsa-1843.4USwJm/tmp.5j0n6q
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'iphone'
Certificate is to be certified until Dec 7 09:22:17 2030 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
Using configuration from /etc/openvpn/server/easy-rsa/pki/easy-rsa-1899.k6zZtP/tmp.riZi2R

An updated CRL has been created.
CRL file: /etc/openvpn/server/easy-rsa/pki/crl.pem


Created symlink /etc/systemd/system/multi-user.target.wants/openvpn-iptables.service → /etc/systemd/system/openvpn-iptables.service.
Created symlink /etc/systemd/system/multi-user.target.wants/openvpn-server@server.service → /lib/systemd/system/openvpn-server@.service.

Finished!

The client configuration is available in: /root/iphone.ovpn
New clients can be added by running this script again.

Bước 4: Kiểm tra và thiết lập server OpenVPN trên Ubuntu Firewall Rules

Bây giờ server OpenVPN đã được thiết lập thành công và sẵn sàng để sử dụng. Ta có thể xem các quy tắc firewall đã được thêm trong file sau:

/etc/systemd/system/openvpn-iptables.service

sudo systemctl cat openvpn-iptables.service

Output:

[Unit]
Before=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to 172.105.102.90
ExecStart=/usr/sbin/iptables -I INPUT -p udp --dport 1194 -j ACCEPT
ExecStart=/usr/sbin/iptables -I FORWARD -s 10.8.0.0/24 -j ACCEPT
ExecStart=/usr/sbin/iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
ExecStop=/usr/sbin/iptables -t nat -D POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to 172.105.102.90
ExecStop=/usr/sbin/iptables -D INPUT -p udp --dport 1194 -j ACCEPT
ExecStop=/usr/sbin/iptables -D FORWARD -s 10.8.0.0/24 -j ACCEPT
ExecStop=/usr/sbin/iptables -D FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
ExecStart=/usr/sbin/ip6tables -t nat -A POSTROUTING -s fddd:1194:1194:1194::/64 ! -d fddd:1194:1194:1194::/64 -j SNAT --to 2600:3c04::f03c:92ff:fe42:3d72
ExecStart=/usr/sbin/ip6tables -I FORWARD -s fddd:1194:1194:1194::/64 -j ACCEPT
ExecStart=/usr/sbin/ip6tables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
ExecStop=/usr/sbin/ip6tables -t nat -D POSTROUTING -s fddd:1194:1194:1194::/64 ! -d fddd:1194:1194:1194::/64 -j SNAT --to 2600:3c04::f03c:92ff:fe42:3d72
ExecStop=/usr/sbin/ip6tables -D FORWARD -s fddd:1194:1194:1194::/64 -j ACCEPT
ExecStop=/usr/sbin/ip6tables -D FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

Bạn có thể xem file cấu hình của server openvpn được tạo bởi script:

sudo more /etc/openvpn/server/server.conf

Output như sau:

local 172.105.102.90
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
server-ipv6 fddd:1194:1194:1194::/64
push "redirect-gateway def1 ipv6 bypass-dhcp"
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
explicit-exit-notify

Các thao tác với server OpenVPN trên Ubuntu Linux

Dừng – chạy – khởi động lại server OpenVPN

Chạy lệnh sau để dừng dịch vụ OpenVPN trên máy:

sudo systemctl stop openvpn-server@server.service

Khởi động lại server:

sudo systemctl start openvpn-server@server.service

Restart dịch vụ:

sudo systemctl restart openvpn-server@server.service

Kiểm tra trạng thái:

sudo systemctl status openvpn-server@server.service

Cấu hình client OpenVPN

Trên server sẽ có một file config client có tên ~iphone.ovpn (tên có thể khác tùy vào quá trình cài đặt). Ta có thể tìm file config này như sau:

sudo find / -type f -name "iphone.ovpn" sudo find / -type f -name "*.ovpn" -ls

Bây giờ ta có thể copy file này vào desktop cục bộ bằng lệnh scp rồi đưa file này cho client OpenVPN để kết nối (lưu ý thay iphone.ovpn và root username bằng tên tương ứng như khi cài đặt):

scp root@172.105.102.90:~/iphone.ovpn .

Nếu không chạy được lệnh scp bằng quyền root thì hãy thử đăng nhập theo user thường:

ssh {user}@172.105.102.90<br>ssh vietnix@172.105.102.90

Tìm vị trí file opvn:

sudo find / -type f -name "*.ovpn" -ls

Sau đó copy file bằng lệnh cp trong home directory (trong ví dụ này là /home/vietnix):

sudo cp /root/desktopclient.ovpn /home/vietnix/

Sau đó nhập lệnh scp từ desktop:

scp vivek@172.105.102.90:/home/vivek/desktopclient.ovpn .

Bây giờ ta cần download client OpenVPN theo hệ thống hoặc thiết bị di động:

Cấu hình cho OpenVPN macOS/OS X

Click đúp vào file iphone.ovpn rồi mở trong client tunnelblick, sau đó chọn vào Only Me để cài đặt.

Cấu hình MacOS / OS X openvpn client
Cấu hình MacOS / OS X openvpn client

Sau khi cài đặt xong, nhấn vào nút Connect để kết nối. Bạn có thể dùng lệnh sau để xác thực xem địa chỉ IP public đã được đổi sang IP của server VPN hay chưa:

dig TXT +short o-o.myaddr.l.google.com @ns1.google.com

Ping địa chỉ IP private của server:

ping 10.8.0.1

Cấu hình Linux OpenVPN client

Trước tiên, cài đặt client openvpn:

sudo yum install openvpn

Hoặc:

sudo apt install openvpn

Sau đó copy iphone.ovpn bằng lệnh cp:

sudo cp iphone.ovpn /etc/openvpn/client.conf

Kiểm tra khả năng kết nối:

sudo openvpn --client --config /etc/openvpn/client.conf

Bây giờ Linux sẽ tự động kết nối khi restart máy bằng script:

/etc/init.d/openvpn

sudo /etc/init.d/openvpn start

Đối với các hệ thống dựa trên systemd thì hãy dùng lệnh dưới đây:

sudo systemctl start openvpn@client

Kiểm tra kết nối:

ping 10.8.0.1 #Ping đến server OpenVPN server 
ip route # Kiểm tra xem có phải 10.8.0.1 hay không
# Kiểm tra xem public IP đã được đặt thành địa chỉ server OpenVPN chưa
dig TXT +short o-o.myaddr.l.google.com @ns1.google.com

Cấu hình client FreeBSD OpenVPN

Trước tiên, cài đặt client openvpn bằng lệnh pkg:

sudo pkg install openvpn

Sau đó copy iphone.ovpn:

mkdir -p /usr/local/etc/openvpn/ sudo cp iphone.ovpn /usr/local/etc/openvpn/client.conf

Chỉnh /etc/rc.conf rồi thêm dòng sau:

openvpn_enable="YES" openvpn_configfile="/usr/local/etc/openvpn/client.conf"

Sau đó khởi động OpenVPN:

sudo /usr/local/etc/rc.d/openvpn start

Tiến hành xác thực lại:

# Ping đến server OpenVPN  ping 10.8.0.1
# Kiểm tra cài đặt routing netstat -nr
# Kiểm tra public IP dig +short myip.opendns.com @resolver1.opendns.com

Cách thêm client mới

Bây giờ giả sử ta cần thêm một thiết bị mới có tên googlephone. Ta có thể thêm thiết bị bằng lệnh sau:

sudo bash openvpn-install.sh

Output:

Looks like OpenVPN is already installed

What do you want to do?
1) Add a cert for a new user
2) Revoke existing user cert
3) Remove OpenVPN
4) Exit
Select an option [1-4]:

Chọn vào option số 1 rồi nhập tên client là googlephone:

Tell me a name for the client cert
Please, use one word only, no special characters
Client name: googlephone
Generating a 2048 bit RSA private key
.........+++
.................................................................................................+++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/googlephone.key.FNaDMaP56c'
-----
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'googlephone'
Certificate is to be certified until Sep 25 07:31:46 2027 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

Client googlephone added, certs available at ~/googlephone.ovpn

Bây giờ ta có thể dùng googlephone.ovpn với thiết bị Google Android. Cũng bằng cách này, ta hoàn toàn có thể thêm bao nhiêu user nữa tùy thích.

Cách xóa/thu hồi certificate của user

Trước tiên, chạy lệnh dưới đây:

sudo bash openvpn-install.sh

Output:

Looks like OpenVPN is already installed

What do you want to do?
1) Add a cert for a new user
2) Revoke existing user cert
3) Remove OpenVPN
4) Exit
Select an option [1-4]:

Chọn vào option 2, bây giờ ta sẽ xem được danh sách các certificate (chứng chỉ) hiện có để thu hồi. Giả sử ta thu hồi lại certificate của googlephone thì kết quả sẽ như dưới đây:

Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.cnf
Revoking Certificate 09.
Data Base Updated
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.cnf

An updated CRL has been created.
CRL file: /etc/openvpn/easy-rsa/pki/crl.pem


Certificate for client googlephone revoked

Lời kết

Trong bài viết này, ta đã biết được cách cài đặt OpenVPN server trên Linux chỉ với vài câu lệnh đơn giản. Vietnix khuyến khích mọi bạn đọc nên cài đặt OpenVPN để cải thiện bảo mật khi kết nối đến các hệ thống khác. Nếu gặp bất kỳ vấn đề nào trong quá trình cài đặt thì hãy để lại comment ở ngay bên dưới để được hỗ trợ nhé!

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG