Files
proxmox/docs/archive/historical/VMID_IP_MAPPING_SYSTEM.md
defiQUG cb47cce074 Complete markdown files cleanup and organization
- Organized 252 files across project
- Root directory: 187 → 2 files (98.9% reduction)
- Moved configuration guides to docs/04-configuration/
- Moved troubleshooting guides to docs/09-troubleshooting/
- Moved quick start guides to docs/01-getting-started/
- Moved reports to reports/ directory
- Archived temporary files
- Generated comprehensive reports and documentation
- Created maintenance scripts and guides

All files organized according to established standards.
2026-01-06 01:46:25 -08:00

3.4 KiB

VMID to IP Address Mapping System

Overview

This document describes a systematic approach to mapping VMIDs to IP addresses for better network management and organization.

Mapping Strategy

Current Network: 192.168.11.0/24

For the 192.168.11.X network, we use VMID-based IP assignment:

VMID Pattern IP Mapping Example Notes
4-digit (2400-2499) Last 2 digits = last octet VMID 2400 → 192.168.11.240 Direct alignment
4-digit (2500-2599) Last 2 digits = last octet VMID 2500 → 192.168.11.250 Direct alignment

Future Network Expansion

For future VLAN-based networks, use the following patterns:

VMID Pattern Network IP Mapping Example
3-digit (100-999) 192.168.0.X Last 3 digits = last octet VMID 101 → 192.168.0.101
4-digit (1000-1099) 192.168.1.X Last 3 digits = last octet VMID 1001 → 192.168.1.1
4-digit (1100-1199) 192.168.1.X Last 2 digits = last octet VMID 1101 → 192.168.1.101
5-digit (10000-10999) 192.168.10.X Last 3 digits = last octet VMID 10101 → 192.168.10.101

Implementation

Function: vmid_to_ip()

vmid_to_ip() {
    local vmid=$1
    local base_network="${2:-192.168.11}"
    
    # For 4-digit VMIDs in 192.168.11.X network
    if [[ $vmid =~ ^[0-9]{4}$ ]] && [[ "$base_network" == "192.168.11" ]]; then
        local last_octet=$((vmid % 1000))
        # Ensure last octet is in valid range (1-254, since .255 is broadcast)
        if [[ $last_octet -ge 1 ]] && [[ $last_octet -le 254 ]]; then
            echo "${base_network}.${last_octet}"
            return 0
        fi
    fi
    
    echo ""
    return 1
}

Usage Example

# Get IP for VMID 2400
IP=$(vmid_to_ip 2400)
echo "$IP"  # Output: 192.168.11.240

# Get IP for VMID 2401
IP=$(vmid_to_ip 2401)
echo "$IP"  # Output: 192.168.11.241

Current Allocations (192.168.11.0/24)

Infrastructure IPs

  • .1 - Gateway (ER605-A)
  • .8 - Omada Controller
  • .10-14 - Proxmox Hosts (ml110, r630-01 through r630-04)

Besu Validators (VMIDs 1000-1004)

  • VMID 1000 → 192.168.11.100
  • VMID 1001 → 192.168.11.101
  • VMID 1002 → 192.168.11.102
  • VMID 1003 → 192.168.11.103
  • VMID 1004 → 192.168.11.104

Besu Sentries (VMIDs 1500-1503)

  • VMID 1500 → 192.168.11.150
  • VMID 1501 → 192.168.11.151
  • VMID 1502 → 192.168.11.152
  • VMID 1503 → 192.168.11.153

Besu RPC Nodes (VMIDs 2500-2502)

  • VMID 2500 → 192.168.11.250
  • VMID 2501 → 192.168.11.251
  • VMID 2502 → 192.168.11.252

ThirdWeb RPC Nodes (VMIDs 2400-2402)

  • VMID 2400 → 192.168.11.240
  • VMID 2401 → 192.168.11.241
  • VMID 2402 → 192.168.11.242

Benefits

  1. Predictable: VMID directly maps to IP address
  2. Scalable: Easy to determine IP from VMID
  3. Organized: Logical grouping by VMID ranges
  4. Maintainable: Simple rules for allocation

Network Constraints

  • 192.168.11.0/24 has 254 usable IPs (.1 through .254)
  • .255 is the broadcast address (cannot be used)
  • .254 is the last usable host IP

Future Considerations

When migrating to VLAN-based networks:

  • Use separate subnets for different service types
  • Apply VMID-based mapping per subnet
  • Maintain clear documentation of allocations
  • Reserve IP ranges for infrastructure (gateway, switches, etc.)