Маршрут Iptables с локального хоста: 3306 на удаленный IP: 3306

У меня есть несколько веб-сайтов, подключенных к 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 ответа
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, поскольку трафик начинается с локального процесса.

Карл

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *