Skip to main content
Skip table of contents

Wie gebe ich IP Adressen frei und prüfe IP Adressbereiche

Das ausgehende Netzwerk muss die Verbindung zu der / den Ziel IP Adressen freigeben, das empfangende Netzwerk muss die IP Adressen des Absenders in seine Whitelist aufnehmen.

Sofern Daten zwischen zwei Netzwerken übertragen werden, spielen immer IP Adressen, Firewalls, und ACLs (Access Control List) ein Rolle. Damit OCT Daten zwischen Netzwerken übertragen kann, müssen daher Freigaben erstellt werden:

  • welche einen zuverlässigen Datentransfer zulassen

  • gleichzeitig aber aus Sicherheitsgründen den geringstmöglichen Umfang haben sollten

Meist passiert der Transfer zwischen Ihrem Firmennetzwerk und einem Cloudnetzwerk, wir müssen dabei bedenken

  • Ihr Firmennetzwerk leitet Traffic ggf. über mehrere öffentliche IPs in das Internet (redundante Anbindungen durch mehrere Provider, Poxys, Loadbalancer)

  • Das Cloudnetzwerk ordnet Ressourcen ggf. mehrere IP Adressen zu, da Loadbalancer, dynamische Skalierungen und Georedundanz die Ressourcen laufend ändern können

Konfiguration des Firmennetzwerks

  • Nennen Sie uns alle IP Adressen, über welche Daten von Ihnen gesendet werden. Sofern Sie darüber unsicher sind, führen Sie Script 1 aus.

  • Geben Sie auf Ihrer Firewall die Verbindung zum Cloudnetzwerk frei

    • A: für den von uns genannten Hostnamen (das macht die Sache am leichtesten, aber nicht jede Firewall kann das) grafik-20241107-105301.png auf dem genannten Port (meist 1433)

    • B: für die von uns genannten IP Adressen auf dem genannten Port (meist 1433)

  • Warten Sie unsere Rückmeldung zur Aufnahme Ihrer IP Adressen auf die Whitelist ab

    • A: testen Sie die dann die Verbindung zum Zielserver mit Script 4 für 10 Minuten, falls wir Ihnen einen Ziel Hostnamen geben

    • B: testen Sie die Verbindung zur Ziel IP Adresse mit Script 3, falls wir Ihnen eine Ziel IP Adresse gegeben haben.

Konfiguration des Cloudnetzwerkes

  • die IP Adressen des Kundennetzwerkes werden als zulässig für den Zugriff auf Cloudressourcen konfiguriert (Whitelisting)

  • die Freigabe erfolgt auf unterster Ressourcenebene, in der Regel sind das die Datenbankfirewall und eine Storageaccountfirewall

  • sofern neue Cloudressourcen geschaffen werden, können deren genutzte IP Adressen mit Script 2 geprüft werden.

Diagnosedetails

  • gibt es mehrere ausgehende IP Adressen, welche ggf. in der Firewall der Zieldatenbank freigeschalten werden müssen ?

    • Nutzen Sie Script 1, welches die ausgehende öffentliche IP Adresse jede Minute aufzeichnet - lassen Sie das mal die ganze Nacht laufen grafik-20241104-092431.png

  • ändert sich die IP Adresse der Zieldatenbank ? Besonders bei Azure Datenbanken ist das oft der Fall, da diese über Load Balancer etc. geroutet werden

    • nutzen Sie Script 2, welches die IP Adresse der ZielURL jede Minute aufzeichnet - lassen Sie das mal die ganze Nacht laufen grafik-20241104-094508.png

    • prüfen Sie, ob die Verbinung zu jeder dieser Zieladressen möglich ist (Script 3) grafik-20241107-095044.png

    • sie können auch die Script 4 laufen lassen, welches die Verbindung zum Hostname alle 30 Sekunden prüft - diese wechselt dann bei Probleme immer zwischen erreichbar / nicht erreichbar grafik-20241107-100246.png

Powershellscripte für Verbindungstests

Script 1, prüft fortlaufend die öffentliche IP Adresse über welcher Traffice das Netzwerk verlässt - Pfad konfigurieren !
POWERSHELL
# Pfad zur Logdatei
$logFile = "C:\Pfad\zur\Logdatei\ip_log.txt"

# Initiale IPv4-Adresse auf null setzen
$lastIpAddress = $null

