Files
proxmox/reports/analyses/DNS_CONFLICT_RESOLUTION.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

8.1 KiB

DNS Conflict Resolution Plan

Critical Issue Summary

Problem: 9 hostnames pointing to the same Cloudflare tunnel (10ab22da-8ea3-4e2e-a896-27ece2211a05) without proper ingress rules.

Impact: Services failing, routing conflicts, difficult troubleshooting.

Root Cause Analysis

DNS Zone File Shows:

9 hostnames → 10ab22da-8ea3-4e2e-a896-27ece2211a05.cfargotunnel.com

Current Tunnel Status

  • Tunnel ID: 10ab22da-8ea3-4e2e-a896-27ece2211a05
  • Status: ⚠️ DOWN (needs configuration)
  • Location: Should be in VMID 102 on r630-02
  • Target: Should route to central Nginx at 192.168.11.21:80

Affected Services

Hostname Service Expected Target
dbis-admin.d-bis.org Admin UI http://192.168.11.21:80
dbis-api.d-bis.org API v1 http://192.168.11.21:80
dbis-api-2.d-bis.org API v2 http://192.168.11.21:80
mim4u.org.d-bis.org MIM4U Site http://192.168.11.21:80
www.mim4u.org.d-bis.org MIM4U WWW http://192.168.11.21:80
rpc-http-prv.d-bis.org Private HTTP RPC http://192.168.11.21:80
rpc-http-pub.d-bis.org Public HTTP RPC http://192.168.11.21:80
rpc-ws-prv.d-bis.org Private WS RPC http://192.168.11.21:80
rpc-ws-pub.d-bis.org Public WS RPC http://192.168.11.21:80

Resolution Steps

Step 1: Verify Tunnel Configuration Location

# Check if tunnel config exists in VMID 102
ssh root@192.168.11.12 "pct exec 102 -- ls -la /etc/cloudflared/ | grep 10ab22da"

Step 2: Create/Update Tunnel Configuration

The tunnel needs a complete ingress configuration file:

File: /etc/cloudflared/tunnel-services.yml (in VMID 102)

tunnel: 10ab22da-8ea3-4e2e-a896-27ece2211a05
credentials-file: /etc/cloudflared/credentials-services.json

ingress:
  # Admin Interface
  - hostname: dbis-admin.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: dbis-admin.d-bis.org

  # API Endpoints
  - hostname: dbis-api.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: dbis-api.d-bis.org

  - hostname: dbis-api-2.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: dbis-api-2.d-bis.org

  # MIM4U Services
  - hostname: mim4u.org.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: mim4u.org.d-bis.org

  - hostname: www.mim4u.org.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: www.mim4u.org.d-bis.org

  # RPC Endpoints - HTTP
  - hostname: rpc-http-prv.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: rpc-http-prv.d-bis.org

  - hostname: rpc-http-pub.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: rpc-http-pub.d-bis.org

  # RPC Endpoints - WebSocket
  - hostname: rpc-ws-prv.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: rpc-ws-prv.d-bis.org

  - hostname: rpc-ws-pub.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: rpc-ws-pub.d-bis.org

  # Catch-all (MUST be last)
  - service: http_status:404

# Metrics
metrics: 127.0.0.1:9090

# Logging
loglevel: info

# Grace period
gracePeriod: 30s

Step 3: Create Systemd Service

File: /etc/systemd/system/cloudflared-services.service

[Unit]
Description=Cloudflare Tunnel for Services (RPC, API, Admin, MIM4U)
After=network.target

[Service]
TimeoutStartSec=0
Type=notify
ExecStart=/usr/local/bin/cloudflared --config /etc/cloudflared/tunnel-services.yml tunnel run
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

Step 4: Fix TTL Values

In Cloudflare Dashboard:

  1. Go to DNSRecords
  2. For each CNAME record, change TTL from 1 to 300 (5 minutes) or Auto
  3. Save changes

Affected Records:

  • All 9 CNAME records pointing to 10ab22da-8ea3-4e2e-a896-27ece2211a05.cfargotunnel.com

Step 5: Verify Nginx Configuration

