Thứ Ba, 8 tháng 11, 2022

HƯỚNG DẪN CÀI ĐẶT WIREGUARD VPN TRÊN CENTOS 8

Mục lục
  • Giới thiệu Wireguard
  • Cập nhật hệ thống
  • Cài đặt EPEL repo
  • Cài đặt Wireguard
  • Cấu hình Wireguard Server
  • Cấu hình tường lửa
  • Kích hoạt IPv4 Forwarding
  • Kích hoạt và bật Wireguard Service
  • Cài đặt và cấu hình Wireguard Client
  • Thêm Client mới trên Server
  • Kiểm tra kết nối
  • Kết luận

Giới thiệu Wireguard

Wireguard là một công cụ mã nguồn mở cho phép bạn triển khai VPN với các thuật toán mã hoá hiện đại. Nó nhanh hơn, cài đặt và chỉnh sửa dễ dàng hơn so với IPSec và OpenVPN. Trong bài viết này, mình sẽ hướng dẫn bạn cách cài đặt Wireguard VPN trên CentOS 8 và kết nối tới bằng một Linux Client. 

Cập nhật hệ thống

Trước khi thực hiện cài đặt, bạn cần cập nhật hệ thống để các công cụ lên phiên bản mới nhất:

$ sudo dnf update

Cài đặt EPEL repo

Tiếp theo, để tải về được Wireguard, bạn cần phải cài đặt và kích hoạt EPEL repository:

$ sudo dnf install epel-release
$ sudo dnf config-manager --set-enabled PowerTools

Cài đặt Wireguard

Kích hoạt Wireguard repository:

$ sudo dnf copr enable jdoss/wireguard

Cài đặt Wireguard từ repository:

$ sudo dnf install wireguard-dkms wireguard-tools

Cấu hình Wireguard Server

Đầu tiên, bạn cần phải tạo file cấu hình và gán quyền phù hợp:

$ sudo mkdir /etc/wireguard
$ sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'

Tiếp theo, cần tạo cặp khoá để xác thực trên Server:

$ cd /etc/wireguard
$ sudo sh -c 'umask 077; wg genkey | tee privatekey | wg pubkey > publickey'

Tiếp theo, cần thêm một số cấu hình vào file cấu hình:

$ sudo vi /etc/wireguard/wg0.conf

Thêm đoạn sau:

[Interface]
## VPN server private IP address ##
Address = 192.168.10.1/24
 
## VPN server port - You can choose any port ##
ListenPort = 37822
 
## VPN server's private key i.e. /etc/wireguard/privatekey - the one from above ##
PrivateKey = GCEXafeZKqSsuLfvuHE+zLzMYwoH4qQyBh7MZ4f/3kM=
 
## Save and update this config file when a new peer (vpn client) added ##
SaveConfig = true

Trong đó, PrivateKey được lấy bằng cách sử dụng đoạn lệnh sau:

cat /etc/wireguard/privatekey

Cấu hình tường lửa

Bạn cần phải mở port trên Firewalld để có thể cho phép Wireguard tiếp nhận các request từ ngoài Internet vào. Để làm điều đó, bạn tạo file sau:

$ sudo vi /etc/firewalld/services/wireguard.xml

Sau đó paste đoạn cấu hình sau:

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>wireguard</short>
  <description>WireGuard open UDP port 37822 for client connections</description>
  <port protocol="udp" port="37822"/>
</service>

Lưu lại thay đổi và kích hoạt Wireguard service trên firewall như bên dưới:

$ sudo firewall-cmd --permanent --add-service=wireguard

Sau đó, bạn cần kích hoạt chế độ Masquerading để các lưu lượng mạng từ bên trong có thể được ra ngoài mạng với địa chỉ IP Public của Server:

$ sudo firewall-cmd --permanent --add-masquerade

Cuối cùng là reload lại firewalld:

$ sudo firewall-cmd --reload

Kiểm tra lại các cấu hình firewalld:

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: wireguard ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

Kích hoạt IPv4 Forwarding

Tạo file /etc/sysctl.d/99-custom.conf:

$ sudo vi /etc/sysctl.d/99-custom.conf

Với nội dung file như sau:

## Turn on bbr ##
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
 
## for IPv4 ##
net.ipv4.ip_forward = 1
 
## Turn on basic protection/security ##
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1

## for IPv6 ##
net.ipv6.conf.all.forwarding = 1

Lưu lại file và thực hiện cập nhật thay đổi:

$ sudo sysctl -p /etc/sysctl.d/99-custom.conf

Mặc định, Firewalld sẽ không cho phép hai Interface là wg0 và eth0 có thể giao tiếp được với nhau. Vì vậy nên bạn cần phải thêm Wireguard Interface vào cùng một zone với eth0 như sau:

$ sudo firewall-cmd --add-interface=wg0 --zone=internal
$ sudo firewall-cmd --permanent --zone=internal --add-masquerade

Kích hoạt và bật Wireguard Service

Để Wireguard có thể tự bật cùng hệ thống, bạn cần phải kích hoạt như bên dưới:

$ sudo systemctl enable wg-quick@wg0
$ sudo systemctl start wg-quick@wg0

Kiểm tra lại trạng thái bằng các câu lệnh dưới:

$ sudo wg
interface: wg0
  public key: VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
  private key: (hidden)
  listening port: 37822

$ sudo ip a show wg0
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 192.168.10.1/24 scope global wg0
       valid_lft forever preferred_lft forever

Cài đặt và cấu hình Wireguard Client

Để cài đặt Wireguard Client trên các hệ điều hành như Windows, Linux, macOS, bạn hãy tham khảo hướng dẫn tại đây.

Trong bài viết này, mình sẽ hướng dẫn mọi người cấu hình Wireguard Client trên hệ điều hành Linux. Trước hết, bạn cần phải tạo file cấu hình bên Client:

$ sudo mkdir /etc/wireguard
$ sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'
$ cd /etc/wireguard/
$ sudo sh -c 'umask 077; wg genkey | tee privatekey | wg pubkey > publickey'
$ sudo cat privatekey

Từ bước trên, bạn đã có được Private Key của Client, sử dụng Private Key đó cho cấu hình file bên dưới:

$ sudo vi /etc/wireguard/wg0.conf

Với nội dung file là:

[Interface]
## client private key ##
PrivateKey = OEM6D/zt2fVWOepVv3iEDD430V0gAshKp4+5oVVt5EE=
 
## client ip address ##
Address = 192.168.10.2/24
 
[Peer]
## CentOS 8 server public key ##
PublicKey = VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
 
## set ACL ##
AllowedIPs = 192.168.10.0/24
 
## Your CentOS 8 server's public IPv4/IPv6 address and port ##
Endpoint = 203.1.114.98:37822
 
##  Key connection alive ##
PersistentKeepalive = 15

Theo như cấu hình trên, mình đã gán private IP 192.168.10.1 cho phía Server và 192.168.10.2 cho phía Client. Ngoài ra, mình cũng sử dụng Private Key của Client và Public Key của Server.

Lưu lại cài đặt và thực hiện bật Wireguard Client:

$ sudo systemctl enable wg-quick@wg0
$ sudo systemctl start wg-quick@wg0

Thêm Client mới trên Server

Ở trên mình đã hướng dẫn bạn cấu hình ở phía Client, tiếp theo cần phải cấu hình ở phía Server để thêm mới một Client. Trước hết cần tắt Wireguard trên Server:

$ sudo systemctl stop wg-quick@wg0

Sau đó chỉnh sửa file wg0.conf:

$ sudo vi /etc/wireguard/wg0.conf

Với đoạn cấu hình sau:

[Peer] 
## client VPN public key ## 
PublicKey = dmfO9pirB315slXOgxXtmrBwAqPy07C57EvPks1IKzA=  

## client VPN IP address (note /32 subnet) ## 
AllowedIPs = 192.168.10.2/32

Trong đó:

  • PublicKey được lấy từ bên Client.
  • AllowedIPs là Private IP của Client được gán khi join vào VPN.

Lưu lại cấu hình và bật lại:

$ sudo systemctl start wg-quick@wg0

Kiểm tra kết nối

Sau khi cấu hình tất cả các bước hoàn tất, bạn hãy kiểm tra lại kết nối từ Client tới Server như sau:

$ ping -c 192.168.10.1
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=44.2 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=45.8 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=64 time=46.7 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=64 time=44.1 ms

--- 192.168.10.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2800ms
rtt min/avg/max/mdev = 41.729/47.829/48.953/5.046 ms

$ sudo wg
interface: wg0
  public key: dmfO9pirB315slXOgxXtmrBwAqPy07C57EvPks1IKzA= 
  private key: (hidden)
  listening port: 
 
peer: VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
  endpoint: 203.1.114.98:37822
  allowed ips: 192.168.10.0/24
  latest handshake: 1 minute, 40 seconds ago
  transfer: 938 B received, 45.67 KiB sent
  persistent: keepalive: every 15 seconds

Kết luận

Ở trên mình đã hướng dẫn bạn đọc thực hiện cài đặt Wireguard làm VPN trên CentOS 8. Việc cài đặt và cấu hình khá dễ dàng so với các công cụ VPN khác. Cuối cùng cảm ơn bạn đọc đã theo dõi, bất kì thắc mắc nào vui lòng bình luận bên dưới để mình giúp đỡ nhé.

Nguồn bài viết: https://www.howtoforge.com

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master