Skip to content
Thuan Bui's Blog
Go back

Khắc phục lỗi WireGuard VPN (wg-easy) không hoạt động trên Oracle Cloud VPS

Updated:

Sau một thời gian dài không đụng tới VPS miễn phí của Oracle Cloud, cách đây vài ngày mình mới quay trở lại. Không ngờ truy cập vào lại Dashboard thì tạo ngay được 1 con VPS ARM 4 vCPU, 24GB RAM, 200GB HDD luôn. Tận dụng ngay để nghịch ngợm các web app mới.

Trong khi cài đặt Wirehole-UI để thiết lập VPN trên con server của Oracle Cloud này, mình phát hiện ra Wireguard không còn hoạt động được nữa. Chính xác hơn là client vẫn kết nối được tới server, nhưng không truy cập Internet được.

https://thuanbui.me/huong-dan-thiet-lap-vpn-server-mien-phi-voi-oracle-cloud-vps/

Bài viết này sẽ hướng dẫn nhanh cách khắc phục tình trạng WireGuard VPN không hoạt đọng được trên Oracle Cloud VPS.

1. Nguyên nhân bị lỗi

Ứng dụng Wirehole-UI hoạt động dựa trên nền WireGuard VPN được thiết lập bởi wg-easy. Mặc định sau khi kích hoạt, wg-easy sẽ cấu hình iptables của container cho phép wireguard client truy cập internet thông qua interface eth0.

Các bạn có thể kiểm tra bằng cách xem nội dung file wg0.conf nằm cùng thư mục với file docker-compose.yml

Terminal window
sudo cat wg0.conf
# Note: Do not edit this file directly.
# Your changes will be overwritten!
# Server
[Interface]
PrivateKey = GC3uPUZkrEVtvxxxxxxxkw+//UNQCpqTMO3sTVSkE0=
Address = 10.8.0.1/24
ListenPort = 51820
PreUp =
PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE; iptables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT;
PreDown =
PostDown =

Ở dòng 10 là lệnh để cấu hình iptables, sử dụng interface eth0

Tuy nhiên trên Oracle Cloud VPS, container sau khi tạo đôi khi không sử dụng eth0, mà lại là eth1. Kiểm tra bằng lệnh sau

docker exec wg-easy ip r | grep default | cut -d ' ' -f 5 | head -n1
eth1

Vì lệnh cấu hình iptables được chỉ định thực thi trên interface eth0 nên wireguard client chỉ có thể truy cập được đến server nhưng không thể truy cập được Internet.

2. Cách khắc phục

Cập nhật lại file docker-compose.yml, bổ sung thêm thông số - WG_DEVICE=eth+ vào phần environment:. Đồng thời sửa lại tên image thành ghcr.io/wg-easy/wg-easy:13.

Nội dung của file docker-compose.yml của wg-easy sẽ tương tự như dưới đây. Nếu bạn dùng Wirehole-UI thì chỉnh sửa lại trong phần service của wg-easy.

version: "3.8"
services:
wg-easy:
environment:
# ⚠️ Required:
# Change this to your host's public address
- WG_HOST=111.111.111.111
- WG_DEVICE=eth+
#- WG_PATH='./'
# Optional:
# - PASSWORD=10h30
# - WG_PORT=51820
# - WG_DEFAULT_ADDRESS=10.8.0.x
# - WG_DEFAULT_DNS=1.1.1.1
# - WG_MTU=1420
# - WG_ALLOWED_IPS=192.168.15.0/24, 10.0.1.0/24
# - WG_PRE_UP=echo "Pre Up" > /etc/wireguard/pre-up.txt
# - WG_POST_UP=echo "Post Up" > /etc/wireguard/post-up.txt
# - WG_PRE_DOWN=echo "Pre Down" > /etc/wireguard/pre-down.txt
# - WG_POST_DOWN=echo "Post Down" > /etc/wireguard/post-down.txt
image: ghcr.io/wg-easy/wg-easy:13
container_name: wg-easy
volumes:
- .:/etc/wireguard
ports:
- "51820:51820/udp"
- "51824:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1

Sau đó kích hoạt lại bằng lệnh

Terminal window
docker compose down
docker compose up -d

Kiểm tra lại file wg0.conf sẽ thấy trong dòng lệnh iptables đã được đổi từ eth0 qua eth+

# Note: Do not edit this file directly.
# Your changes will be overwritten!
# Server
[Interface]
PrivateKey = GC3uPUZkrEVtvxxxxxxxkw+//UNQCpqTMO3sTVSkE0=
Address = 10.8.0.1/24
ListenPort = 51820
PreUp =
PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth+ -j MASQUERADE; iptables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT;
PreDown =
PostDown =

Vậy là xong. Nếu không có gì sai lầm, WireGuard VPN đã hoạt động ngon lành trên Oracle Cloud VPS.


Share this post on:

Previous Post
Triple Boot Hackintosh macOS Sonoma - Windows 11 - EndeavourOS Linux
Next Post
[wg-easy] Cài đặt và quản lý WireGuard VPN Server tiện lợi với giao diện Web UI