🧭 Tổng quan
Trong thời gian gần đây, nhiều người dùng tại Việt Nam gặp tình trạng không thể truy cập được Telegram, ngay cả khi kết nối Internet hoạt động bình thường. Lý do có thể đến từ việc Telegram bị chặn bởi ISP hoặc giới hạn từ hệ thống mạng nội bộ.
Là một người thường xuyên làm việc với Telegram (đặc biệt là Telegram Bot API), mình đã thử nghiệm nhiều giải pháp và cuối cùng tìm ra một phương án ổn định – đơn giản – hiệu quả:
Dựng một server Ubuntu 22.04 dùng Cloudflare WARP để “thoát chặn”, sau đó cài Squid Proxy để trung gian truy cập Telegram từ thiết bị khác.
Bài viết này chia sẻ chi tiết cách triển khai mô hình trên.
🔧 Mục tiêu và Mô hình giải pháp
Mục tiêu: Tạo một proxy server trung gian để thiết bị của bạn có thể truy cập Telegram dù đang bị chặn, bằng cách:
- Dùng WARP để mã hóa lưu lượng ra ngoài.
- Cài Squid Proxy và cấu hình cho phép chỉ truy cập Telegram API.
- NAT port proxy ra IP public nếu dùng ngoài mạng LAN.
- Có thể cấu hình thêm xác thực người dùng (authentication) để bảo mật.
Sơ đồ mô hình sử dụng.
╔══════════════╗ ╔══════════════════╗ ╔═════════════════╗
║ Thiết bị bạn ║─────────> ║ Proxy Server ║─────────>║ Cloudflare WARP ║
║ (Telegram) ║ 3128 ║ 192.168.100.253 ║ Internet ║ (1.1.1.1 tunnel)║
╚══════════════╝ ╚══════════════════╝ ╚═════════════════╝
▲
│ (có thể NAT ra 113.161.201.128 nếu dùng qua public)
✅ Các bước triển khai chi tiết
Bước 1 – Cài Ubuntu Server 22.04
Bạn có thể cài trên máy ảo (VM), máy vật lý, VPS hoặc cloud.
Ví dụ IP nội bộ: 192.168.100.253
Bước 2 – Cài đặt Cloudflare WARP
Áp dụng như hướng dẫn ở bài trước https://stacklab.vn/cai-dat-va-ket-noi-cloudflare-warp-vpn-tren-ubuntu-debian-server/.
# Thêm GPG key và repo
curl https://pkg.cloudflareclient.com/pubkey.gpg | gpg --dearmor -o /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] http://pkg.cloudflareclient.com/ jammy main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
# Cài đặt
sudo apt update
sudo apt install cloudflare-warp -y
# Đăng ký và kết nối
warp-cli registration new
warp-cli connect
warp-cli status
Nếu trạng thái là Connected
thì bạn đã sẵn sàng.
Bước 3 – Cài đặt và cấu hình Squid Proxy
apt install squid -y
Chỉnh sửa file config Squid:
vi /etc/squid/squid.conf
Thêm hoặc sửa lại như sau:
# Cho phép truy cập Telegram API
acl allowed_sites dstdomain .api.telegram.org
http_access allow allowed_sites
http_access deny all
# Cổng lắng nghe
http_port 3128
⚠️ Lưu ý bảo mật: Cấu hình trên cho phép bất kỳ ai có IP truy cập Telegram, nên bạn cần giới hạn thêm bằng cách chặn IP, hoặc dùng xác thực người dùng (xem bên dưới).
Bước 4 – (Tuỳ chọn) Cấu hình xác thực proxy
Tạo xác thực người dùng proxy bằng basic_auth
:
apt install apache2-utils -y
htpasswd -c /etc/squid/passwd hoanghd3
Sau đó chỉnh sửa squid.conf
:
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic realm Proxy
acl authenticated proxy_auth REQUIRED
# Áp dụng xác thực + Telegram API
acl allowed_sites dstdomain .api.telegram.org
http_access allow authenticated allowed_sites
http_access deny all
Kết quả cho thấy file cấu hình Squid hoàn toàn hợp lệ. Không có dòng nào báo lỗi (FATAL
hay ERROR
) và quá trình parse đã xử lý xong toàn bộ cấu hình:
Phân tích nhanh các dòng quan trọng:
auth_param basic program ...
→ Đã nhận diện cấu hình xác thực cơ bản với filepasswd
.acl authenticated proxy_auth REQUIRED
→ Tạo ACL yêu cầu người dùng xác thực.acl allowed_sites dstdomain .api.telegram.org
→ Giới hạn truy cập đến Telegram API.http_access allow authenticated allowed_sites
→ Chỉ cho người dùng đã xác thực truy cập Telegram.http_access deny all
→ Mọi truy cập khác đều bị chặn.Initializing https:// proxy context
→ Cho biết Squid khởi tạo môi trường proxy HTTPS thành công.
shell> squid -k parse
2025/06/26 09:47:33| Startup: Initializing Authentication Schemes ...
2025/06/26 09:47:33| Startup: Initialized Authentication Scheme 'basic'
2025/06/26 09:47:33| Startup: Initialized Authentication Scheme 'digest'
2025/06/26 09:47:33| Startup: Initialized Authentication Scheme 'negotiate'
2025/06/26 09:47:33| Startup: Initialized Authentication Scheme 'ntlm'
2025/06/26 09:47:33| Startup: Initialized Authentication.
2025/06/26 09:47:33| Processing Configuration File: /etc/squid/squid.conf (depth 0)
2025/06/26 09:47:33| Processing: auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
2025/06/26 09:47:33| Processing: auth_param basic realm Proxy
2025/06/26 09:47:33| Processing: acl authenticated proxy_auth REQUIRED
2025/06/26 09:47:33| Processing: acl allowed_sites dstdomain .api.telegram.org
2025/06/26 09:47:33| Processing: http_access allow authenticated allowed_sites
2025/06/26 09:47:33| Processing: http_access deny all
2025/06/26 09:47:33| Initializing https:// proxy context
Restart dịch vụ:
systemctl restart squid
Bước 5 – Kiểm tra từ thiết bị khác
Cấu hình proxy trong ứng dụng (Telegram, hoặc hệ điều hành) trỏ tới:
- Proxy IP:
192.168.100.253
- Port:
3128
- Nếu có cấu hình xác thực: nhập
hoanghd3
và mật khẩu bạn đã tạo.
Nếu sử dụng curl để test trong terminal sử dụng cú pháp sau:
export http_proxy="http://hoanghd3:password@192.168.100.253:3128"
export https_proxy="http://hoanghd3:password@192.168.100.253:3128"
Nếu không sử dụng xác thực, cú pháp là.
export {http,https}_proxy=http://192.168.100.253:3128;
Sau đó curl test send Telegram như bình thường
curl -s -X POST https://api.telegram.org/bot<bot_token>/sendMessage -d chat_id=<chat_id> -d text="Hello World"
{"ok":true,"result":{"message_id":8790,"from":{"id":7509858733,"is_bot":true,"first_name":"Alert Demo","username":"alerts_demo_bot"},"chat":{"id":-4572608076,"title":"Alert Demo","type":"group","all_members_are_administrators":true,"accepted_gift_types":{"unlimited_gifts":false,"limited_gifts":false,"unique_gifts":false,"premium_subscription":false}},"date":1750933711,"text":"Hello World"}}
Bước 6 – NAT port nếu cần truy cập từ Internet
Nếu bạn dùng server này trong cloud hoặc có public IP (ví dụ: 113.161.201.128
), NAT port 3128 ra public IP.
Trên router hoặc firewall:
Forward TCP port 3128 → 192.168.100.253:3128
Sau đó bạn có thể dùng proxy: 113.161.201.128:3128
ở bất kỳ đâu.
Bước 7 – Enable SOCKS5 để có thể truy cập được trên App Telegram.
shell> ssh -g -f -N -D 3129 0.0.0.0
Enter passphrase for key '/root/.ssh/id_rsa':
Bước 8 – NAT port nếu cần truy cập từ Internet
Nếu bạn dùng Server này trong cloud hoặc có public IP (ví dụ: 113.161.201.128), NAT port 3129 ra public IP. Hãy chắc chắn Proxy Server 192.168.100.253 đi được đến thiết bị NAT, ví dụ thiết bị NAT của mình là 192.168.123.1.
Hãy xem qua sơ đồ mạng tổng thể.
[Internet]
|
| Public IP: 113.161.201.128 (port 3129)
|
[ROUTER - NAT]
WAN: 113.161.201.128
LAN: 192.168.123.1
|
| NAT đến → 192.168.100.253:3129
|
[CORE SWITCH]
|
| 192.168.123.2 <--> 192.168.100.254
|
[Proxy Server] 192.168.100.253 (SOCKS5 qua danted/ssh -D)
|
| WARP tunnel
|
[Cloudflare WARP: 172.16.0.2]
Vấn đề khi dùng WARP.
Khi bật WARP VPN ở 192.168.100.253
, toàn bộ default route (default via) sẽ bị chuyển vào tunnel CloudflareWARP
. Điều này khiến proxy server không thể trả ngược lại cho các kết nối đến từ Internet qua NAT, cụ thể là:
- Gói SYN từ Telegram đến
113.161.201.128:3129
được NAT về192.168.100.253
- Proxy nhận gói → gửi phản hồi SYN-ACK qua WARP (sai route)
- NAT không khớp → Telegram không kết nối được
Trên router NAT có IP 113.161.201.128 (đầu Internet), bạn cần cấu hình như sau:
Forward TCP port 3129 từ public IP về proxy server nội bộ:
Forward TCP port 3129 → 192.168.100.253:3129
Hoặc nếu là thiết bị Mikrotik/cisco:
/ip firewall nat
add chain=dstnat protocol=tcp dst-port=3129 action=dst-nat to-addresses=192.168.100.253 to-ports=3129
Bạn cần đảm bảo route ngược đúng (để không chui vào WARP)
Bạn cần thêm route ngược chỉ cho traffic từ mạng NAT (192.168.123.0/24) quay lại qua gateway cũ (192.168.100.254
) – không đi vào WARP:
ip route add 192.168.123.0/24 via 192.168.100.254
Lệnh này giúp cho khi có ai kết nối từ ngoài Internet tới, gói trả lời từ 192.168.100.253
sẽ đi đúng qua đường router NAT (không đi WARP), tránh rớt gói.
Bước 9 – NAT port từ router
Trên router NAT có IP 113.161.201.128 (đầu Internet), bạn cần cấu hình như sau:
Forward TCP port 3129 từ public IP về proxy server nội bộ:
ip route add 192.168.123.1/32 via 192.168.100.254
Bước 10 – Check TCP/3129 ở môi trường Internet
Truy cập https://tools.stacklab.vn/tools/util/TCP%20Port%20Checker nhập thông tin public ip và tcp/3129.

