У меня есть сервер Linux с установленной Ubuntu. Когда я подключаюсь к какой-либо службе (например, MySQL, apache, icecast) с той же машины по адресу 127.0.0.1 , все они показывают, что я подключился с моего локального адреса (10.10.x.x) вместо localhost (127.0.0.1). Это вызывает проблемы с подключением к базе данных MySQL (из-за ограничений, которые разрешают подключение только с локального хоста) и выглядит просто ужасно.

В чем причина этой проблемы? Как это исправить?

2 ответа2

0

К сожалению, MySQL исторически использует localhost в качестве соединения на основе сокетов, а не ip. Вы не увидите 127.0.0.1 или localhost, пока не подключитесь через сокет. (Да, это неправильно)

0

Как обычно, проблема скрывалась в другом месте системы. У меня было правило для iptables которое я только что скопировал из руководства:

-A POSTROUTING -j MASQUERADE

Это правило было установлено, чтобы разрешить NAT для доступа клиентов к Интернету. Это правило не ограничивалось никакими условиями, поэтому запросы от локального хоста к локальному хосту выполнялись через NAT, и приложения обнаруживали неправильный IP. После добавления некоторых условий (исходных IP-адресов) к этому правилу я получил права 127.0.0.1 в качестве IP-адресов клиентов:

-A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE
-A POSTROUTING -s 192.168.3.0/24 -j MASQUERADE
-A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE

Задача решена.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .