WireGuard Easy và NextDNS

WireGuard Easy là một script giúp cài đặt và tạo nhiều tài khoản WireGuard trên Linux thông qua Docker, có thể quản lý trực quan bằng giao diện web, đỡ phải tạo bằng lệnh qua ssh như thông thường

2022-12-15_13-55-48

NextDNS là 1 dịch vụ chặn quảng cáo thông qua DNS mà mình cũng đã có giới thiệu, bạn nào quan tâm có thể ấn vào bài đọc kĩ hơn

2022-12-15_14-08-07

Kết hợp WireGuard Easy và NextDNS chúng ta có 1 hệ thống VPN mạnh mẽ, nhẹ nhàng, tối ưu về tốc độ mà vẫn tiết kiệm pin cho các thiết bị di động, lại có thể chặn quảng cáo trên các thiết bị khó nhằn như iOS, iPadOS … việc thêm bớt tài khoản cho bạn bè hay người thân thì siêu nhàn và đơn giản 😀

Cụ thể ở đây mình áp dụng trên con host đang chạy cho thèng bibica.net, sử dụng hệ điều hành Ubuntu 22.04 LTS (Jammy Jellyfish)

Cài đặt NextDNS

Vào NextDNS đăng kí 1 tài khoản miễn phí

Chú ý thông số DNS Servers

2022-12-15_16-42-22

Như của mình DNS Servers là 45.90.28.39, 45.90.30.39
Tạo 1 profile, tab Privacy sử dụng các bộ lọc như bên dưới
NextDNS Ads & Trackers Blocklist
EasyList
AdGuard DNS filter
AdGuard Mobile Ads filter
AdGuard Social Media filter
ABPVN List

Đây là bộ lọc chặn quảng cáo mình hay dùng, mọi người có thể tùy chỉnh thêm tùy nhu cầu

Cài đặt WireGuard Easy

Bước này mình viết lại, cấu hình với mục đích sau này có thể chuyển VPS sang nơi khác mà vẫn có thể dùng lại được cấu hình cũ, vì tình huống sử dụng thực tế xảy ra nó sẽ như này

Bạn tạo khoảng 10-20 tài khoản để dùng trên 10-20 thiết bị, sau đó bạn đổi VPS sang nơi khác, cấu hình cũ dùng không được, do IP mới đã đổi, phải tạo lại từ đầu, rất phiền nếu số lượng thiết bị hoặc người dùng khác nhau

1. Cài đặt Docker và docker compose

curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $(whoami)
sudo systemctl start docker
sudo systemctl enable docker
apt install docker-compose -y

2. Cài đặt WireGuard Easy

Quản lý đơn giản nhất thì bạn có thể dùng qua Dockge - Docker Manager

version: "3.8"
services:
  wg-easy:
    environment:
      # ⚠️ Required:
      # Change this to your host's public address
      - WG_HOST=vn.bibica.net
      - PASSWORD=2jmM34Bsxv8B5n8CvmVq
      - WG_DEFAULT_DNS=45.90.28.39,45.90.30.39
      - WG_MTU=1420
      # - WG_ALLOWED_IPS= [SUBNET]/[MASK]
      # - 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: weejewel/wg-easy
    container_name: wg-easy
    volumes:
      - ./data:/etc/wireguard
    ports:
      - 51820:51820/udp
      - 51821: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
  • WG_HOST là IP Public của VPS

Đổi nó thành dạng subdomain như vn.bibica.net, ý tưởng là sau này bạn có chuyển VPS sang nơi khác, chỉ cần đổi vn.bibica.net sang IP mới trên DNS của domain, phía user không phải đổi lại

  • PASSWORD: đây là passowrd để login vào quản trị admin (thay bằng password khác của bạn)
  • WG_DEFAULT_DNS: lấy ở bước tạo tài khoản NextDNS bên trên, của mình là 45.90.28.39, 45.90.30.39
  • WG_MTU=1420 đây là giá trị mặc định WireGuard Easy sử dụng, mình thấy chạy ổn trên PC, iPhone hay iPad, trong trường hợp bạn dùng thấy chập chờn, có thể hạ xuống MTU = 1280, đây là con số an toàn mà mọi thiết bị Android đều có thể chạy tốt (lý thuyết thì có thể nó không max speed tốc độ thôi)

Để test MTU thì đơn giản nhất bạn cứ vào speedtest.net thấy Finding optimal server… nhanh, hoặc vào thẳng github.com, thấy hiện ra bình thường là được 😀 MTU không phù hợp vào 2 trang này load chậm lắm

  • volumes:
    - ./data:/etc/wireguard

Mình đã đưa các file cấu hình /etc/wireguard vào thư mục /data, nằm trong thư mục cấu hình WireGuard Easy, mục đích là để sau chuyển VPS, bạn chỉ cần copy nguyên các thư mục này sang VPS, nó sẽ có sẵn các cấu hình cũ bạn đã tạo

Jcmnsojtr2

Nếu bạn cũng dùng Dockge để quản lý docker thì các file cấu hình sẽ có cấu trúc như thế, copy thư mục /opt/stacks/wg-easy sang VPS là các cấu hình cũ sẽ được dùng lại

Nếu bạn dùng theo cấu hình như trên, cần vào DNS của domain, add record vn.bibica.net = IP Public VPS vào

3. Login vào quản trị của WireGuard Easy

Cài đặt xong bạn có thể truy cập vào WireGuard Easy bằng IP-Public:51821, hoặc localhost:51821

Bạn có thể dùng Cloudflare Tunnels, Nginx, Caddy ….  làm Reverse Proxy thay thế cho dãy localhost:51821

Cụ thể trên Nginx, mình sẽ tạo Reverse Proxy cho subdomain vpn.bibica.net có cấu hình tương tự như sau

location / {
    proxy_set_header Connection "";
    proxy_http_version 1.1;
    proxy_connect_timeout 300;
    proxy_send_timeout    300;
    proxy_read_timeout    300;
    proxy_ignore_headers   Set-Cookie;
    proxy_intercept_errors on;
    proxy_pass http://localhost:51821;	
}

Trước đây thì mình hay dùng cấu hình IP-Public:51821, mà mỗi lần đổi VPS, phải vào sửa lại từng cấu hình, nên hiện tại mình dùng dạng localhost:51821, sau này chuyển VPS sang nơi khác, không cần sửa lại IP trong cấu hình Reverse Proxy

Login nhập password 2jmM34Bsxv8B5n8CvmVq (hoặc pass nào đó bạn đổi ở trên) rồi tạo các tài khoản WireGuard bằng cách click vài cái

2022-12-15_17-12-45

Có thể down file config hoặc quét mã QR Code vào WireGuard như thông thường

2022-12-16_0-31-50

4. Linked IP WireGuard Easy vào NextDNS

2022-12-15_15-36-18

Login bằng IP WireGuard sau đó vào trang quản trị của NextDNS ấn vào Linked IP (bước này chỉ phải làm một lần là đủ)

Vấn đề sử dụng

Muốn tạo thêm tài khoản thì bạn cứ vào WireGuard Easy tạo thêm rồi dùng, trong trường hợp đi web mà vẫn thấy quảng cáo nào hiện ra, thì có thể add thêm trong NextDNS, mà thường dùng các bộ lọc ở trên cũng chặn tương đối lắm

Dùng NextDNS FREE (giới hạn 300,000 queries) trên PC có thể đổi sang dùng DNS của Cloudflare hoặc Google cho đỡ tốn queries, vì trên PC chặn quảng cáo dễ hơn, còn nếu dùng NextDNS trả phí thì có thể dùng luôn DNS của họ cũng được

Tốc độ lý thuyết không nhanh như Cloudflare, NextDNS có tốc độ trung bình khoảng 25ms, có điều nhờ họ chặn quảng cáo, nên thực tế dùng DNS của họ đi web sẽ nhanh hơn 😛 NextDNS thì mình cũng dùng để chặn quảng cáo trên điện thoại, máy tính bảng khoảng hơn 1 năm nay rồi, rất hài lòng

Nói chung việc cài đặt lần đầu các thứ hơi lâu 1 tẹo, có điều sau khi xong xuôi thì hiệu quả rất đáng, đây là giải pháp cá nhân mình recommend mạnh, ai có host thừa thì nên tận dụng, cả họ cùng xài :]]

Backup và restore

Nếu bạn cấu hình tương tư như bài này, sau này muốn đổi sang VPS mới, bao gồm sử dụng Dockge để quản lý WireGuard Easy

Nhanh gọn lẹ nhất là chép toàn bộ dữ liệu thư mục /opt ở VPS cũ, sang thư mục /opt ở VPS mới

Chạy các lệnh bên dưới

# Cài đặt docker và docker-compose
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $(whoami)
sudo systemctl start docker
sudo systemctl enable docker
apt install docker-compose -y

# Cài đặt Dockge và artalk, wg-easy, alist
cd /opt/dockge
docker compose up -d
cd /opt/stacks/wg-easy
docker compose up -d

Ở trang quản trị domain, đổi record vpn.bibica.netvn.bibica.net sang IP-public của VPS mới

Tổng kết

Khá thích dùng WireGuard qua DNS của NextDNS, dù nó không chặn triệt để được các quảng cáo vì các bộ lọc hơi lú, nhưng sự hiệu quả tổng thể là có, nhất là trên iOS, iPadOS 😛

Comment policy: We love comments and appreciate the time that readers spend to share ideas and give feedback.
Notes: However, those deemed to be spam or solely promotional will be deleted.

You can create a Gravatar account, add avatar, then use that email to comment here, your account will have a more beautiful Avatar, easier to recognize with other members.

Please use real emails, you can receive notifications when comments are replied