📚 Navigation: Main README | Documentation Index | Traefik Connectivity Fix
The 10.0.2.8/29 subnet needs to be properly configured in Proxmox to ensure MetalLB can announce and route traffic to the LoadBalancer IPs.
Related Documentation:
- Traefik External Connectivity Fix - Troubleshooting LoadBalancer access
- MetalLB Configurations - Kubernetes MetalLB resources
- Configuration Scripts - Network configuration automation
- Main README - Network architecture overview
Based on your Terraform configuration:
- Public Bridge:
vmbr1 - Private Bridge:
vmbr2 - Node IPs:
10.0.1.211-213(on public bridge) - MetalLB Subnet:
10.0.2.8/29(needs routing)
The 10.0.2.8/29 subnet needs to be routable through your public bridge (vmbr1). You have several options:
# On Proxmox host, add the subnet as an additional IP range
# This allows the bridge to route traffic to the subnet
# Check current bridge configuration
ip addr show vmbr1
# Add subnet route (if not automatically routed)
ip route add 10.0.2.8/29 dev vmbr1
# Make permanent by adding to /etc/network/interfaces# Create a new bridge specifically for MetalLB traffic
# This provides better isolation but requires more configurationEdit /etc/network/interfaces on your Proxmox host:
# Current configuration (example)
auto vmbr1
iface vmbr1 inet static
address 10.0.1.XXX/24
gateway 10.0.1.1
bridge-ports eth0
bridge-stp off
bridge-fd 0
# Add MetalLB subnet routing
# Option 1: Add as additional address
auto vmbr1:1
iface vmbr1:1 inet static
address 10.0.2.8/29
# Option 2: Add routing rules
up ip route add 10.0.2.8/29 dev vmbr1
down ip route del 10.0.2.8/29 dev vmbr1Ensure Proxmox firewall allows traffic to the MetalLB subnet:
# Add firewall rules for MetalLB subnet
# Allow HTTP/HTTPS traffic to MetalLB IPs
iptables -A FORWARD -d 10.0.2.8/29 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -d 10.0.2.8/29 -p tcp --dport 443 -j ACCEPT
# Allow all traffic to MetalLB subnet (less restrictive)
iptables -A FORWARD -d 10.0.2.8/29 -j ACCEPT# SSH to your Proxmox host
ssh root@your-proxmox-host
# Check current bridge configuration
ip addr show vmbr1
ip route show
# Check if subnet is already routable
ping -c 1 10.0.2.9Choose one of these approaches:
# Add route for MetalLB subnet through public bridge
ip route add 10.0.2.8/29 dev vmbr1
# Test connectivity
ping -c 1 10.0.2.9
# If successful, make permanent
echo "up ip route add 10.0.2.8/29 dev vmbr1" >> /etc/network/interfaces
echo "down ip route del 10.0.2.8/29 dev vmbr1" >> /etc/network/interfaces# Add subnet as bridge alias
ip addr add 10.0.2.8/29 dev vmbr1
# Make permanent in /etc/network/interfaces
cat >> /etc/network/interfaces << EOF
auto vmbr1:metallb
iface vmbr1:metallb inet static
address 10.0.2.8/29
EOF# Allow traffic to MetalLB subnet
iptables -I FORWARD -d 10.0.2.8/29 -j ACCEPT
# Save iptables rules (method varies by distribution)
iptables-save > /etc/iptables/rules.v4
# or
netfilter-persistent save# Check routing
ip route show | grep 198.55.108
# Test connectivity from Proxmox host
curl -I http://10.0.2.9
# Check from external network
# (from another machine)
curl -I http://10.0.2.9Your terraform.tfvars already includes the subnet:
metallb_addresses = ["10.0.1.214/32", "10.0.2.8/29"]However, this doesn't automatically configure Proxmox networking. The subnet configuration must be done on the Proxmox host itself.
Symptoms:
- MetalLB assigns IPs correctly
- Services show EXTERNAL-IP from subnet
- External connectivity fails
Solutions:
-
Check Proxmox routing:
ip route show | grep 198.55.108 -
Verify bridge configuration:
brctl show vmbr1 ip addr show vmbr1
-
Test from Proxmox host:
curl -I http://10.0.2.9
-
Check firewall rules:
iptables -L FORWARD | grep 198.55.108
Symptoms:
- Intermittent connectivity
- ARP table issues
Solutions:
-
Enable proxy ARP:
echo 1 > /proc/sys/net/ipv4/conf/vmbr1/proxy_arp
-
Add permanent proxy ARP:
echo "net.ipv4.conf.vmbr1.proxy_arp = 1" >> /etc/sysctl.conf
- Immediate: Configure Proxmox network routing for
10.0.2.8/29 - Test: Verify external connectivity to
10.0.2.9 - DNS: Update DNS records to point to new IPs
- Monitor: Check MetalLB speaker logs for announcement issues
Internet
↓
Router/Firewall (10.0.1.1)
↓
Proxmox Host (10.0.1.XXX)
↓
vmbr1 Bridge
├── Node IPs: 10.0.1.211-213
└── MetalLB Subnet: 10.0.2.8/29
├── 10.0.2.9 (Traefik)
├── 10.0.2.10 (Available)
├── 10.0.2.11 (Available)
├── 10.0.2.12 (Available)
├── 10.0.2.13 (Available)
└── 10.0.2.14 (Available)
- Firewall Rules: Only allow necessary ports (80, 443) to MetalLB subnet
- Network Segmentation: Consider isolating MetalLB traffic if needed
- Monitoring: Monitor traffic to MetalLB IPs for anomalies
- Access Control: Ensure only authorized services can request LoadBalancer IPs