LINUX.ORG.RU
ФорумAdmin

DNAT + OPENVPN +Mysql on port 3306


0

0

Есть роутер, который является opnvpn-клиентом к некоторому серверу.

192.168.2.63 - ip роутера в локальной сети.
10.0.0.14 - ip роутера в туннеле openvpn
10.0.0.1 - ip сервера в туннеле openvpn
192.168.2.x1 - ip клиентской машины в локальной сети за роутером, соединение с которой я хочу пробросить на 10.0.0.1:3306

Сервера по туннелю пингуют друг друга и могут взаимодействовать на уровне сервисов (например, с роутера можно подключиться через туннель на openvpn-сервер на порт 3306):

mysql -u user -h 10.0.0.1 -p - если запускать с роутера, то проходит.


За роутером есть локальная сеть (192.168.2.0/24), хотелось бы, чтобы все пакеты из локальной сети (а в моем примере ниже - с локального адреса 192.168.2.138) на порт 3306, адресованные внешнему серверу server1.com перенаправлялись на 10.0.0.1:3306.

В фаероволле на роутере все цепочки с правилом ACCEPT по умолчанию. Поднят форвардинг и snat на выданный провайдером ip для нашего роутера.

Делаю DNAT:

iptables -t nat -A PREROUTING -s 192.168.2.138 -p tcp -d server1.com --dport 3306 -j DNAT --to-destination 10.0.0.1:3306
iptables -t nat -A PREROUTING -s 192.168.2.138 -p udp -d server1.com --dport 3306 -j DNAT --to-destination 10.0.0.1:3306

Результат с машины 192.168.2.138:
C:\Program Files\MySQL\bin>mysql -u user -h server1.com -p
Enter password: ****
ERROR 2003 (HY000): Can't connect to MySQL server on 'server1.com' (10060)


Куда копать и что делать? Может дело в SNAT? Он мешает DNAT? Помогите, пожалуйста!


Ответ на: комментарий от CFA

Такого параметра в конфиге Mysql нет (не прописан).

Но в этом ли дело, если с роутера 10.0.0.14 на 10.0.0.1:3306 соединение проходит без проблем?

mora
() автор топика

>Куда копать и что делать?
tcpdump до гейта и после обратить внимание на src и dst

dimon555 ★★★★★
()

iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source 10.0.0.14
на роутере спасет отца русской демократии

nnz ★★★★
()
Ответ на: комментарий от nnz

Отец русской демократии спасен! Спасибо за ответы!

iptables -t nat -A POSTROUTING -s 192.168.2.138 -p tcp -d 10.0.0.1 --dport 3306 -o tun0 -j SNAT --to-source 10.0.0.14

mora
() автор топика
Ответ на: комментарий от mora

А Маскарадинг в данном случии был бы лучше наверное :p

Tok ★★
()
Ответ на: комментарий от mora

> -j SNAT --to-source 10.0.0.14
Вместо SNAT можно было на сервере (где запущен mysql) добавить маршрут к сети 192.168.2.0/24 черед туннель, чтоб сервер знал куда отвечать на запросы из этой сети.
+ добавить в самом mysql разрешения на подключение с заданного IP:
GRANT права ON база.таблица TO 'user'@'192.168.2.138' IDENTIFIED BY 'пароль';

spirit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.