Cẩm nang NQDEV
HomeCheat SheetsContact
Công nghệ
Công nghệ
  • Introduction
  • Developer Roadmaps
    • Developer Roadmaps: Mô tả chi tiết
    • Roadmaps: ASP.NET Core Developer
    • Bảng phân loại cấp độ nhà phát triển .NET
    • ClearPath cho Team .NET Core
  • DotNET
    • ASP.NET Core
      • Hướng dẫn sử dụng tệp .http trong Visual Studio 2022 để thực hiện HTTP Requests
    • Message Queue
      • ZeroMQ
        • Xây dựng ZeroMQ Server trong dotNET 8 với CSharp
    • Playwright
      • Playwright: Tự Động Hóa Trình Duyệt Hiệu Quả
    • Optimize
      • Optimize - Một số cách tối ưu code và performance CSharp
    • Dev Blogs
      • Versions of .NET
        • Cập nhật từ .NET 9 lên .NET 10: Những thay đổi quan trọng
      • ASP.NET Core Web API với ASP.NET Core Web API (Native AOT): Bạn nên chọn loại nào?
      • Hướng dẫn xây dựng ứng dụng multi-tenant với .NET Core và MongoDB
      • Kiến Trúc Monolithic và Microservices: Lựa Chọn Phù Hợp Cho Dự Án Của Bạn
  • Design Patterns
    • CQRS Pattern
      • CQRS and MediatR trong .NET Core
    • Microservices
      • Ocelot
  • SQL Server
    • SQL Server Basics
    • SQL Server: DBCC
      • DBCC
      • DBCC SHOW_STATISTICS
      • DBCC SHRINKDATABASE
      • DBCC SHRINKFILE
      • DBCC SQLPERF
      • DBCC FREEPROCCACHE
    • SQL Server Replication
      • Giới thiệu SQL Server Replication
      • Hướng dẫn cấu hình và quản lý SQL Server Replication với Distribution Agent
    • SQL Server: Tập lệnh
      • SQL Server: Tập lệnh để tìm tất cả các giá trị Mặc định với Cột
    • Bảng tạm và sự linh hoạt trong xử lý dữ liệu lớn
    • Các bước để thay đổi nơi lưu trữ tệp log trong SQL Server
    • Các bước di chuyển tệp log trong SQL Server
    • Query Store trong SQL Server - Tổng Quan và Cách Quản Lý Hiệu Quả
    • SQL Server: Error Code
      • SQL Server Error : 14151, Severity: 18. Replication agent
  • Caching
    • Phân tích các phương pháp Caching dữ liệu trong .NET Core và .NET Framework
    • Redis
      • Redis mất dữ liệu khi restart
    • Varnish Cache
      • Hướng Dẫn Cài Đặt Varnish Cache với HAProxy Sử Dụng Docker Compose
  • NodeJS
    • NextJS
      • Hướng dẫn NextJS cho người mới bắt đầu
      • Parallel Routes trong Next.js
      • Hướng dẫn cấu hình Swagger trong NextJS
    • ReactJS
      • Hiểu về hook useRef của React như thế nào cho đúng
      • Tìm hiểu sâu hơn về useEffect từ A-Z
  • OS Linux
    • Tập lệnh Linux hay dùng
    • Centos 7
      • Hướng dẫn cài đặt và cấu hình Centos 7 dành cho người mới bắt đầu
      • Hướng Dẫn Kiểm Tra Các Cổng Đang Mở Trên Hệ Thống CentOS
      • Hướng Dẫn Sử Dụng zip Trên CentOS
      • Hướng dẫn cấu hình iptables để mở tất cả các cổng cho IP private
    • Windows
      • Hướng dẫn quản lý ứng dụng khởi động Windows bằng Registry Editor
  • VMware
    • Cách ảo hóa macOS Sierra trong VMWare Windows 10
    • Tự tin làm chủ mạng lưới: Cẩm nang tính toán địa chỉ IP từ A đến Z
  • Docker
    • Getting Started with Docker
    • Docker HUB
      • nqdev/nginx
  • Templates
    • Tabler Admin Template: Xây dựng Dashboard Quản trị đẹp mắt và dễ dàng
  • Open Source
    • shadcn-ui/ui
    • Kuma UI
    • Midone
  • Ứng dụng
    • Ansible
      • Ansible: Giới thiệu
      • Hướng dẫn chi tiết cài đặt Ansible
    • Apache JMeter
      • Features
        • Hướng dẫn chi tiết về Test Plan trong JMeter
        • Hướng dẫn chi tiết về Thread Group trong JMeter
    • DocFX
      • Những khái niệm cơ bản trong DocFX
      • DocFX - Hướng dẫn cài đặt, cấu hình sử dụng
      • DocFX - Hướng dẫn Markdown
      • DocFX - Hướng dẫn cấu hình file docfx.json
      • DocFX - Hướng dẫn sử dụng và tùy chỉnh Template
    • ETL Tools
      • Công cụ ETL Tools List & Software
      • Airbyte
        • Docker Compose
    • Elasticsearch
      • _reindex
        • Tìm hiểu sâu về API _reindex trong Elasticsearch
        • Hướng dẫn di chuyển dữ liệu trong Elasticsearch sử dụng API _reindex
      • _transform
    • HAProxy
      • HAProxy - Lập trình Lua và tích hợp Redis
    • Localtunnel
      • Hướng dẫn sử dụng Localtunnel để đưa ứng dụng Local lên Internet
    • LoopBack
      • Hướng dẫn cài đặt LoopBack 4 và khởi tạo dự án đầu tiên
    • N8N
      • Hướng dẫn cài đặt n8n bằng docker compose
    • NGINX Plus
      • NGINX: Hiệu suất vượt trội và giải pháp tối ưu cho hệ thống web
      • NGINX: Hướng dẫn chi tiết sử dụng GeoIP2 trên Alpine
      • NGINX: Hướng dẫn sử dụng Lua trên Alpine
      • NGINX: Hướng Dẫn Chi Tiết Cấu Hình Load Balancer
      • NGINX: Hướng Dẫn Sử Dụng Dynamic Modules
      • NGINX: Hướng dẫn Cài đặt và Sử dụng Module njs
      • Tích Hợp NGINX Làm API Gateway với Các Bước Xử Lý Phổ Biến
    • NTP - Secure Timeserver
      • Hướng dẫn cài đặt NTP an toàn với Docker Compose
    • Playwright
      • Playwright: Tự Động Hóa Trình Duyệt Hiệu Quả
    • VPN
      • WireGuard
        • Hướng dẫn cài đặt WireGuard VPN Server trên VPS CentOS 7 lỗi thời bằng Docker và nâng cấp kernel
      • OpenVPN
    • Wordpress
      • Cách dùng Docker để phát triển ứng dụng Wordpress
  • Tin tức
    • DevSecOps là gì?
    • Giới thiệu bộ công cụ hỗ trợ lập trình từ SmallDev.tools và Code Beautify
    • Giới Thiệu và Hướng Dẫn Về DuckDB
    • Giới thiệu về Các Loại Cơ Sở Dữ Liệu
      • 1. HSQLDB (HyperSQL Database)
    • Hệ thống phân giải tên miền (DNS) và các loại bản ghi
    • Giải thích về Tiền Tố Path Nổi Tiếng – /.well-known
    • Giải mã Hệ thống tạo mã OTP của Google Authenticator
    • Quishing là gì? Hiểu và phòng tránh lừa đảo qua mã QR
  • Hướng dẫn
    • Hướng dẫn chi tiết tạo tài khoản Google bằng email công ty
    • Top 10 ASP .NET Open Source Projects GitHub 2024
    • Free Themes and Templates from Creative Tim
    • Hướng dẫn sử dụng Voler và Mazer Dashboard từ Zuramai
  • So Sánh
    • So Sánh Apache Parquet và CSV: Bảng So Sánh Chi Tiết, Ưu và Nhược Điểm
    • So Sánh Varnish Cache, Memcached và Redis: Ba Công Cụ Caching Phổ Biến trong Tối Ưu Hóa Hiệu Suất
  • Affiliate
    • Tuyển dụng
      • Bộ câu hỏi phỏng vấn T-SQL – Đánh giá ứng viên hiệu quả
    • eSMSvn: Chăm sóc khách hàng hiệu quả với SMS và ZNS
    • eSMS.vn: Giải pháp SMS Marketing hiệu quả cùng các chương trình ưu đãi hấp dẫn
