IP Allocation
Complete IP address allocation and DNS record tables for the cluster.
Node Addresses
| IP Address | Hostname | Role | Architecture |
| 192.168.0.200 | -- | Talos VIP (unused) | Virtual IP |
| 192.168.0.201 | worker-01 | Control Plane | ARM64 (Pi 4) |
| 192.168.0.202 | worker-02 | Control Plane | ARM64 (Pi 4) |
| 192.168.0.203 | worker-03 | Control Plane | AMD64 |
| 192.168.0.204 | worker-04 | Worker (Intel) | AMD64 |
| 192.168.0.211 | worker-pi-01 | Worker (Pi) | ARM64 |
| 192.168.0.212 | worker-pi-02 | Worker (Pi) | ARM64 |
| 192.168.0.213 | worker-pi-03 | Worker (Pi) | ARM64 |
LoadBalancer IP Pool
The Cilium LBIPAM pool allocates LoadBalancer service IPs from the range 192.168.0.220-239.
| IP Address | Service | Type |
| 192.168.0.220-237 | Available | Cilium LBIPAM Pool |
| 192.168.0.238 | envoy-internal | Gateway |
| 192.168.0.239 | envoy-external | Gateway |
Gateway Details
| Gateway | IP | Target Domain | Purpose |
| envoy-external | 192.168.0.239 | external.example.com | Receives traffic from Cloudflare tunnel via nginx |
| envoy-internal | 192.168.0.238 | internal.example.com | Receives traffic from LAN and Tailscale VPN |
Network Diagram
flowchart TB
subgraph Internet
CF[Cloudflare<br/>*.example.com]
end
subgraph Router["Ubiquiti Router"]
DHCP[DHCP / DNS]
end
subgraph Cluster["Cluster (192.168.0.0/24)"]
subgraph ControlPlane["Control Plane"]
CP1[192.168.0.201<br/>worker-01]
CP2[192.168.0.202<br/>worker-02]
CP3[192.168.0.203<br/>worker-03]
end
subgraph Workers["Workers"]
W4[192.168.0.204<br/>worker-04]
WP1[192.168.0.211<br/>worker-pi-01]
WP2[192.168.0.212<br/>worker-pi-02]
WP3[192.168.0.213<br/>worker-pi-03]
end
subgraph LB["LoadBalancers (Cilium L2)"]
EE[192.168.0.239<br/>envoy-external]
EI[192.168.0.238<br/>envoy-internal]
end
end
CF -->|Tunnel| EE
DHCP --> ControlPlane
DHCP --> Workers
DNS Records
Cloudflare-Managed Records
| Record | Type | Target | Proxied | Purpose |
*.example.com | CNAME | external.example.com | Yes | Wildcard for all services |
external.example.com | CNAME | <tunnel-id>.cfargotunnel.com | Yes | Cloudflare tunnel endpoint |
internal.example.com | A | 192.168.0.238 | No | Internal gateway |
Traffic Flow by Record
flowchart LR
subgraph External["External Access"]
W1["*.example.com"] -->|CNAME| E1["external.example.com"]
E1 -->|CNAME| T1["tunnel.cfargotunnel.com"]
T1 -->|Tunnel| N1[nginx]
N1 --> EE1[envoy-external<br/>192.168.0.239]
end
subgraph Internal["Internal Access"]
W3["internal.example.com"] -->|A record| EI1[envoy-internal<br/>192.168.0.238]
end
Address Space Summary
| Range | Purpose | Count |
| 192.168.0.200 | Talos VIP | 1 |
| 192.168.0.201-203 | Control plane nodes | 3 |
| 192.168.0.204 | Intel/AMD worker | 1 |
| 192.168.0.205-210 | Reserved (future workers) | 6 |
| 192.168.0.211-213 | Raspberry Pi workers | 3 |
| 192.168.0.214-219 | Reserved (future Pi workers) | 6 |
| 192.168.0.220-239 | Cilium LBIPAM pool | 20 |
DNS Interception
The Ubiquiti router intercepts all DNS traffic on port 53. To verify actual Cloudflare DNS records, use DNS over HTTPS (DoH):
curl -sH 'accept: application/dns-json' \
'https://cloudflare-dns.com/dns-query?name=echo.example.com&type=A' | jq