Kết quả Open là thành công.
Bước 11 – Nhập SOCKS5 trên APP Telegram

📱 Cách cấu hình proxy SOCKS5 trong Telegram trên iOS
- Mở Telegram
- Vào mục Cài đặt (Settings) → Data and Storage → Proxy.
- Chọn Add Proxy
- Chọn loại SOCKS5.
- Nhập thông tin proxy:
- Server:
113.161.201.128
- Port:
3129
- Username:
hoanghd3
(nếu cần) - Password: (để trống nếu proxy không yêu cầu hoặc nhập nếu có)
- Server:
- Bật nút Use Proxy

Nếu thiết lập đúng, Telegram sẽ hiển thị trạng thái: “connected, xx ms ping” như hình.
🛠 Nếu gặp lỗi
- Đảm bảo port
3129
mở trongufw
hoặciptables
. - Kiểm tra server có đang chạy proxy (dùng
ss -tlnp | grep 3129
) - Nếu xài WARP thì nhớ route đúng UID/iptables để app proxy đi qua WARP (như bạn đã làm với UID
65534
chonobody
).
⚙️ Ưu điểm và Nhược điểm
Tiêu chí | Ưu điểm | Nhược điểm |
---|---|---|
🔒 Bảo mật | Có thể cấu hình xác thực, mã hóa WARP | Cần mở port nếu dùng công cộng |
🌐 Truy cập Telegram | Ổn định, vượt chặn ISP | Chỉ áp dụng Telegram API |
⚡ Tốc độ | WARP tối ưu hóa mạng | Phụ thuộc mạng và hạ tầng |
🔧 Dễ triển khai | Chỉ cần server Ubuntu, không cần VPN truyền thống | Cần kiến thức cơ bản về Linux & proxy |
📊 So sánh với VPN truyền thống
Tiêu chí | WARP + Squid Proxy | VPN truyền thống |
---|---|---|
Dễ triển khai | ✅ Dễ | ❌ Cần nhiều bước hơn |
Bypass Telegram | ✅ Có | ✅ Có |
Bảo mật | ✅ Có mã hóa | ✅ Tùy loại VPN |
Chia sẻ proxy | ✅ Có thể chia sẻ qua port | ❌ Khó chia sẻ trực tiếp |
Điều khiển quyền truy cập | ✅ ACL hoặc xác thực | ❌ Khó kiểm soát hơn |
💡 Lời khuyên
- Nếu bạn chỉ cần dùng Telegram (không xem Netflix hay truy cập geo-block), WARP là lựa chọn nhẹ, nhanh và miễn phí.
- Cấu hình ACL để giới hạn domain Telegram, tránh bị lợi dụng proxy.
- Bắt buộc phải bật xác thực nếu mở proxy ra Internet để tránh bị dùng làm “proxy mở” (open proxy) gây nguy hiểm.
- Có thể triển khai thêm Fail2Ban hoặc IPTables để bảo vệ proxy khỏi bị tấn công brute-force.
🏁 Kết luận
Việc Telegram bị chặn gây ảnh hưởng không nhỏ đến công việc và giao tiếp hàng ngày. Tuy nhiên, với một server Ubuntu, bạn hoàn toàn có thể triển khai giải pháp riêng, vừa bảo mật vừa chủ động.
Cloudflare WARP + Squid Proxy là một sự kết hợp tuyệt vời, phù hợp cho lập trình viên, sysadmin, hoặc người dùng kỹ thuật cần một công cụ đơn giản mà hiệu quả.
Nếu bạn thấy bài viết hữu ích, hãy chia sẻ với bạn bè hoặc để lại bình luận thảo luận bên dưới nhé!
Chúc bạn kết nối an toàn và không gián đoạn 💬📶