2025-11-26 10:00:45 +01:00
2025-10-24 17:17:01 +02:00

Free IP Scanner

Ein leistungsstarker, zuverlässiger Netzwerk-Scanner zur Identifizierung von belegten und freien IP-Adressen in lokalen Netzwerken. Entwickelt für Proxmox-Umgebungen und komplexe Netzwerk-Setups mit mehreren VLANs bei JTL-Software.

Python License

📋 Inhaltsverzeichnis

Features

  • 🔍 Mehrschichtige Erkennung: Kombiniert ARP-Scan, Nmap und TCP-Port-Checks für 100% Zuverlässigkeit
  • 🏷️ Hostname-Auflösung: Zeigt automatisch Hostnamen für erkannte IPs an
  • 📱 MAC-Adressen: Erfasst MAC-Adressen bei ARP-Scans
  • 🌐 Multi-Netzwerk Support: Scannt mehrere Netzwerke gleichzeitig
  • 🔗 Gemeinsame freie IPs: Findet Host-IDs, die in allen Netzwerken frei sind (ideal für Multi-Interface VMs)
  • ⚙️ Automatische Interface-Erkennung: Findet das richtige Netzwerk-Interface für ARP-Scans
  • Parallele Scans: Multithreading für schnelle Ergebnisse
  • 🎨 Farbige Ausgabe: Übersichtliche, farbcodierte Darstellung
  • 📊 Progress-Bar: Echtzeit-Fortschrittsanzeige bei umfangreichen Scans

🔧 Voraussetzungen

Basis-Anforderungen

  • Python 3.6+ (standardmäßig auf Debian/Ubuntu installiert)
  • Root/Sudo-Rechte (für ARP-Scan und aggressive Nmap-Scans)

Empfohlene Tools

Für beste Ergebnisse sollten folgende Tools installiert sein:

apt update
apt install -y arp-scan nmap

Ohne zusätzliche Tools:

  • Das Script funktioniert auch nur mit Ping und TCP-Port-Checks
  • Die Zuverlässigkeit ist dann jedoch eingeschränkt

📦 Installation

1. Repository klonen

git clone https://git.jtl-hosting.de/thomasciesla/free-ip-scanner.git
cd free-ip-scanner

2. Script ausführbar machen

chmod +x ip-scanner.py

3. Optionale Tools installieren

# Für maximale Zuverlässigkeit
sudo apt install arp-scan nmap

# Prüfen ob Installation erfolgreich war
arp-scan --version
nmap --version

🚀 Verwendung

Grundlegende Syntax

sudo ./ip-scanner.py <NETZWERK1> [NETZWERK2] [NETZWERK3] [OPTIONEN]

Einfachstes Beispiel

sudo ./ip-scanner.py 192.168.1.0/24

Typischer JTL-Hosting Anwendungsfall

# Zwei VLANs scannen
sudo ./ip-scanner.py 10.150.8.0/24 10.150.56.0/24 --method arp-scan

🔍 Scan-Methoden

Das Script unterstützt vier verschiedene Scan-Methoden:

1. ARP-Scan (Empfohlen) 🏆

sudo ./ip-scanner.py 10.150.8.0/24 --method arp-scan

Vorteile:

  • Arbeitet auf Layer 2 (Ethernet-Ebene)
  • Kann nicht blockiert werden (im Gegensatz zu ICMP/TCP)
  • Erkennt ALLE Geräte im lokalen Netzwerk
  • Findet auch Firewalls, Gateways und Geräte mit deaktiviertem Ping
  • Liefert MAC-Adressen

Nachteile:

  • ⚠️ Benötigt Root-Rechte
  • ⚠️ Funktioniert nur im lokalen Netzwerk (nicht über Router hinweg)

Wann verwenden:

  • Immer wenn möglich (höchste Zuverlässigkeit)
  • Besonders wichtig für vollständige Inventarisierung
  • Bei Proxmox-Umgebungen mit VLANs

2. Nmap (Sehr gut)

sudo ./ip-scanner.py 10.150.8.0/24 --method nmap

Vorteile:

  • Sehr zuverlässig durch multiple Probe-Methoden
  • Kombiniert ICMP, TCP SYN/ACK, UDP Pings
  • Findet die meisten Hosts, auch mit Firewall

Nachteile:

  • ⚠️ Langsamer als ARP-Scan
  • ⚠️ Kann durch aggressive Firewalls teilweise blockiert werden

Wann verwenden:

  • Wenn ARP-Scan nicht verfügbar ist
  • Für Remote-Netzwerke
  • Mit --aggressive Flag für Port-Scanning

3. Comprehensive (Fallback) 🔄

./ip-scanner.py 10.150.8.0/24 --method comprehensive

Vorteile:

  • Benötigt keine zusätzlichen Tools
  • Kombiniert Ping + TCP-Port-Checks
  • Funktioniert ohne Root-Rechte

Nachteile:

  • ⚠️ Weniger zuverlässig als ARP-Scan oder Nmap
  • ⚠️ Kann Hosts übersehen, die ICMP und gängige Ports blockieren
  • ⚠️ Langsamer bei großen Netzwerken

Wann verwenden:

  • Als Fallback wenn ARP-Scan und Nmap nicht verfügbar sind
  • Für schnelle Checks ohne Installation zusätzlicher Tools

4. Auto (Standard) 🎯

sudo ./ip-scanner.py 10.150.8.0/24

Funktionsweise:

  1. Prüft ob arp-scan verfügbar → verwendet ARP-Scan
  2. Falls nicht: Prüft ob nmap verfügbar → verwendet Nmap
  3. Falls nicht: Verwendet Comprehensive-Methode

Wann verwenden:

  • Für die meisten Anwendungsfälle
  • Wenn du nicht sicher bist, welche Methode am besten ist

📚 Argumente und Optionen

Positionsargumente

Argument Beschreibung Beispiel
networks Ein oder mehrere Netzwerke im CIDR-Format 192.168.0.0/24 10.0.0.0/24

Scan-Optionen

Argument Kurzform Standard Beschreibung
--method -m auto Scan-Methode: auto, arp-scan, nmap, comprehensive
--threads -t 100 Anzahl paralleler Threads für Ping/TCP-Scan
--ports -p 22,80,443,3389,8080,8443,3306,5432 Kommagetrennte Liste von TCP-Ports für Port-Check
--aggressive - False Aktiviert aggressiven Nmap-Scan mit Port-Scanning
--interface -i auto Netzwerk-Interface für ARP-Scan (z.B. vmbr0, eth0)

Ausgabe-Optionen

Argument Kurzform Standard Beschreibung
--show-all -a False Zeigt alle IPs auch bei großen Listen (keine Kürzung)
--no-free - False Zeigt keine freien IPs an (nur belegte)
--debug - False Aktiviert Debug-Modus mit detaillierter Ausgabe

Hilfe

./ip-scanner.py --help

💡 Beispiele

Basis-Beispiele

Einzelnes Netzwerk scannen

sudo ./ip-scanner.py 192.168.1.0/24

Mehrere Netzwerke gleichzeitig scannen

sudo ./ip-scanner.py 10.150.8.0/24 10.150.56.0/24 172.16.0.0/24

Alle IPs anzeigen (keine Kürzung)

sudo ./ip-scanner.py 192.168.1.0/24 -a

Nur belegte IPs anzeigen

sudo ./ip-scanner.py 192.168.1.0/24 --no-free

Erweiterte Beispiele

ARP-Scan mit spezifischem Interface

sudo ./ip-scanner.py 10.150.8.0/24 --method arp-scan --interface vmbr0

Aggressiver Nmap-Scan mit Port-Scanning

sudo ./ip-scanner.py 10.0.0.0/24 --method nmap --aggressive

Schneller Scan mit vielen Threads

./ip-scanner.py 192.168.0.0/24 --threads 200

Custom TCP-Ports prüfen (z.B. für Plesk, Proxmox)

./ip-scanner.py 10.0.0.0/24 --ports 22,80,443,8006,8080,8443,9090

Debug-Modus für Troubleshooting

sudo ./ip-scanner.py 10.150.8.0/24 --method arp-scan --debug

JTL-Hosting Produktions-Beispiele

Vollständiger Scan der Proxmox VLANs

# Scannt zwei VLANs mit ARP für maximale Zuverlässigkeit
sudo ./ip-scanner.py 10.150.8.0/24 10.150.56.0/24 --method arp-scan -a

Schneller Check vor VM-Deployment

# Findet gemeinsame freie IPs für Multi-Interface VM
sudo ./ip-scanner.py 10.150.8.0/24 10.150.56.0/24 10.150.100.0/24

Großes Netzwerk scannen