# Endlosschleife für die wiederholte Abfrage
while ($true) {
    try {
        # Aktuelle öffentliche IPv4-Adresse abrufen
        $currentIpAddress = (Invoke-RestMethod -Uri "http://ipv4.icanhazip.com").Trim()
        
        # Zeitstempel für die Logdatei erstellen
        $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
        
        # Wenn die IP-Adresse sich ändert oder es die erste Abfrage ist
        if ($currentIpAddress -ne $lastIpAddress) {
            # Nachricht mit Markierung bei IP-Änderung
            $logEntry = "$timestamp - NEUE IP ADRESSE: $currentIpAddress"
            
            # Letzte IP-Adresse aktualisieren
            $lastIpAddress = $currentIpAddress
        } else {
            # Normale Log-Nachricht ohne Änderung
            $logEntry = "$timestamp - IP Adresse unverändert: $currentIpAddress"
        }
        
        # Eintrag in die Logdatei schreiben
        Add-Content -Path $logFile -Value $logEntry
    }
    catch {
        # Bei Fehlern in der Abfrage eine Fehlermeldung in die Logdatei schreiben
        $errorMessage = "$timestamp - Fehler beim Abrufen der IP-Adresse"
        Add-Content -Path $logFile -Value $errorMessage
    }
    
    # Eine Minute warten
    Start-Sleep -Seconds 60
}
Script 2, logt fortlaufend die IP Adresse einer ZielURL - Pfad und Ziel URL konfigurieren !
POWERSHELL
# Pfad zur Logdatei
$logFile = "C:\tmp\target_ip_log.txt"

# Ziel-URL, deren IP-Adresse abgefragt werden soll
$targetUrl = "xxx.database.windows.net"

# Initiale IP-Adresse auf null setzen
$lastIpAddress = $null

# Endlosschleife für die wiederholte Abfrage
while ($true) {
    try {
        # Aktuelle IP-Adresse der Ziel-URL abrufen
        $currentIpAddress = [System.Net.Dns]::GetHostAddresses($targetUrl) | 
                            Where-Object { $_.AddressFamily -eq 'InterNetwork' } | 
                            Select-Object -First 1
        
        # Zeitstempel für die Logdatei erstellen
        $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
        
        # Wenn die IP-Adresse sich ändert oder es die erste Abfrage ist
        if ($currentIpAddress -ne $lastIpAddress) {
            # Nachricht mit Markierung bei IP-Änderung
            $logEntry = "$timestamp - NEUE IP für $targetUrl : $currentIpAddress"
            
            # Letzte IP-Adresse aktualisieren
            $lastIpAddress = $currentIpAddress
        } else {
            # Normale Log-Nachricht ohne Änderung
            $logEntry = "$timestamp - IP für $targetUrl unverändert: $currentIpAddress"
        }
        
        # Eintrag in die Logdatei schreiben
        Add-Content -Path $logFile -Value $logEntry
    }
    catch {
        # Bei Fehlern in der Abfrage eine Fehlermeldung in die Logdatei schreiben
        $errorMessage = "$timestamp - Fehler beim Abrufen der IP-Adresse für $targetUrl"
        Add-Content -Path $logFile -Value $errorMessage
    }
    
    # Eine Minute warten
    Start-Sleep -Seconds 60
}
Script 3, prüft die ausgehende Verbindung zu einer IP Adresse prüft
POWERSHELL
$ipAddress = "123.123.123.123"  # Die gewünschte IP-Adresse
$port = 1433                    # Der gewünschte Port (z.B. 80 für HTTP)

# Teste die Verbindung zur IP-Adresse und zum Port
$result = Test-NetConnection -ComputerName $ipAddress -Port $port

# Überprüfe das Ergebnis und gib eine entsprechende Meldung aus
if ($result.TcpTestSucceeded) {
    Write-Output "Verbindung zu $ipAddress auf Port $port ist möglich."
} else {
    Write-Output "Verbindung zu $ipAddress auf Port $port ist nicht möglich."
}
Script 4, prüft die Erreichbarkeit eines Hostnamens fortlaufend
POWERSHELL
$hostname = "xxx.database.windows.net"         # Der gewünschte DNS-Name oder die IP-Adresse
$port = 1433                                   # Der gewünschte Port (z.B. 80 für HTTP)
$interval = 30                                 # Zeitintervall in Sekunden

while ($true) {
    # Teste die Verbindung zum DNS-Namen/IP-Adresse und zum Port
    $result = Test-NetConnection -ComputerName $hostname -Port $port

    # Überprüfe das Ergebnis und gib eine entsprechende Meldung aus
    if ($result.TcpTestSucceeded) {
        Write-Output "$(Get-Date): Verbindung zu $hostname auf Port $port ist möglich."
    } else {
        Write-Output "$(Get-Date): Verbindung zu $hostname auf Port $port ist nicht möglich."
    }

    # Warte für das festgelegte Zeitintervall, bevor der Test erneut ausgeführt wird
    Start-Sleep -Seconds $interval
}
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.