Powered by GitBook
On this page
  • Giới thiệu
  • Tại sao phải nâng cấp kernel?
  • Các bước nâng cấp kernel và cài WireGuard trên CentOS 7
  • 1. Thêm ELRepo repository
  • 2. Cài kernel-lt (kernel dài hạn)
  • 3. Cập nhật GRUB để boot kernel mới
  • 4. Khởi động lại VPS
  • 5. Kiểm tra kernel mới sau reboot
  • 6. Cài WireGuard tools
  • Cài WireGuard VPN server bằng Docker với wg-easy
  • Tổng kết ưu nhược điểm WireGuard
  • Lời khuyên khi sử dụng WireGuard trên CentOS 7
  • Mã nguồn script nâng cấp kernel và cài WireGuard tự động
  • Script cài đặt nâng cấp kernel + WireGuard cho CentOS 7
  • 📌 Lưu ý trách nhiệm (Disclaimer)
  • Kết luận

Was this helpful?

  1. Ứng dụng
  2. VPN
  3. WireGuard

Hướng dẫn cài đặt WireGuard VPN Server trên VPS CentOS 7 lỗi thời bằng Docker và nâng cấp kernel

PreviousWireGuardNextOpenVPN

Last updated 1 day ago

Was this helpful?

Giới thiệu