# /16 Netzwerk mit vielen Threads
sudo ./ip-scanner.py 10.0.0.0/16 --threads 500 --method nmap

Nur belegte IPs für Dokumentation

# Export für IP-Übersicht
sudo ./ip-scanner.py 10.150.8.0/24 --no-free > ip-report.txt

🔗 Gemeinsame freie Host-IDs

Was ist das?

Bei Multi-Interface Setups (z.B. VMs mit mehreren Netzwerkkarten) ist es praktisch, wenn die letzte Oktett-Zahl (Host-ID) in allen Netzwerken identisch ist.

Beispiel für eine VM mit 3 Interfaces:

  • Interface 1 (Management): 10.150.8.123
  • Interface 2 (Storage): 10.150.56.123
  • Interface 3 (Public): 10.150.100.123

Ausgabe-Format

Wenn du mehrere Netzwerke scannst, zeigt das Script automatisch eine zusätzliche Tabelle:

╔═══ Gemeinsam freie Host-IDs ═══╗
  Netzwerke: 10.150.8.0/24, 10.150.56.0/24
  Anzahl gemeinsam frei: 189

  Host-ID  │ 10.150.8        │ 10.150.56       
  ─────────────────────────────────────────────
    3      │ 10.150.8.3      │ 10.150.56.3     
    4      │ 10.150.8.4      │ 10.150.56.4     
    5      │ 10.150.8.5      │ 10.150.56.5     
    ...

💡 Tipp: Für eine VM mit mehreren Interfaces kannst du z.B. verwenden:
   Interface 1: 10.150.8.3
   Interface 2: 10.150.56.3

Verwendung

Diese Funktion ist besonders nützlich für:

  • Proxmox VMs mit mehreren VLANs
  • JTL-Shop Server mit Management- und Public-Netzwerk
  • Cluster-Setups mit Management-, Storage- und Public-Netzwerken
  • Einfachere Verwaltung durch konsistente IP-Endungen

🎯 Best Practices

1. Immer mit Root-Rechten bei ARP-Scan

# ✅ Richtig
sudo ./ip-scanner.py 10.150.8.0/24 --method arp-scan

# ❌ Falsch (arp-scan funktioniert nicht ohne sudo)
./ip-scanner.py 10.150.8.0/24 --method arp-scan

2. Verwende ARP-Scan für maximale Zuverlässigkeit

ARP-Scan ist die zuverlässigste Methode und sollte immer bevorzugt werden:

sudo ./ip-scanner.py 10.150.8.0/24 --method arp-scan

3. Debug-Modus bei Problemen

Wenn Scans nicht die erwarteten Ergebnisse liefern:

sudo ./ip-scanner.py 10.150.8.0/24 --method arp-scan --debug

4. Passende Thread-Anzahl wählen

  • Kleine Netzwerke (/24): 50-100 Threads ausreichend
  • Mittlere Netzwerke (/22-/20): 100-200 Threads
  • Große Netzwerke (/16): 200-500 Threads
sudo ./ip-scanner.py 10.0.0.0/16 --threads 300

5. Aggressive Scans nur wenn nötig

Der aggressive Modus ist langsamer, aber zuverlässiger:

# Nur wenn normale Scans nicht ausreichen
sudo ./ip-scanner.py 10.0.0.0/24 --method nmap --aggressive

6. Regelmäßige Scans in Cron-Jobs

Für automatische Überwachung:

# /etc/cron.daily/network-scan
#!/bin/bash
/opt/free-ip-scanner/ip-scanner.py 10.150.8.0/24 10.150.56.0/24 \
  --method arp-scan --no-free > /var/log/ip-scan-$(date +%Y%m%d).log

🔧 Troubleshooting

Problem: "ioctl: No such device"

Ursache: ARP-Scan findet das Netzwerk-Interface nicht.

Lösung 1: Automatische Erkennung nutzen (sollte funktionieren)

sudo ./ip-scanner.py 10.150.8.0/24 --method arp-scan

Lösung 2: Interface manuell angeben

# Zeige alle Interfaces
ip addr show

# Verwende das richtige Interface (z.B. vmbr0 bei Proxmox)
sudo ./ip-scanner.py 10.150.8.0/24 --method arp-scan --interface vmbr0

Problem: IPs werden nicht erkannt (Firewall)

Ursache: Geräte blockieren ICMP-Ping und TCP-Ports.