Ensure Nginx on 192.168.11.21:80 has server blocks for all hostnames:

# Example server block
server {
    listen 80;
    server_name dbis-admin.d-bis.org;
    
    location / {
        proxy_pass http://<backend>;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Automated Fix Script

Create a script to deploy the fix:

#!/bin/bash
# fix-shared-tunnel.sh

PROXMOX_HOST="192.168.11.12"
VMID="102"
TUNNEL_ID="10ab22da-8ea3-4e2e-a896-27ece2211a05"

echo "Fixing shared tunnel configuration..."

# 1. Create config file
ssh root@${PROXMOX_HOST} "pct exec ${VMID} -- bash -c 'cat > /etc/cloudflared/tunnel-services.yml << \"EOF\"
tunnel: ${TUNNEL_ID}
credentials-file: /etc/cloudflared/credentials-services.json

ingress:
  - hostname: dbis-admin.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: dbis-admin.d-bis.org
  - hostname: dbis-api.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: dbis-api.d-bis.org
  - hostname: dbis-api-2.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: dbis-api-2.d-bis.org
  - hostname: mim4u.org.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: mim4u.org.d-bis.org
  - hostname: www.mim4u.org.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: www.mim4u.org.d-bis.org
  - hostname: rpc-http-prv.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: rpc-http-prv.d-bis.org
  - hostname: rpc-http-pub.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: rpc-http-pub.d-bis.org
  - hostname: rpc-ws-prv.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: rpc-ws-prv.d-bis.org
  - hostname: rpc-ws-pub.d-bis.org
    service: http://192.168.11.21:80
    originRequest:
      httpHostHeader: rpc-ws-pub.d-bis.org
  - service: http_status:404

metrics: 127.0.0.1:9090
loglevel: info
gracePeriod: 30s
EOF'"

# 2. Create systemd service
ssh root@${PROXMOX_HOST} "pct exec ${VMID} -- bash -c 'cat > /etc/systemd/system/cloudflared-services.service << \"EOF\"
[Unit]
Description=Cloudflare Tunnel for Services
After=network.target

[Service]
TimeoutStartSec=0
Type=notify
ExecStart=/usr/local/bin/cloudflared --config /etc/cloudflared/tunnel-services.yml tunnel run
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
EOF'"

# 3. Reload systemd and start service
ssh root@${PROXMOX_HOST} "pct exec ${VMID} -- systemctl daemon-reload"
ssh root@${PROXMOX_HOST} "pct exec ${VMID} -- systemctl enable cloudflared-services.service"
ssh root@${PROXMOX_HOST} "pct exec ${VMID} -- systemctl start cloudflared-services.service"

# 4. Check status
ssh root@${PROXMOX_HOST} "pct exec ${VMID} -- systemctl status cloudflared-services.service"

echo "Done! Check tunnel status in Cloudflare dashboard."

Testing

After applying the fix:

# Test each hostname
for host in dbis-admin dbis-api dbis-api-2 mim4u.org www.mim4u.org rpc-http-prv rpc-http-pub rpc-ws-prv rpc-ws-pub; do
    echo "Testing ${host}.d-bis.org..."
    curl -I "https://${host}.d-bis.org" 2>&1 | head -1
done

Verification Checklist

  • Tunnel configuration file created
  • Systemd service created and enabled
  • Tunnel service running
  • All 9 hostnames accessible
  • TTL values updated in Cloudflare
  • Nginx routing correctly
  • No 404 errors for valid hostnames

Long-term Recommendations

  1. Separate Tunnels: Consider splitting into separate tunnels:

    • RPC tunnel (4 hostnames)
    • API tunnel (3 hostnames)
    • Web tunnel (2 hostnames)
  2. TTL Standardization: Use consistent TTL values (300 or 3600)

  3. Monitoring: Set up alerts for tunnel health

  4. Documentation: Document all tunnel configurations

Summary

Issue: 9 hostnames sharing one tunnel without proper ingress rules
Fix: Create complete ingress configuration with all hostnames
Status: ⚠️ Requires manual configuration
Priority: 🔴 HIGH - Services are likely failing