là một giao thức VPN hiện đại, nhanh, nhẹ và bảo mật cao đang được nhiều người dùng lựa chọn thay thế cho OpenVPN. Tuy nhiên, để chạy WireGuard server trên các VPS CentOS 7 cũ, ta thường gặp một số khó khăn do kernel hệ thống không hỗ trợ module WireGuard. Bài viết này sẽ hướng dẫn bạn cách nâng cấp kernel CentOS 7 lên phiên bản mới để hỗ trợ WireGuard, đồng thời cài đặt WireGuard server bằng Docker rất đơn giản.


Tại sao phải nâng cấp kernel?

CentOS 7 bản mặc định thường dùng kernel 3.10, quá cũ để hỗ trợ WireGuard vì:

  • WireGuard cần module kernel mới (>= 5.x) để chạy hiệu quả.

  • Kernel cũ không có sẵn module WireGuard và thường không thể nạp module này.

  • Cài WireGuard mà không nâng kernel sẽ gặp lỗi như "Cannot find device wg0".

Vì vậy, cần nâng cấp kernel lên bản kernel-lt (long-term) mới nhất của ELRepo.


Các bước nâng cấp kernel và cài WireGuard trên CentOS 7

Dưới đây là các bước chính bạn cần làm, kèm script tự động để bạn dễ thao tác.

1. Thêm ELRepo repository

ELRepo là kho phần mềm bên ngoài cung cấp kernel mới cho CentOS 7.

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

2. Cài kernel-lt (kernel dài hạn)

sudo yum --disablerepo="*" --enablerepo="elrepo-kernel" install kernel-lt kernel-lt-devel -y

3. Cập nhật GRUB để boot kernel mới

sudo grub2-set-default 0
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

4. Khởi động lại VPS

sudo reboot

5. Kiểm tra kernel mới sau reboot

uname -r
# Phải thấy kernel >= 5.4.x

6. Cài WireGuard tools

sudo yum install -y dkms wireguard-tools
sudo modprobe wireguard

Cài WireGuard VPN server bằng Docker với wg-easy

Sau khi kernel đã hỗ trợ WireGuard, bạn có thể cài nhanh VPN server bằng Docker image weejewel/wg-easy rất tiện lợi.

Ví dụ docker-compose.yml:

