У меня есть несколько веб-сайтов, подключенных к localhost
(порт по умолчанию 3306) для mySQL. В планах дамп и импорт на внешний сервер 1.1.1.1
как мне временно маршрутизировать (до перезагрузки) все localhost:3306
трафик с использованием IP-таблиц для 1.1.1.1:3306
я пытался
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to 2.2.2.2:3306
iptables -t nat -A POSTROUTING -d 2.2.2.2 -j MASQUERADE
порт маршрутизации mysql iptables
сегодня
3 ответа
Имейте в виду, что с MySQL в Linux localhost
является особенным:
В Unix программы MySQL обрабатывают имя хоста
localhost
особенно, способом, который, вероятно, отличается от того, что вы ожидаете по сравнению с другими сетевыми программами: клиент подключается с помощью файла сокета Unix.
….
Например, с--host=localhost
в Unix клиент пытается соединиться с локальным сервером, используя файл сокета Unix, даже если указан параметр —port или -P для указания номера порта TCP/IP.
https://dev.mysql.com/doc/refman/8.0/en/connecting.html
В этом случае переадресация портов 127.0.0.1:3306 куда-то еще — хорошая идея в теории, но на самом деле она не поможет вашим приложениям. Скорее всего, они не используют TCP/IP для подключения к 127.0.0.1:3306, они подключаются к сокету Unix, предоставляемому демоном MySQL.
Тебе нужно route_localnet
и должен сначала выполнить nat в цепочке OUTPUT, поскольку трафик начинается с локального процесса.
Карл