1. Lựa chọn cấu hình phần cứng tối ưu cho Proxmox VE
Để đảm bảo hiệu năng cho kiến trúc Zero-Trust với nhiều dịch vụ chạy song song (OpenZiti Controller, Edge, Cloudflare Tunnel, Proxy), bạn cần phân bổ tài nguyên CPU và RAM một cách khoa học ngay từ đầu.
Hạ tầng vật lý tối thiểu đề xuất: 8 Core CPU (x86_64), 32GB RAM, 512GB SSD (NVMe được ưu tiên), và 2 Network Interface Cards (NICs): 1 cho Management/Public, 1 cho Internal/Private.
Phân bổ tài nguyên cho các máy ảo (VM) trong môi trường thử nghiệm:
- OpenZiti Controller & Edge: 2 vCPU, 4GB RAM, 40GB Disk.
- Cloudflare Access (Tunnel): 1 vCPU, 1GB RAM, 20GB Disk.
- Identity-aware Proxy (Oauth2-Proxy): 1 vCPU, 2GB RAM, 20GB Disk.
- Internal DNS (Bind9/Unbound): 1 vCPU, 1GB RAM, 10GB Disk.
- Dung lượng còn lại: Dành cho Host Proxmox và Swap.
2. Cài đặt Proxmox và cấu hình mạng vật lý
Sử dụng ISO Proxmox VE 8.x để cài đặt. Trong quá trình cài đặt, đảm bảo chọn đúng Network Interface cho Management Interface (thường là vmbr0).
Truy cập SSH vào Proxmox Host sau khi cài đặt xong để cấu hình lại file network, tách biệt mạng Management và mạng Internal cho các dịch vụ Zero-Trust.
Chỉnh sửa file cấu hình mạng tại /etc/network/interfaces.
auto lo
iface lo inet loopback
# Management Network (Public/Internet)
iface enp1s0 inet dhcp
auto vmbr0
iface vmbr0 inet static
address 192.168.1.10/24
gateway 192.168.1.1
bridge-ports enp1s0
bridge-stp off
bridge-fd 0
# Internal Network (Private Zero-Trust)
auto vmbr1
iface vmbr1 inet static
address 10.20.30.1/24
bridge-ports enp2s0
bridge-stp off
bridge-fd 0
Kết quả mong đợi: Host Proxmox có 2 Bridge. vmbr0 kết nối ra Internet, vmbr1 là mạng riêng 10.20.30.0/24 để các VM giao tiếp nội bộ an toàn.
Áp dụng thay đổi bằng lệnh:
systemctl restart networking
Kiểm tra kết quả bằng lệnh ip addr và ip route để đảm bảo cả 2 interface đều UP và có route đúng.
3. Tạo các máy ảo riêng biệt cho dịch vụ
Chúng ta sẽ tạo 4 VM chạy Ubuntu Server 24.04 LTS để làm nền tảng cho các thành phần Zero-Trust. Sử dụng CLI của Proxmox (qm) để tạo nhanh và chính xác.
Trước tiên, upload file ISO Ubuntu Server vào Datastore của Proxmox (thường là local). Giả sử tên file là ubuntu-24.04-live-server-amd64.iso.
Tạo VM cho OpenZiti (ID 100):
qm create 100 --net0 virtio,bridge=vmbr1 --memory 4096 --cores 2 --scsihw VirtIO-SCSI --scsi0 local-lvm:40 --ide0 local:iso/ubuntu-24.04-live-server-amd64.iso --boot c --bios seabios --name "ziti-controller-edge"
Kết quả mong đợi: VM ID 100 được tạo với 4GB RAM, 2 vCPU, kết nối vào mạng Internal (vmbr1).
Tạo VM cho Cloudflare Tunnel (ID 101):
qm create 101 --net0 virtio,bridge=vmbr1 --memory 1024 --cores 1 --scsihw VirtIO-SCSI --scsi0 local-lvm:20 --ide0 local:iso/ubuntu-24.04-live-server-amd64.iso --boot c --bios seabios --name "cloudflare-tunnel"
Tạo VM cho Identity-aware Proxy (ID 102):
qm create 102 --net0 virtio,bridge=vmbr1 --memory 2048 --cores 1 --scsihw VirtIO-SCSI --scsi0 local-lvm:20 --ide0 local:iso/ubuntu-24.04-live-server-amd64.iso --boot c --bios seabios --name "oauth2-proxy"
Tạo VM cho Internal DNS (ID 103):
qm create 103 --net0 virtio,bridge=vmbr1 --memory 1024 --cores 1 --scsihw VirtIO-SCSI --scsi0 local-lvm:10 --ide0 local:iso/ubuntu-24.04-live-server-amd64.iso --boot c --bios seabios --name "internal-dns"
Kiểm tra danh sách VM:
qm list
Kết quả mong đợi: Xuất hiện 4 VM với trạng thái stopped, đúng cấu hình RAM/CPU đã đặt.
4. Thiết lập DNS nội bộ và cấu hình Firewall cơ bản
Trong kiến trúc Zero-Trust, việc phân giải tên miền nội bộ là bắt buộc. Chúng ta sẽ cấu hình VM ID 103 làm Internal DNS Server.
Chạy Ubuntu Server trên VM ID 103, cài đặt gói BIND9.
apt update && apt install -y bind9 bind9utils
systemctl enable bind9
Cấu hình file /etc/bind/named.conf.options để cho phép truy vấn từ mạng 10.20.30.0/24:
options {
directory "/var/cache/bind";
listen-on port 53 { 10.20.30.103; };
allow-query { 10.20.30.0/24; };
recursion yes;
forwarders {
1.1.1.1;
8.8.8.8;
};
};
Tạo zone file cho miền nội bộ ziti.local tại /etc/bind/zones/ziti.local:
$TTL 86400
@ IN SOA ns1.ziti.local. admin.ziti.local. (
2 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
@ IN NS ns1.ziti.local.
@ IN A 10.20.30.103
ns1 IN A 10.20.30.103
ziti-controller IN A 10.20.30.100
cloudflare-tunnel IN A 10.20.30.101
oauth2-proxy IN A 10.20.30.102
Thêm zone vào /etc/bind/named.conf.local:
zone "ziti.local" {
type { master; };
file { "/etc/bind/zones/ziti.local"; };
};
Khởi động lại DNS:
systemctl restart bind9
Kết quả mong đợi: Dịch vụ DNS chạy ổn định, có thể ping tên miền nội bộ từ các VM khác.
Cấu hình Firewall cơ bản trên Proxmox Host (PVE Firewall) để bảo vệ Host và cho phép giao tiếp giữa các VM.
Chỉnh sửa /etc/pve/firewall/100.fw (thay 100 bằng ID VM tương ứng) để cho phép traffic trên các port cần thiết (22, 8443, 443, 8080).
Ví dụ cho VM OpenZiti (ID 100):
netif "vmbr1" {
options "in:accept, out:accept"
}
tcp 22 {
options "in:accept"
}
tcp 8443 {
options "in:accept"
}
tcp 443 {
options "in:accept"
}
Bật firewall cho VM trong giao diện web Proxmox hoặc dùng lệnh:
pvesh set /nodes/pve/config/firewall/100 -enabled 1
Kiểm tra firewall:
pvesh get /nodes/pve/config/firewall/100
5. Kiểm tra kết nối mạng giữa các VM và Gateway
Trên mỗi VM (100, 101, 102), cấu hình Static IP và DNS Server trỏ về VM DNS (10.20.30.103).
Chạy lệnh cấu hình mạng trên Ubuntu (sử dụng netplan, ví dụ cho VM 100):
cat > /etc/netplan/00-installer-config.yaml
Lặp lại tương tự cho VM 101 (IP 10.20.30.101) và VM 102 (IP 10.20.30.102).
Kiểm tra kết nối nội bộ từ VM 100:
ping -c 4 ziti-controller.ziti.local
ping -c 4 cloudflare-tunnel.ziti.local
ping -c 4 oauth2-proxy.ziti.local
Kết quả mong đợi: Tất cả các lệnh ping đều trả về 0% packet loss và resolve đúng IP.
Kiểm tra kết nối ra Internet (Gateway) từ VM 100. Lưu ý: Cần cấu hình NAT trên Proxmox Host nếu muốn các VM truy cập Internet.
Cấu hình IPTables NAT trên Proxmox Host:
iptables -t nat -A POSTROUTING -s 10.20.30.0/24 -o enp1s0 -j MASQUERADE
iptables -A FORWARD -i vmbr1 -o enp1s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp1s0 -o vmbr1 -j ACCEPT
Lưu cấu hình iptables (tùy thuộc vào distro host, thường là netfilter-persistent save hoặc iptables-save > /etc/iptables/rules.v4).
Kiểm tra kết nối Internet từ VM 100:
curl -I https://www.google.com
Kết quả mong đợi: Trả về HTTP 200 OK, chứng tỏ VM đã có thể truy cập Internet qua Gateway Proxmox.
Verify toàn bộ môi trường:
ip route
dig @10.20.30.103 ziti-controller.ziti.local
curl -v https://ziti-controller.ziti.local # Nếu đã có cert, hoặc kiểm tra port
Đ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 2: Triển khai và cấu hình Identity Provider (IdP) cho Zero-Trust »