version: "3.8"
services:
  wireguard:
    image: weejewel/wg-easy
    container_name: wg-easy
    restart: unless-stopped
    ports:
      - "51820:51820/udp"
      - "51821:51821/tcp"
    environment:
      - TZ=Asia/Ho_Chi_Minh
      - WG_HOST=your.vps.ip.or.domain
      - PASSWORD=your_webui_password
    volumes:
      - ./config:/etc/wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv6.conf.all.forwarding=1

Khởi chạy Docker container

docker-compose up -d

Truy cập giao diện web tại: http://your.vps.ip.or.domain:51821 và đăng nhập bằng mật khẩu bạn đã đặt.


Tổng kết ưu nhược điểm WireGuard

Điểm mạnh
Điểm hạn chế

- Tốc độ nhanh, nhẹ, ổn định

- Yêu cầu kernel mới (>=5.x)

- Mã nguồn hiện đại, dễ audit

- Chưa phổ biến như OpenVPN

- Cấu hình đơn giản

- Cần kiến thức nâng cấp kernel


Lời khuyên khi sử dụng WireGuard trên CentOS 7

  • Nâng cấp kernel là bước bắt buộc để chạy WireGuard server ổn định.

  • Dùng Docker wg-easy giúp bạn triển khai nhanh, dễ quản lý.

  • Nếu có điều kiện, bạn nên nâng cấp hẳn hệ điều hành lên CentOS 8/9 hoặc các distro mới hơn (Rocky, AlmaLinux, Ubuntu...) để có môi trường mới và bảo mật hơn.


Mã nguồn script nâng cấp kernel và cài WireGuard tự động

#!/bin/bash

set -e

echo "=== Bắt đầu nâng cấp kernel và cài đặt WireGuard cho CentOS 7 ==="

if [ "$EUID" -ne 0 ]; then
  echo "Vui lòng chạy script này với quyền root."
  exit 1
fi

yum install -y epel-release yum-utils wget

if ! yum repolist enabled | grep -q "^elrepo"; then
  rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
  yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
fi

yum clean all
yum makecache fast

yum --disablerepo="*" --enablerepo="elrepo-kernel" install -y kernel-lt kernel-lt-devel dkms wireguard-tools

grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg

echo "Hoàn thành. Vui lòng khởi động lại VPS và chạy 'modprobe wireguard' sau khi reboot."

Script cài đặt nâng cấp kernel + WireGuard cho CentOS 7

Dưới đây là script shell .sh tự động giúp bạn nâng cấp kernel lên kernel-lt mới nhất trên CentOS 7 (dùng ELRepo), cài WireGuard, và thiết lập môi trường cần thiết cho VPS quá cũ. Script có kèm kiểm tra cơ bản và thông báo rõ ràng.

=========================================================

⚠️ Lưu ý: Sử dụng script này đồng nghĩa với việc bạn tự chịu trách nhiệm.

Script được cung cấp để tham khảo. Không chịu trách nhiệm nếu có sự cố.

=========================================================

upgrade_kernel_wireguard.sh
#!/bin/bash
# =========================================================
# ⚠️ Lưu ý: Sử dụng script này đồng nghĩa với việc bạn tự chịu trách nhiệm.
# Script được cung cấp để tham khảo. Không chịu trách nhiệm nếu có sự cố.
# =========================================================
#
# upgrade_kernel_wireguard.sh
#
# Script tự động nâng cấp kernel lên kernel-lt mới nhất cho CentOS 7
# và cài đặt WireGuard VPN.
#
# === Hướng dẫn sử dụng ===
#
# 1. Tạo file, ví dụ: upgrade_kernel_wireguard.sh
# 2. Dán nội dung script này vào file trên
# 3. Cấp quyền thực thi: chmod +x upgrade_kernel_wireguard.sh
# 4. Chạy script với quyền root: sudo ./upgrade_kernel_wireguard.sh
# 5. Sau khi script chạy xong, khởi động lại VPS: sudo reboot
# 6. Sau reboot, kiểm tra kernel mới bằng lệnh: uname -r
#    (phiên bản kernel phải là khoảng 5.4.x hoặc mới hơn)
# 7. Nạp module WireGuard: sudo modprobe wireguard
# 8. Kiểm tra module WireGuard đã được nạp: lsmod | grep wireguard
#
# Nếu có lỗi hoặc cần hỗ trợ, liên hệ admin hoặc tham khảo tài liệu ELRepo.
#

