Cài đặt OpenZiti Client trên đa nền tảng
Tải và cài đặt OpenZiti Edge Client (ziti) cho môi trường người dùng cuối trên Windows, macOS và Linux để thiết lập đường hầm bảo mật.
Trên Linux (Ubuntu/Debian), sử dụng package manager hoặc binary trực tiếp để đảm bảo phiên bản tương thích với Controller đã triển khai ở phần trước.
Tải binary từ kho phát hành chính thức của OpenZiti, sau đó di chuyển vào thư mục system và cấp quyền thực thi.
curl -L https://github.com/openziti/ziti/releases/download/v0.29.2/ziti-linux-amd64.tar.gz | tar -xz -C /tmp
sudo mv /tmp/ziti /usr/local/bin/
sudo chmod +x /usr/local/bin/ziti
Kiểm tra phiên bản cài đặt để xác nhận binary đã hoạt động.
ziti version
Trên macOS, sử dụng Homebrew hoặc tải binary x86_64/arm64 tương ứng từ GitHub Releases, sau đó chạy lệnh tương tự để di chuyển vào /usr/local/bin.
Trên Windows, tải file .exe từ GitHub Releases, đặt vào thư mục C:\Program Files\OpenZiti\ và thêm đường dẫn này vào biến môi trường PATH.
Verify: Chạy lệnh ziti version trên terminal của từng hệ điều hành, kết quả phải trả về phiên bản ziti và build number mà không báo lỗi.
Cấu hình file ziti.yml để kết nối mạng
Tạo file cấu hình ziti.yml để client biết cách kết nối tới OpenZiti Controller và Edge Router đã triển khai.
File cấu hình này chứa thông tin định danh (identity) dưới dạng JSON hoặc file .p12 đã được cấp trong phần thiết lập Controller, cùng với thông tin kết nối mạng.
Tạo thư mục cấu hình người dùng và file ziti.yml tại đường dẫn ~/ziti/ziti.yml.
mkdir -p ~/ziti
cd ~/ziti
Sử dụng lệnh generate config từ Controller (hoặc copy nội dung config đã chuẩn bị sẵn từ admin) vào file. Ở đây giả định ta có file identity.json đã được cấp quyền.
ziti edge login --env-file ~/ziti/identity.json
Hoặc nếu cấu hình thủ công bằng file YAML để kết nối trực tiếp, tạo file ~/ziti/ziti.yml với nội dung sau (thay thế YOUR_CONTROLLER_IP và YOUR_ENROLLMENT_TOKEN):
api:
host: YOUR_CONTROLLER_IP
port: 6262
identity:
path: ~/ziti/identity.json
password: YOUR_ENROLLMENT_TOKEN
Lưu ý: Token enrollment thường được lấy từ lệnh ziti edge enroll --identity-name your-user --service-names all --duration 30d trên Controller trước đó.
Thực hiện lệnh enroll để sinh ra file identity.json và p12 cần thiết cho việc xác thực.
ziti edge enroll --identity-name your-user --service-names all --duration 30d --output ~/ziti/identity.json
Verify: Chạy lệnh ziti edge login --env-file ~/ziti/identity.json. Nếu thành công, terminal sẽ in dòng "Logged in as: your-user" và hiển thị thông tin phiên đăng nhập.
Hướng dẫn đăng nhập và xác thực hai yếu tử (2FA)
Kích hoạt cơ chế xác thực hai yếu tố (2FA) trên client để tăng cường bảo mật cho phiên kết nối Zero-Trust.
OpenZiti hỗ trợ TOTP (Time-based One-Time Password) thông qua ứng dụng như Google Authenticator hoặc Authy, hoặc sử dụng WebAuthn/FIDO2 (YubiKey) nếu IdP hỗ trợ.
Trên server Controller, cấu hình chính sách xác thực để bắt buộc 2FA cho user đã đăng nhập. Sau đó trên client, đăng nhập sẽ yêu cầu mã TOTP.
Thực hiện đăng nhập với tham số --totp để kích hoạt yêu cầu mã xác thực.
ziti edge login --env-file ~/ziti/identity.json --totp
Khi lệnh chạy, hệ thống sẽ yêu cầu nhập mã 6 số từ ứng dụng Authenticator trên điện thoại. Nhập mã đúng để hoàn tất quá trình xác thực.
Để kết nối dịch vụ thực tế, sử dụng lệnh start tunnel hoặc connect service.
ziti start-tunnel --config ~/ziti/ziti.yml
Verify: Mở terminal mới, chạy lệnh ziti status. Kết quả phải hiển thị trạng thái "connected" và danh sách các dịch vụ (services) đang được expose qua tunnel.
Cấu hình DNS trên client để giải quyết tên miền nội bộ
Cấu hình DNS resolution trên client để người dùng có thể truy cập dịch vụ nội bộ bằng tên miền thay vì địa chỉ IP, đi qua Zero-Trust tunnel.
OpenZiti không tự động thay đổi cấu hình DNS của hệ điều hành. Cần cấu hình resolver nội bộ hoặc sử dụng cơ chế DNS tunneling tích hợp sẵn của ziti.
Sử dụng tính năng DNS của OpenZiti bằng cách thêm tham số --dns vào lệnh start-tunnel, hoặc cấu hình file ziti.yml để trỏ tới DNS server của OpenZiti (thường là 10.10.10.10 hoặc tùy cấu hình Edge Router).
Chỉnh sửa file ~/ziti/ziti.yml để bật tính năng DNS và chỉ định domain suffix (ví dụ: .internal).
dns:
enabled: true
host: 10.10.10.10
port: 53
search-domain: internal
Trên Linux, nếu muốn thay đổi resolver toàn cục của hệ thống (cẩn thận với kết nối internet), thêm dòng vào /etc/resolv.conf, hoặc tốt hơn là cấu hình trong ziti.yml để chỉ DNS trong tunnel.
Khởi động lại tunnel với cấu hình DNS mới.
pkill ziti
ziti start-tunnel --config ~/ziti/ziti.yml --dns
Verify: Chạy lệnh dig @10.10.10.10 service-name.internal hoặc nslookup service-name.internal. Kết quả phải trả về địa chỉ IP của dịch vụ nội bộ (thường là IP của Edge Router hoặc IP của service endpoint trong mesh).
Tối ưu hóa trải nghiệm kết nối cho người dùng di động
Tối ưu hóa cấu hình client để đảm bảo kết nối ổn định, tự động reconnect và tiết kiệm pin trên thiết bị di động (iOS/Android) hoặc laptop khi chuyển mạng.
Sử dụng chế độ "Keep Alive" và "Reconnect" trong file cấu hình để client tự động cố gắng kết nối lại khi mạng bị gián đoạn mà không cần người dùng can thiệp.
Cấu hình file ~/ziti/ziti.yml với các tham số tối ưu cho mạng không ổn định.
transport:
tls:
enabled: true
dial:
timeout: 5000ms
keepalive:
enabled: true
interval: 30s
reconnect:
enabled: true
max-retries: 10
backoff:
initial: 1s
max: 30s
Trên thiết bị di động, sử dụng ứng dụng OpenZiti Mobile (nếu có) hoặc cấu hình ziti như một service/systemd service chạy nền để đảm bảo tunnel luôn hoạt động khi ứng dụng khác gọi đến.
Trên Linux, tạo file service systemd để tự động khởi động ziti khi máy bật và tự động restart khi crash.
cat > /etc/systemd/system/ziti-client.service
Kích hoạt và bật service để chạy tự động.
sudo systemctl daemon-reload
sudo systemctl enable ziti-client.service
sudo systemctl start ziti-client.service
Verify: Tắt kết nối mạng (rút dây mạng hoặc tắt WiFi), đợi 5 giây rồi bật lại. Chạy lệnh systemctl status ziti-client.service và ziti status để kiểm tra xem client đã tự động reconnect và phục hồi đường hầm chưa.
Điều hướng series:
Mục lục: Series: Series: Xây dựng nền tảng Zero-Trust Network cho doanh nghiệp với OpenZiti, Cloudflare Access và Identity-aware Proxy trên hạ tầng Proxmox
« Phần 5: Triển khai Identity-aware Proxy (Oauth2-Proxy) và tích hợp OpenZiti
Phần 7: Tích hợp log, giám sát và cảnh báo an ninh »