MySQL-Warnung "IP-Adresse konnte nicht aufgelöst werden"


36

Ich habe MySQL Master / Slave-Setup und die folgenden Warnungen in den MySQL-Protokolldateien auf beiden Servern festgestellt:

[Warning] IP address 'xxx.xxx.xxx.xxx' could not be resolved: Name or service not known

Ich habe überprüft und die DNS-Suche funktioniert einwandfrei und die meisten dieser IPs sind aus China.

Ich plane, den Zugriff auf Port 3306 der Firewall einzuschränken. Bitte helfen Sie mir zu verstehen, was sie versuchen. Versuchen sie nur, eine Verbindung zum MySQL-Server herzustellen? Wo ich nach weiteren Details suchen kann.

Vielen Dank

Antworten:


48

Wenn Sie einen MySQL-Benutzer erstellen, muss MySQL username@example.comfür jede IP-Adresse, die eine Verbindung zu ihm herstellt, eine umgekehrte Suche durchführen, um festzustellen, ob sie Teil dieser Adresse sind example.com.

Natürlich gibt es keine Beschränkung auf der Schaffung von Reverse - Lookups, so dass ich ganz glücklich meinen Provider fragen kann den Reverse - Lookup für meine IP - Adresse einstellen zu , google.comwenn ich will ... oder example.comwenn ich zufällig das ist zu wissen , was die Benutzer in Ihrer Datenbank . Dies lässt mich nicht herein, da MySQL dann eine Forward-Suche für die zurückgegebene Domain durchführt, um sicherzustellen, dass sie mit der gleichen IP-Adresse übereinstimmt, die die Verbindung herstellt.

Sie können dies mit skip_name_resolvein Ihrem abschalten my.cnf. Dafür gibt es viele gute Gründe .

Der Grund, warum dieser Fehler angezeigt wird, ist, dass die betreffende IP-Adresse überhaupt nicht rückwärts durchsucht werden kann.

Sie haben auch böswillige Angreifer aus China, die versuchen, brutal in Ihre Datenbank einzudringen. Das sollte Ihre oberste Priorität sein.


1
Kann es ein Problem für localhost geben ?
Malay M

Ich glaube nicht, dass es dort eine Sicherheitslücke gibt, denn wenn eine umgekehrte Suche nach einer IP-Adresse durchgeführt wird, localhostwird MySQL trotzdem die Vorwärtssuche durchführen localhost, um sicherzustellen, dass sie mit der ursprünglichen IP-Adresse übereinstimmt. Vertrauen Sie mir jedoch, wie bei allem, was mit Sicherheit zu tun hat, nicht nur in dieser Angelegenheit. Und es ist immer noch besser, die Namensauflösung in Ihrer Konfiguration zu deaktivieren.
Ladadadada

13

Ich halte es für eine sehr, sehr schlechte Idee, Ihre Datenbankserver direkt im Internet verfügbar zu machen.

Wenn Sie auf einen Remote-Host replizieren und dazu einen Internetzugang benötigen, sollten Sie ein VPN zwischen den beiden Netzwerken einrichten und Ihre MySQL-Server so binden, dass sie nur das lokale Netzwerk überwachen.

Wenn sich beide Hosts im selben lokalen Netzwerk befinden, können Sie Ihre MySQL-Server sicher an dieses Netzwerk binden.


1

Ich bin auch auf Amazon RDS davon überrascht worden. Ich wollte nur eine Verbindung zu meiner Testdatenbankinstanz herstellen (Folgendes wird für Produktionsdatenbanken definitiv nicht empfohlen ):

Die Sicherheitsgruppen in Amazon RDS funktionieren etwas anders als die normalen Firewall-Regeln für die EC2-Instanzen. Wenn Sie den MySQL-Port für die bestimmte IP öffnen, muss die IP von Ihrem MySQL-Server erkannt werden. Wenn nicht, wird die Verbindung abgelehnt. Die vorübergehende Lösung besteht darin, eine neue Sicherheitsgruppe zu erstellen, dh anyone_can_connect_to_mysqlmit nur einem Element - erlauben Sie die eingehende Verbindung von MySQL / Aurora aus dem Internet und hängen Sie diese Sicherheitsgruppe an Ihre Datenbank an.

Inbound
-----------------------------------------
| MYSQL/Aurora | TCP | 3306 | 0.0.0.0/0 |
-----------------------------------------

Dadurch wird die IP-Überprüfung von Clientverbindungen entfernt, sodass Sie eine Verbindung herstellen können. Vergessen Sie nicht, die anyone_can_connect_to_mysqlRichtlinie von der Datenbank zu trennen, sobald die Auflösungsprobleme behoben sind.


0

Beim Herstellen einer Remoteverbindung zu MySQL ist ein Fehler aufgetreten. Ich hatte diese Warnung in /var/log/mysqld.log:

[Warning] IP address 'X.X.X.X' could not be resolved: Temporary failure in name resolution

Ich habe gerade diese Zeile zur /etc/hostsDatei hinzugefügt :

X.X.X.X some_name

Problem gelöst! Ohne Verwendung skip-name-resolveverursachte es einige Fehler in meiner lokalen App, wenn ich eine Verbindung zu MySQL herstellte.


Vor über einem Jahr, aber mussten Sie MySQL neu starten? Das hat bei mir nicht funktioniert.
Ejoso

Sie würden nicht, da die Hosts-Datei auf dem Client nicht MySQL-Server verwaltet wird.
leeman24
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.