Ostrzeżenie MySQL „Nie można rozwiązać adresu IP”

36

Mam konfigurację MySQL Master / Slave i zauważyłem następujące ostrzeżenia w plikach dziennika mysql na obu serwerach:

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

Sprawdziłem, a wyszukiwania DNS działają poprawnie i większość tych adresów IP pochodzi z Chin.

Planuję ograniczyć dostęp do portu 3306 w zaporze, jednak proszę, pomóż mi zrozumieć, co próbują zrobić. Czy oni tylko próbują połączyć się z serwerem MySQL. Gdzie mogę znaleźć więcej szczegółów.

Dzięki

HTF
źródło

Odpowiedzi:

48

Kiedy tworzysz użytkownika [email protected]MySQL, MySQL musi przeprowadzić wsteczną analizę każdego adresu IP łączącego się z nim, aby ustalić, czy jest on częścią example.com.

Oczywiście nie ma żadnych ograniczeń dotyczących tworzenia wyszukiwania wstecznego, więc z przyjemnością mogę poprosić mojego dostawcę, aby ustawił wyszukiwanie wsteczne dla mojego adresu IP, google.comjeśli chcę ... lub example.comjeśli wiem, że to właśnie użytkownicy w Twojej bazie danych mają . To mnie nie wpuszcza, ponieważ MySQL sprawdza następnie zwróconą domenę, aby upewnić się, że pasuje do tego samego adresu IP, który się łączy.

Możesz to wyłączyć za pomocą skip_name_resolvew swoim my.cnf. Istnieje wiele dobrych powodów, aby to zrobić .

Przyczyną tego błędu jest to, że dany adres IP w ogóle nie ma wyszukiwania wstecznego.

Masz również złośliwych atakujących z Chin próbujących brutalnie przedostać się do twojej bazy danych. To powinno być twoim najwyższym priorytetem.

Ladadadada
źródło
1
czy może być jakiś problem dla localhost ?
Malajski M
Nie sądzę, aby była tam dziura w zabezpieczeniach, ponieważ jeśli rozwiązano problem wyszukiwania wstecznego dla niektórych adresów IP localhost, MySQL nadal będzie sprawdzać w przód, localhostaby upewnić się, że odpowiada on oryginalnemu adresowi IP. Jednak, podobnie jak w przypadku wszystkich kwestii związanych z bezpieczeństwem, nie ufaj mi tylko. I nadal lepiej jest wyłączyć rozpoznawanie nazw w konfiguracji.
Ladadadada
13

Wydaje mi się, że bardzo bardzo złym pomysłem jest udostępnianie serwerów baz danych bezpośrednio w Internecie.

Jeśli replikujesz się na zdalnym hoście i potrzebujesz do tego dostępu do Internetu, sugeruję skonfigurowanie VPN między dwiema sieciami i powiązanie serwerów MySQL, aby nasłuchiwały tylko sieci lokalnej.

Jeśli oba hosty są w tej samej sieci lokalnej, możesz bezpiecznie powiązać serwery mysql z tą siecią.

m0ntassar
źródło
1

Właśnie mnie to złapało na Amazon RDS. Chciałem tylko połączyć się z moją testową instancją bazy danych (zdecydowanie nie jest zalecane dla produkcyjnych baz danych):

Grupy zabezpieczeń w Amazon RDS działają nieco inaczej niż normalne reguły zapory dla instancji EC2. Jeśli otworzysz port MySQL dla określonego adresu IP, adres IP musi zostać rozpoznany przez serwer MySQL. Jeśli nie, połączenie zostanie odrzucone. Tymczasowym rozwiązaniem jest utworzenie nowej grupy zabezpieczeń, tj. Za anyone_can_connect_to_mysqlpomocą tylko jednego elementu - zezwól na połączenie przychodzące MySQL / Aurora w dowolnym miejscu z Internetu i dołącz tę grupę zabezpieczeń do swojej bazy danych.

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

Spowoduje to usunięcie sprawdzenia adresu IP z połączeń klienckich, abyś mógł się połączyć. Nie zapomnij odłączyć anyone_can_connect_to_mysqlzasady od bazy danych, gdy problemy związane z rozwiązywaniem problemu zostaną zakończone.

muszkieter
źródło
0

Podczas zdalnego łączenia się z MySQL mam błąd. Miałem to ostrzeżenie w /var/log/mysqld.log:

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

Właśnie dodałem tę linię do /etc/hostspliku:

X.X.X.X some_name

Problem rozwiązany! bez użycia skip-name-resolvespowodowało to błędy w mojej lokalnej aplikacji podczas łączenia się z mysql.

Amin Sh
źródło
Ponad rok temu, ale czy musiałeś ponownie uruchomić mysql? To mi nie zadziałało.
Ejoso
Nie zrobiłbyś tego, ponieważ plik hosts jest zarządzany na kliencie, a nie na serwerze mysql.
leeman24