Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
225 lines
9.8 KiB
Bash
Executable File
225 lines
9.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Comprehensive network connectivity check for NPMplus
|
|
# Checks: UDM Pro firewall, Proxmox bridge VLAN, backend service reachability
|
|
|
|
set -euo pipefail
|
|
|
|
# Load IP configuration
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
|
|
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
CYAN='\033[0;36m'
|
|
NC='\033[0m'
|
|
|
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
|
|
log_warn() { echo -e "${YELLOW}[⚠]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[✗]${NC} $1"; }
|
|
|
|
PROXMOX_HOST="${1:-192.168.11.11}"
|
|
CONTAINER_ID="${2:-10233}"
|
|
UDM_PRO_IP="${3:-192.168.11.1}"
|
|
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "🔍 NPMplus Network Connectivity Diagnostic"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
|
|
# Get NPMplus container IP
|
|
NPMPLUS_IP=$(ssh root@"$PROXMOX_HOST" "pct exec $CONTAINER_ID -- hostname -I | awk '{print \$1}'" 2>/dev/null || echo 'unknown')
|
|
log_info "NPMplus Container IP: $NPMPLUS_IP"
|
|
echo ""
|
|
|
|
# Check 1: Proxmox Bridge VLAN Configuration
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
log_info "Check 1: Proxmox Bridge VLAN Configuration"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
|
|
log_info "Checking vmbr0 VLAN configuration on $PROXMOX_HOST..."
|
|
BRIDGE_VLAN=$(ssh root@"$PROXMOX_HOST" "bridge vlan show vmbr0 2>/dev/null | grep -E '11|PVID' | head -5" || echo "Failed to check")
|
|
|
|
if echo "$BRIDGE_VLAN" | grep -q "11"; then
|
|
log_success "VLAN 11 is configured on vmbr0"
|
|
echo "$BRIDGE_VLAN" | while IFS= read -r line; do
|
|
log_info " $line"
|
|
done
|
|
else
|
|
log_warn "VLAN 11 may not be properly configured on vmbr0"
|
|
log_info "Output: $BRIDGE_VLAN"
|
|
fi
|
|
echo ""
|
|
|
|
log_info "Checking container network configuration..."
|
|
CONTAINER_NET=$(ssh root@"$PROXMOX_HOST" "pct config $CONTAINER_ID | grep -E 'net0|net1'" || echo "Failed")
|
|
if echo "$CONTAINER_NET" | grep -q "tag=11"; then
|
|
log_success "Container is configured for VLAN 11"
|
|
echo "$CONTAINER_NET" | while IFS= read -r line; do
|
|
log_info " $line"
|
|
done
|
|
else
|
|
log_warn "Container may not be on VLAN 11"
|
|
log_info "Config: $CONTAINER_NET"
|
|
fi
|
|
echo ""
|
|
|
|
# Check 2: Container Network Interface Status
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
log_info "Check 2: Container Network Interface Status"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
|
|
log_info "Checking eth0 interface in container..."
|
|
ETH0_STATUS=$(ssh root@"$PROXMOX_HOST" "pct exec $CONTAINER_ID -- ip addr show eth0 2>/dev/null | grep -E 'inet |state|UP|DOWN'" || echo "Failed")
|
|
|
|
if echo "$ETH0_STATUS" | grep -q "inet.*192.168.11"; then
|
|
log_success "Container has IP on ${NETWORK_192_168_11_0:-192.168.11.0}/24 network"
|
|
echo "$ETH0_STATUS" | grep "inet " | while IFS= read -r line; do
|
|
log_info " $line"
|
|
done
|
|
else
|
|
log_warn "Container may not have correct IP address"
|
|
log_info "Status: $ETH0_STATUS"
|
|
fi
|
|
|
|
if echo "$ETH0_STATUS" | grep -q "state UP"; then
|
|
log_success "eth0 interface is UP"
|
|
else
|
|
log_error "eth0 interface may be DOWN"
|
|
fi
|
|
echo ""
|
|
|
|
log_info "Checking routing table in container..."
|
|
ROUTES=$(ssh root@"$PROXMOX_HOST" "pct exec $CONTAINER_ID -- ip route show 2>/dev/null" || echo "Failed")
|
|
if echo "$ROUTES" | grep -q "${NETWORK_192_168_11_0:-192.168.11.0}/24"; then
|
|
log_success "Route to ${NETWORK_192_168_11_0:-192.168.11.0}/24 exists"
|
|
echo "$ROUTES" | grep "192.168.11" | while IFS= read -r line; do
|
|
log_info " $line"
|
|
done
|
|
else
|
|
log_warn "Route to ${NETWORK_192_168_11_0:-192.168.11.0}/24 may be missing"
|
|
log_info "Routes: $ROUTES"
|
|
fi
|
|
echo ""
|
|
|
|
# Check 3: Gateway Connectivity
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
log_info "Check 3: Gateway Connectivity"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
|
|
log_info "Testing connectivity to UDM Pro gateway ($UDM_PRO_IP)..."
|
|
GATEWAY_PING=$(ssh root@"$PROXMOX_HOST" "pct exec $CONTAINER_ID -- ping -c 2 -W 2 $UDM_PRO_IP 2>&1" || echo "Failed")
|
|
|
|
if echo "$GATEWAY_PING" | grep -q "2 received"; then
|
|
log_success "Gateway is reachable"
|
|
else
|
|
log_error "Gateway is NOT reachable"
|
|
log_info "Output: $GATEWAY_PING"
|
|
fi
|
|
echo ""
|
|
|
|
# Check 4: Backend Service Reachability
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
log_info "Check 4: Backend Service Reachability"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
|
|
declare -A BACKEND_SERVICES=(
|
|
["${IP_BLOCKSCOUT:-${IP_DEVICE_14:-${IP_DEVICE_14:-${IP_DEVICE_14:-192.168.11.14}}}0}:80"]="VMID 5000 (blockscout-1)"
|
|
["${IP_DBIS_FRONTEND:-${IP_SERVICE_13:-${IP_SERVICE_13:-${IP_SERVICE_13:-192.168.11.13}}}0}:80"]="VMID 10130 (dbis-frontend)"
|
|
["${IP_DBIS_API:-192.168.11.155}:3000"]="VMID 10150 (dbis-api-primary)"
|
|
["${IP_DBIS_API_2:-192.168.11.156}:3000"]="VMID 10151 (dbis-api-secondary)"
|
|
["${IP_SERVICE_36:-${IP_SERVICE_36:-${IP_SERVICE_36:-${IP_SERVICE_36:-192.168.11.36}}}}:80"]="VMID 7811 (mim-api-1)"
|
|
["${RPC_CORE_1:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-192.168.11.21}}}1}:443"]="VMID 2101 (besu-rpc-core-1)"
|
|
["${RPC_PUBLIC_1:-192.168.11.221}:443"]="VMID 2201 (besu-rpc-public-1)"
|
|
["${RPC_PRIVATE_1:-192.168.11.232}:443"]="VMID 2301 (besu-rpc-private-1)"
|
|
# Note: VMID 2302 (besu-rpc-private-2) - not in latest mapping, may need different IP or is new service
|
|
)
|
|
|
|
working_count=0
|
|
failed_count=0
|
|
|
|
for backend in "${!BACKEND_SERVICES[@]}"; do
|
|
service_info="${BACKEND_SERVICES[$backend]}"
|
|
ip="${backend%%:*}"
|
|
port="${backend##*:}"
|
|
|
|
log_info "Testing: $service_info"
|
|
log_info " IP: $ip, Port: $port"
|
|
|
|
# Test ping first
|
|
ping_result=$(ssh root@"$PROXMOX_HOST" "pct exec $CONTAINER_ID -- ping -c 1 -W 2 $ip 2>&1" || echo "failed")
|
|
|
|
if echo "$ping_result" | grep -q "1 received"; then
|
|
log_success " ✓ Ping successful"
|
|
|
|
# Test port connectivity
|
|
if [ "$port" = "443" ]; then
|
|
port_test=$(ssh root@"$PROXMOX_HOST" "pct exec $CONTAINER_ID -- timeout 3 bash -c '</dev/tcp/$ip/$port' 2>&1" || echo "failed")
|
|
else
|
|
port_test=$(ssh root@"$PROXMOX_HOST" "pct exec $CONTAINER_ID -- timeout 3 bash -c '</dev/tcp/$ip/$port' 2>&1" || echo "failed")
|
|
fi
|
|
|
|
if [ "$port_test" = "" ] || echo "$port_test" | grep -q "Connection refused\|Connection timed out"; then
|
|
log_warn " ⚠️ Port $port not accessible (service may not be listening)"
|
|
else
|
|
log_success " ✓ Port $port is accessible"
|
|
working_count=$((working_count + 1))
|
|
fi
|
|
else
|
|
log_error " ✗ Ping failed - network routing issue"
|
|
failed_count=$((failed_count + 1))
|
|
fi
|
|
echo ""
|
|
done
|
|
|
|
# Check 5: Test from Proxmox host (bypass container networking)
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
log_info "Check 5: Testing from Proxmox Host (Bypass Container)"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
|
|
log_info "Testing backend connectivity from Proxmox host $PROXMOX_HOST..."
|
|
HOST_PING=$(ssh root@"$PROXMOX_HOST" "ping -c 2 ${IP_BLOCKSCOUT:-${IP_DEVICE_14:-${IP_DEVICE_14:-${IP_DEVICE_14:-192.168.11.14}}}0} 2>&1" || echo "Failed")
|
|
|
|
if echo "$HOST_PING" | grep -q "2 received"; then
|
|
log_success "Proxmox host can reach backend services"
|
|
log_info "This suggests the issue is container-specific networking"
|
|
else
|
|
log_warn "Proxmox host also cannot reach backend services"
|
|
log_info "This suggests a broader network configuration issue"
|
|
fi
|
|
echo ""
|
|
|
|
# Summary
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
log_info "📊 Summary"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
log_info "Backend Services:"
|
|
log_info " Working: $working_count/${#BACKEND_SERVICES[@]}"
|
|
log_info " Failed: $failed_count/${#BACKEND_SERVICES[@]}"
|
|
echo ""
|
|
|
|
if [ $failed_count -gt 0 ]; then
|
|
log_warn "⚠️ Network connectivity issues detected"
|
|
echo ""
|
|
log_info "Recommended next steps:"
|
|
echo " 1. Check UDM Pro firewall rules (web UI: https://$UDM_PRO_IP)"
|
|
echo " 2. Verify VLAN 11 configuration on UDM Pro"
|
|
echo " 3. Check if backend services are actually listening on their ports"
|
|
echo " 4. Review Proxmox bridge VLAN tagging"
|
|
else
|
|
log_success "✅ All backend services are reachable!"
|
|
fi
|
|
echo ""
|