1. Kiến trúc tổng quan
Internet ─── Router/Modem │ Switch mạng LAN (đã có) │ │ │ Server PBX PC/NAS Yealink T30 (nhiều máy)
Bạn cần: 1 máy chủ chạy phần mềm tổng đài (PBX) + các điện thoại Yealink T30 kết nối cùng switch/LAN. Không cần thiết bị chuyên dụng, không tốn phí license.
2. Chọn phần mềm tổng đài miễn phí
Phổ biến và dễ triển khai nhất:
- FreePBX (dựa trên Asterisk) – giao diện web quản lý dễ dùng, cộng đồng lớn. Khuyên dùng cho người mới.
- Issabel – tương tự FreePBX, cài sẵn nhiều module.
- 3CX Free Edition – giao diện hiện đại, giới hạn số máy nhánh (thường 10-20) nhưng dễ cấu hình với Yealink.
Bài này hướng dẫn theo FreePBX vì tương thích tốt với Yealink và tài liệu nhiều.
3. Chuẩn bị máy chủ
- Máy tính/máy ảo: tối thiểu 2 CPU, 2GB RAM, 20GB ổ cứng (đủ cho vài chục máy nhánh).
- Cài đặt: tải FreePBX Distro ISO (đã tích hợp sẵn Asterisk + hệ điều hành) từ trang chủ FreePBX, ghi ra USB boot và cài như cài hệ điều hành thông thường.
- Đặt IP tĩnh cho server, ví dụ
192.168.1.10, cùng dải mạng với switch nội bộ.
4. Cấu hình FreePBX sau khi cài
- Truy cập
http://192.168.1.10từ trình duyệt, tạo tài khoản quản trị lần đầu. - Vào Settings > Asterisk SIP Settings: bật chuẩn chan_pjsip (khuyến nghị thay cho chan_sip cũ), giữ nguyên cổng mặc định UDP 5060.
- Vào Applications > Extensions > Add Extension → chọn PJSIP:
- Extension number: ví dụ
1001 - Display name: tên nhân viên
- Secret (mật khẩu SIP): đặt mật khẩu mạnh
- Lặp lại cho từng máy nhánh (1002, 1003…).
- Extension number: ví dụ
- (Tuỳ chọn) Vào Connectivity > Trunks nếu muốn kết nối ra ngoài qua nhà cung cấp SIP Trunk (không bắt buộc nếu chỉ gọi nội bộ).
- Vào Applications > Dialplan/Inbound-Outbound Routes để thiết lập quy tắc quay số nếu có trunk ra ngoài.
5. Cấu hình điện thoại Yealink SIP-T30
Bước 1 – Kết nối mạng:
- Cắm dây LAN từ Yealink T30 vào switch (dùng chung switch với server PBX).
- Điện thoại tự nhận IP qua DHCP, hoặc bạn có thể đặt IP tĩnh trong menu điện thoại (
Settings > Advanced > Network).
Bước 2 – Truy cập giao diện web quản lý điện thoại:
- Trên màn hình điện thoại, vào Menu > Status để xem địa chỉ IP được cấp.
- Mở trình duyệt, gõ IP đó (ví dụ
http://192.168.1.101), đăng nhập mặc địnhadmin/admin.
Bước 3 – Khai báo tài khoản SIP:
- Vào tab Account > Register:
- Label/Display Name: tên hiển thị
- Register Name: số extension (vd
1001) - User Name:
1001 - Password: mật khẩu đã đặt trong FreePBX
- SIP Server: IP server PBX (
192.168.1.10) - Port:
5060
- Lưu cấu hình (Confirm), điện thoại sẽ đăng ký lên server, trạng thái hiển thị “Registered” là thành công.
Bước 4 – Kiểm tra:
- Gọi thử giữa 2 máy nhánh nội bộ (vd 1001 gọi 1002) để xác nhận có tín hiệu và đàm thoại được.
6. Mẹo triển khai hàng loạt (nhiều máy)
- Dùng tính năng Auto Provisioning của Yealink: tạo file cấu hình mẫu, đặt trên TFTP/HTTP server, điện thoại tự tải cấu hình theo MAC address — tiết kiệm thời gian nếu có nhiều máy.
- Đặt DHCP Option 66 trỏ tới địa chỉ server provisioning để các máy Yealink tự động nhận cấu hình khi cắm vào switch.
7. Lưu ý bảo mật
- Đổi mật khẩu quản trị mặc định của cả FreePBX và điện thoại Yealink.
- Nếu không cần gọi ra ngoài Internet, nên chặn cổng SIP (5060) và RTP ở firewall ngoài, chỉ cho phép trong LAN để tránh bị tấn công dò mật khẩu (toll fraud).
- Đặt mật khẩu extension đủ mạnh (không dùng số trùng số máy nhánh).
Kết nối điện thoại Yealink T30 ở chi nhánh khác với tổng đài trung tâm
Vấn đề cốt lõi: máy nhánh ở xa cần “nhìn thấy” được server PBX qua Internet (thay vì cùng LAN). Có 3 cách phổ biến, xếp theo mức độ an toàn/khuyên dùng:
Cách 1: VPN Site-to-Site (khuyên dùng nhất)
An toàn nhất vì máy nhánh xa vẫn coi như “cùng mạng LAN” với trung tâm, không cần mở cổng SIP ra Internet công khai.
Cách làm:
- Nếu router 2 bên hỗ trợ VPN (hầu hết router doanh nghiệp như MikroTik, Ubiquiti, pfSense, Cisco… đều có): thiết lập IPSec hoặc WireGuard/OpenVPN giữa router trụ sở chính và router chi nhánh.
- Sau khi VPN lên, 2 mạng LAN thông nhau (vd trụ sở
192.168.1.0/24, chi nhánh192.168.2.0/24, route qua nhau). - Điện thoại Yealink T30 ở chi nhánh cắm vào switch chi nhánh, đăng ký SIP về server PBX (
192.168.1.10) y hệt như đang ở cùng LAN.
Ưu điểm: đơn giản về cấu hình phía điện thoại, bảo mật cao, không lộ SIP server ra ngoài.
Nhược điểm: cần router/thiết bị hỗ trợ VPN ở cả 2 đầu.
Cách 2: VPN Client ngay trên điện thoại (nếu router không hỗ trợ VPN)
Một số dòng Yealink (tùy firmware) hỗ trợ OpenVPN client tích hợp sẵn trong máy điện thoại:
- Vào
Settings > Advanced > VPNtrên điện thoại, nạp file cấu hình OpenVPN (.ovpn,.crt,.key) do server VPN trung tâm cấp. - Điện thoại tự kết nối VPN trước, sau đó đăng ký SIP vào server PBX như bình thường.
- Cần kiểm tra dòng T30 cụ thể của bạn (submodel như T30, T30P, T30G) có hỗ trợ OpenVPN client hay không trong tài liệu Yealink, vì tính năng này không có ở mọi phiên bản.
Cách 3: Mở SIP qua Internet trực tiếp (không khuyên dùng nếu không có kinh nghiệm bảo mật)
Nếu không dùng được VPN, có thể cho điện thoại đăng ký SIP thẳng qua Internet, nhưng rủi ro bị tấn công toll fraud (quay số trộm cước) rất cao nếu cấu hình sai.
Yêu cầu tối thiểu nếu chọn cách này:
- Trung tâm cần IP công khai tĩnh hoặc DDNS, NAT/port-forward cổng SIP (5060 hoặc đổi sang cổng khác không mặc định) và dải cổng RTP (thường 10000-20000) từ router ra server PBX.
- Bật TLS cho SIP signaling và SRTP cho thoại (mã hóa) thay vì UDP thường.
- Dùng Fail2Ban hoặc tính năng chống brute-force có sẵn trong FreePBX (Intrusion Detection) để tự động chặn IP dò mật khẩu.
- Đổi cổng SIP mặc định, đặt mật khẩu extension rất mạnh, giới hạn IP được phép đăng ký nếu chi nhánh có IP tĩnh.
- Cân nhắc dùng SBC (Session Border Controller) như FreePBX kèm module SIP Chan Firewall/Responsive Firewall để lọc traffic.
Không có router hỗ trợ VPN → Giải pháp
Vì modem nhà mạng thông thường không làm VPN được, bạn có 2 hướng khả thi, đều miễn phí hoặc chi phí rất thấp:
Hướng 1: Thêm thiết bị VPN nhỏ gọn, giá rẻ (khuyên dùng)
Không cần đổi cả hệ thống mạng, chỉ cần thêm 1 thiết bị nhỏ cắm giữa modem và switch ở mỗi bên để tạo VPN, còn lại giữ nguyên.
Lựa chọn thiết bị:
- Router GL.iNet (dòng Mango, AR300M, Beryl…) – giá khoảng 500k-1 triệu, hỗ trợ sẵn WireGuard/OpenVPN, cấu hình qua giao diện web rất đơn giản.
- MikroTik hEX (~700k-1 triệu) – mạnh hơn, phù hợp nếu sau này mở rộng.
- Raspberry Pi hoặc mini PC cũ – nếu có sẵn, cài phần mềm VPN miễn phí lên đó.
Cách làm với WireGuard (miễn phí, nhẹ, dễ cấu hình):
- Cài WireGuard server ngay trên máy chủ FreePBX ở trụ sở (có plugin/gói cài đặt riêng, không ảnh hưởng Asterisk).
- Thiết bị VPN nhỏ ở chi nhánh xa cấu hình làm WireGuard client, kết nối về trụ sở.
- Khai báo route để 2 mạng LAN thông nhau.
- Yealink T30 ở chi nhánh xa cắm vào switch chi nhánh (phía sau thiết bị VPN), đăng ký SIP về server PBX y như đang cùng LAN.
Hướng 2: Dùng Tailscale/ZeroTier (dễ nhất, không cần biết sâu về mạng)
Đây là dịch vụ VPN mesh miễn phí, không cần mở port, không cần IP tĩnh:
- Cài Tailscale (hoặc ZeroTier) trực tiếp lên máy chủ FreePBX ở trụ sở → chạy như 1 dịch vụ nền, gán IP ảo (vd
100.x.x.x). - Ở chi nhánh xa: cài Tailscale lên 1 thiết bị nhỏ (mini PC, Raspberry Pi, hoặc thậm chí router GL.iNet có hỗ trợ Tailscale sẵn) và bật tính năng Subnet Router để “quảng bá” dải mạng LAN chi nhánh vào mesh.
- Yealink T30 ở chi nhánh không cần cấu hình gì đặc biệt, chỉ cần server SIP trỏ đúng IP nội bộ của PBX qua route đã thiết lập.
Lưu ý về T30: dòng T30 là điện thoại phổ thông, không có VPN client tích hợp sẵn trong máy (khác với các dòng cao cấp hơn như T5x). Vì vậy VPN bắt buộc phải đặt ở tầng router/thiết bị mạng như trên, không đặt trực tiếp trên điện thoại.
So sánh nhanh
| Tiêu chí | GL.iNet/MikroTik + WireGuard | Tailscale/ZeroTier |
|---|---|---|
| Chi phí | ~500k-1tr (mua 1 lần thiết bị) | Miễn phí hoàn toàn (gói free đủ dùng vài chục thiết bị) |
| Độ khó cấu hình | Trung bình | Dễ, cài đặt vài phút |
| Cần mở port ở modem | Không (nếu WireGuard là initiator từ chi nhánh) | Không, hoàn toàn không cần |
| Độ ổn định cho thoại (độ trễ) | Tốt, kiểm soát được | Tốt, nhưng phụ thuộc relay server nếu NAT phức tạp |
Nếu bạn muốn tối giản chi phí và không rành kỹ thuật mạng sâu, mình khuyên chọn Tailscale — chỉ cần 1 mini PC hoặc Raspberry Pi cũ ở mỗi đầu là đủ, không cần mua thiết bị chuyên dụng.
Hướng dẫn cài đặt Tailscale chi tiết
Phần 1: Cài Tailscale trên máy chủ FreePBX (trụ sở)
Bước 1 – Đăng ký tài khoản Tailscale
- Truy cập tailscale.com, đăng ký tài khoản miễn phí (có thể dùng Google/Microsoft/GitHub để đăng nhập nhanh).
- Gói miễn phí cho phép tối đa 100 thiết bị (3 người dùng) — thừa đủ cho nhu cầu vài chi nhánh nhỏ.
Bước 2 – Cài đặt trên server FreePBX (CentOS/RHEL based)
SSH vào server FreePBX với quyền root, chạy:
bash
curl -fsSL https://tailscale.com/install.sh | sh
Script tự nhận diện hệ điều hành (FreePBX Distro dựa trên CentOS/AlmaLinux) và cài gói phù hợp.
Bước 3 – Khởi động và đăng nhập
bash
sudo tailscale up
- Lệnh này trả về 1 đường link dạng
https://login.tailscale.com/a/xxxxxxx. - Mở link đó trên trình duyệt máy tính khác (không cần trên server), đăng nhập bằng tài khoản Tailscale đã tạo để xác thực thiết bị.
Bước 4 – Kiểm tra IP Tailscale được cấp
bash
tailscale ip -4
Kết quả ví dụ: 100.101.102.103 — đây là IP ảo cố định, dùng IP này (hoặc IP LAN thật 192.168.1.10 sau khi bật subnet routing ở bước 5) để các máy nhánh xa đăng ký SIP về.
Bước 5 – Bật Subnet Router (quan trọng nhất)
Để các thiết bị khác trong LAN trụ sở (không chỉ server) cũng liên lạc được qua Tailscale, cần “quảng bá” dải mạng LAN:
bash
sudo tailscale up --advertise-routes=192.168.1.0/24 --accept-dns=false
(thay 192.168.1.0/24 bằng dải mạng LAN thực tế của trụ sở)
Bước 6 – Duyệt route trên Admin Console
- Vào login.tailscale.com/admin/machines
- Tìm thiết bị server vừa thêm, bấm vào biểu tượng “…” → Edit route settings → tick chọn duyệt (Approve) route
192.168.1.0/24. - Nếu không duyệt bước này, subnet sẽ không hoạt động dù đã advertise.
Bước 7 – Cho phép IP Forwarding (bắt buộc để làm subnet router)
bash
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.confecho 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.confsudo sysctl -p /etc/sysctl.conf
Bước 8 – Kiểm tra firewall trên FreePBX Distro (dùng firewalld)
FreePBX Distro có firewall riêng, cần đảm bảo không chặn traffic Tailscale (cổng UDP 41641):
bash
sudo firewall-cmd --permanent --add-port=41641/udpsudo firewall-cmd --permanent --zone=trusted --add-interface=tailscale0sudo firewall-cmd --reload
Phần 2: Cài đặt Tailscale ở chi nhánh xa (subnet router)
Bạn cần 1 thiết bị nhỏ luôn bật 24/7 ở chi nhánh (Raspberry Pi, mini PC chạy Linux nhẹ, hoặc router GL.iNet hỗ trợ Tailscale sẵn).
Nếu dùng Raspberry Pi / Mini PC (Ubuntu, Debian, Raspberry Pi OS)
Bước 1 – Cài đặt:
bash
curl -fsSL https://tailscale.com/install.sh | sh
Bước 2 – Đăng nhập và quảng bá route LAN chi nhánh:
bash
sudo tailscale up --advertise-routes=192.168.2.0/24 --accept-dns=false
(thay 192.168.2.0/24 bằng dải mạng LAN thực tế của chi nhánh — nhớ đặt khác dải với trụ sở để tránh xung đột)
Bước 3 – Cho phép IP forwarding (giống server):
bash
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.confecho 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.confsudo sysctl -p /etc/sysctl.conf
Bước 4 – Duyệt route trên Admin Console (giống Bước 6 ở server, duyệt route 192.168.2.0/24 cho thiết bị chi nhánh).
Bước 5 – Kết nối thiết bị này vào switch chi nhánh bằng cáp LAN, đảm bảo nó có IP tĩnh hoặc DHCP reservation trong dải 192.168.2.0/24.
Nếu dùng router GL.iNet (đơn giản hơn, có giao diện đồ họa)
- Vào giao diện quản trị router GL.iNet (
http://192.168.8.1mặc định). - Vào mục Applications > Tailscale (có sẵn trên firmware GL.iNet mới).
- Bấm Enable, quét mã QR hoặc mở link hiện ra để đăng nhập tài khoản Tailscale.
- Bật tùy chọn Subnet Router ngay trong giao diện, nhập dải mạng LAN chi nhánh.
- Duyệt route trên Admin Console như hướng dẫn trên.
- Cắm switch chi nhánh vào cổng LAN của router GL.iNet.
Phần 3: Kiểm tra kết nối 2 đầu thông nhau
Từ server FreePBX, thử ping IP của 1 thiết bị bất kỳ trong LAN chi nhánh:
bash
ping 192.168.2.50
Nếu ping thấy phản hồi → 2 mạng đã thông qua Tailscale, bước tiếp theo là cấu hình điện thoại.
Phần 4: Cấu hình Yealink T30 ở chi nhánh xa
Không có gì khác so với cấu hình thông thường — vì Tailscale đã “nối mạng” ở tầng router, điện thoại chỉ cần trỏ thẳng về IP LAN thật của server:
- Vào Account > Register trên điện thoại:
- SIP Server:
192.168.1.10(IP LAN thật của FreePBX ở trụ sở, không phải IP Tailscale100.x.x.x) - Port:
5060 - User Name / Password: theo extension đã tạo trong FreePBX
- SIP Server:
- Điện thoại sẽ gửi traffic SIP → qua switch chi nhánh → thiết bị Tailscale chi nhánh → mesh Tailscale → thiết bị Tailscale trụ sở → server FreePBX.
Lưu ý quan trọng
- Độ trễ thoại: Tailscale ưu tiên kết nối trực tiếp (P2P) giữa 2 điểm nếu NAT cho phép, độ trễ thường tốt cho thoại. Nếu NAT quá chặt (CGNAT của nhà mạng), Tailscale sẽ dùng relay (DERP server), có thể tăng độ trễ nhẹ — vẫn dùng gọi thoại được nhưng nên kiểm tra thực tế.
- Thiết bị 24/7: máy làm subnet router ở chi nhánh cần luôn bật, nếu mất kết nối thì điện thoại chi nhánh sẽ mất luôn liên lạc với PBX.
- Bảo mật: bật 2FA cho tài khoản Tailscale (SSO qua Google/Microsoft đã có sẵn xác thực mạnh), giới hạn quyền truy cập trong Access Controls (ACL) trên Tailscale Admin Console nếu muốn chỉ cho phép đúng cổng SIP/RTP đi qua thay vì mở toàn bộ mạng.

Leave a comment