set -e

echo "=== Bắt đầu nâng cấp kernel và cài đặt WireGuard cho CentOS 7 ==="

# Kiểm tra quyền root
if [ "$EUID" -ne 0 ]; then
  echo "Vui lòng chạy script này với quyền root (sudo)."
  exit 1
fi

# Cài các gói cần thiết trước
echo "Cài đặt epel-release, yum-utils, và wget..."
yum install -y epel-release yum-utils wget

# Thêm repo ELRepo nếu chưa có
if ! yum repolist enabled | grep -q "^elrepo"; then
  echo "Thêm ELRepo repository..."
  rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
  yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
else
  echo "ELRepo đã được cài đặt."
fi

# Cập nhật metadata repo
yum clean all
yum makecache fast

# Tải và cài kernel-lt mới nhất từ ELRepo mirror
KERNEL_LATEST="kernel-lt-5.4.278-1.el7.elrepo.x86_64.rpm"
KERNEL_DEVEL_LATEST="kernel-lt-devel-5.4.278-1.el7.elrepo.x86_64.rpm"

# MIRROR="https://mirrors.netix.net/elrepo/kernel/el7/x86_64/RPMS"
MIRROR="https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/"

echo "Tải kernel-lt và kernel-lt-devel bản mới nhất..."
# https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.278-1.el7.elrepo.x86_64.rpm
wget "${MIRROR}/${KERNEL_LATEST}" -O /tmp/${KERNEL_LATEST}
# https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.278-1.el7.elrepo.x86_64.rpm
wget "${MIRROR}/${KERNEL_DEVEL_LATEST}" -O /tmp/${KERNEL_DEVEL_LATEST}

echo "Cài đặt kernel mới..."
yum localinstall -y /tmp/${KERNEL_LATEST} /tmp/${KERNEL_DEVEL_LATEST}

# Đặt kernel mới làm mặc định boot
echo "Cập nhật grub để khởi động với kernel mới..."
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg

# Cài WireGuard và công cụ hỗ trợ
echo "Cài đặt WireGuard..."
yum install -y dkms wireguard-tools

echo "Đã cài đặt xong. Vui lòng khởi động lại VPS để áp dụng kernel mới."
echo "Sau khi reboot, bạn có thể chạy 'modprobe wireguard' để tải module WireGuard."

echo "=== Hoàn thành ==="

📌 Lưu ý trách nhiệm (Disclaimer)

Vui lòng cân nhắc kỹ trước khi sử dụng script này. Script được cung cấp với mục đích hỗ trợ và tham khảo. Tôi không chịu trách nhiệm với bất kỳ sự cố nào có thể xảy ra trong quá trình sử dụng, bao gồm nhưng không giới hạn: lỗi hệ thống, mất dữ liệu, hoặc các rủi ro bảo mật. Hãy đảm bảo bạn sao lưu dữ liệu và hiểu rõ các thao tác trước khi thực hiện.

Please use this script at your own discretion. This script is provided as-is for reference and support purposes only. I take no responsibility for any potential issues arising from its use, including but not limited to system errors, data loss, or security risks. Make sure to back up your data and understand the operations before proceeding.


Kết luận

WireGuard VPN server là lựa chọn tuyệt vời cho VPN hiện đại. Tuy nhiên với CentOS 7 cũ, bạn cần nâng cấp kernel trước khi chạy WireGuard server. Sử dụng ELRepo để nâng cấp kernel-lt là cách đơn giản và ổn định nhất. Sau đó, bạn có thể triển khai VPN server bằng Docker tiện lợi.

Nếu bạn có câu hỏi hay cần hỗ trợ thêm, đừng ngần ngại để lại bình luận bên dưới hoặc liên hệ trực tiếp với mình.


Chúc bạn thành công!

WireGuard