Мы запускаем несколько образов докеров на виртуальной машине.
sudo iptables -S
показывает много сетей докеров.
Мы пытаемся подключиться к внешней базе данных MySQL в другой сети.
mysql --host=mysql.example.org --user=thisuser thatdatabase
Получаем сообщение об ошибке:
ОШИБКА 2002 (HY000): не удается подключиться к серверу MySQL на mysql.example.org (115)
Сетевые журналы показывают, что внешний брандмауэр не распознает попытку подключения.
Мы попытались закрыть докер и повторить попытку, но безуспешно.
sudo traceroute mysql.example.org
traceroute to mysql.example.org (111.222.333.444), 30 hops max, 60 byte packets
1 localvm.example.org (172.17.0.1) 3071.799 ms !H 3071.763 ms !H 3071.754 ms !H
В 172.17.0.1
-не- IP-адрес локальной системы.
В другой ванильной системе мы можем подключиться к этому экземпляру.
Мы безуспешно пытались использовать явный маршрут.
ip route add 222.333.444.0/24 dev ens192
traceroute mysql.example.org
traceroute to mysql.example.org (correct external ip-address), 30 hops max, 60 byte packets
1 localvm.example.org (correct local ip-address) 3068.673 ms !H 3068.566 ms !H 3068.532 ms !H
Есть предложения, как сузить количество ошибок?
Пришло время запустить wirehark?
Виртуальная машина - Debian 10, клиент - mysql Ver 15.1 Distrib 10.3.22-MariaDB
обычно означает, что в системе нет запущенного сервера MySQL или что вы используете неправильное имя файла сокета Unix или номер порта TCP / IP при попытке подключения к серверу. Вы также должны убедиться, что порт TCP / IP, который вы используете, не заблокирован брандмауэром или службой блокировки портов.
Оказалось, что нам пришлось запретить докеру использовать сеть 172.17.0.0/24.
В соответствии с как-сделать-я-настроить-по умолчанию-мост-докер0
мы изменили
/etc/docker/daemon.json
{
"bip": "172.26.0.1/16"
}
systemctl restart docker;systemctl status docker
Старая запись маршрута была
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default .... 0.0.0.0 UG 100 0 0 ens192
........... 0.0.0.0 255.255.255.0 U 100 0 0 ens192
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
маршрут теперь показывает другую сеть:
Destination Gateway Genmask Flags Metric Ref Use Iface
172.26.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
Теперь он не конфликтует с существующим сервером и подключение возможно.
Большое спасибо всем за помощь!