Lösung: Verwende ARP-Scan statt Ping/Nmap

sudo ./ip-scanner.py 10.150.8.0/24 --method arp-scan

ARP-Scan funktioniert auch bei:

  • OPNsense/pfSense Gateways (.254)
  • Firewalled VMs
  • Systemen mit deaktiviertem ICMP

Problem: Scan ist sehr langsam

Ursachen & Lösungen:

  1. Zu wenig Threads

    ./ip-scanner.py 10.0.0.0/24 --threads 200
    
  2. Aggressive Nmap-Scans

    # Entferne --aggressive Flag
    sudo ./ip-scanner.py 10.0.0.0/24 --method nmap
    
  3. Sehr große Netzwerke

    # Teile in kleinere Subnets auf
    sudo ./ip-scanner.py 10.0.0.0/25 10.0.0.128/25
    

Problem: "Permission denied"

Ursache: Fehlende Root-Rechte für ARP-Scan oder Nmap.

Lösung:

sudo ./ip-scanner.py 10.150.8.0/24 --method arp-scan

Problem: Keine gemeinsamen freien IPs gefunden

Ursache: Alle Host-IDs sind in mindestens einem Netzwerk belegt.

Lösung: Scanne mit -a um alle IPs zu sehen und manuell zu vergleichen:

sudo ./ip-scanner.py 10.150.8.0/24 10.150.56.0/24 -a

📊 Performance-Hinweise

Scan-Zeiten (Richtwerte auf Proxmox)

Netzwerk-Größe Methode Threads Durchschnittliche Zeit
/24 (254 IPs) ARP-Scan - 2-5 Sekunden
/24 (254 IPs) Nmap - 5-10 Sekunden
/24 (254 IPs) Comprehensive 100 10-15 Sekunden
/22 (1022 IPs) ARP-Scan - 10-20 Sekunden
/22 (1022 IPs) Nmap - 30-60 Sekunden
/16 (65534 IPs) Comprehensive 500 15-30 Minuten

Optimierungs-Tipps

  1. ARP-Scan bevorzugen - Schnellste und zuverlässigste Methode
  2. Threads erhöhen bei großen Netzwerken
  3. Netzwerke aufteilen bei sehr großen Bereichen
  4. Lokale Ausführung direkt auf dem Proxmox-Host

🔐 Sicherheitshinweise

  • Root-Rechte: Das Script benötigt Root-Rechte für ARP-Scan und aggressive Nmap-Scans
  • Netzwerk-Scanning: Stelle sicher, dass du die Berechtigung hast, das Netzwerk zu scannen
  • Logging: In Produktionsumgebungen können Scans in Firewall-Logs auftauchen
  • Rate-Limiting: Manche Systeme könnten aggressive Scans als Angriff interpretieren
  • Interne Verwendung: Dieses Tool ist für die interne Netzwerk-Verwaltung gedacht

📝 Lizenz

Dieses Projekt steht unter der MIT-Lizenz. Du kannst es frei verwenden, modifizieren und verteilen.

🤝 Beitragen

Verbesserungsvorschläge und Bug-Reports sind willkommen!

📧 Kontakt

Autor: Thomas Ciesla
E-Mail: thomas.ciesla@jtl-software.com
Teams: thomas.ciesla@jtl-software.com
Organisation: JTL-Software
Repository: https://git.jtl-hosting.de/thomasciesla/free-ip-scanner

🔄 Changelog

Version 3.0 (2025-10-24)

  • Automatische Interface-Erkennung für ARP-Scan
  • Gemeinsame freie Host-IDs für Multi-Interface VMs
  • Verbesserte Hostname-Auflösung
  • Debug-Modus hinzugefügt
  • 🐛 Besseres Error-Handling
  • 🐛 Korrekte Berechnung freier IPs
  • 📝 Ausführliche Dokumentation

Version 2.0

  • Mehrschichtige Scan-Methoden
  • TCP-Port-Checks für Firewall-Umgehung
  • MAC-Adressen-Erfassung
  • Multi-Netzwerk Support

Version 1.0

  • 🎉 Initiale Version
  • Basis-Funktionalität mit Ping-Scans

Entwickelt für JTL-Software Proxmox-Umgebungen und professionelle Netzwerk-Verwaltung 🚀

Description
Scant in gewählten Netzwerken nach freien IPs
Readme 52 KiB
Languages
Python 100%