URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 86284
[ Назад ]

Исходное сообщение
"Mysql + DNAT + openvpn"

Отправлено Tio , 14-Авг-09 13:45 
Есть роутер, который является 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? Помогите, пожалуйста!


Содержание

Сообщения в этом обсуждении
"Mysql + DNAT + openvpn"
Отправлено shadow_alone , 14-Авг-09 14:52 
А зачем вообще тебе NAT?
просто пропиши маршруты, забудь про NAT.

"Mysql + DNAT + openvpn"
Отправлено ALex_hha , 14-Авг-09 15:53 
>А зачем вообще тебе NAT?
>просто пропиши маршруты, забудь про NAT.

Вы ошибаетесь, откуда VPN сервер (10.0.0.1) будет знать куда слать пакеты для подсети 192.168.2.0/24?

Если нет возможности на стороне VPN сервера прописать маршрут в вашу подсеть, то используй NAT

Что то типа

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


"Mysql + DNAT + openvpn"
Отправлено shadow_alone , 14-Авг-09 15:58 
>Если нет возможности на стороне VPN сервера прописать маршрут в вашу подсеть,
>то используй NAT

вот про это вы впервые пишите.


"Mysql + DNAT + openvpn"
Отправлено ALex_hha , 14-Авг-09 17:17 
>>Если нет возможности на стороне VPN сервера прописать маршрут в вашу подсеть,
>>то используй NAT
>
>вот про это вы впервые пишите.

это было лишь предположение, о топологии сети ТС я ничего не знаю ;)


"Mysql + DNAT + openvpn"
Отправлено Tio , 14-Авг-09 16:34 
>[оверквотинг удален]
>Вы ошибаетесь, откуда VPN сервер (10.0.0.1) будет знать куда слать пакеты для
>подсети 192.168.2.0/24?
>
>Если нет возможности на стороне VPN сервера прописать маршрут в вашу подсеть,
>то используй NAT
>
>Что то типа
>
># iptables -t nat -A PREROUTING -s 192.168.2.138 -p tcp -d server1.com
>--dport 3306 -j DNAT --to-destination 10.0.0.14:3306

Но ведь 10.0.0.14 - это адрес моего роутера в туннеле, на котором не запущен Mysql на порту 3306, а Mysql висит на 10.0.0.1.

И --to-destination 10.0.0.14:3306 отправит пакеты на несуществующий порт (или я чего не понял?) ?

Или вы имеете виду такое (счас попробовал, все равно не работает):

iptables -t nat -A PREROUTING -s 192.168.2.138 -p tcp -d 10.0.0.14 --dport 3306 -j DNAT --to-destination 10.0.0.1:3306

?



"Mysql + DNAT + openvpn"
Отправлено ALex_hha , 14-Авг-09 17:19 
>[оверквотинг удален]
>
>
>И --to-destination 10.0.0.14:3306 отправит пакеты на несуществующий порт (или я чего не
>понял?) ?
>
>Или вы имеете виду такое (счас попробовал, все равно не работает):
>
>iptables -t nat -A PREROUTING -s 192.168.2.138 -p tcp -d 10.0.0.14 --dport
>3306 -j DNAT --to-destination 10.0.0.1:3306
> И --to-destination 10.0.0.14:3306 отправит пакеты на несуществующий порт (или я чего не понял?

да, то я ошибся :)

# 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

вместо tun0 подставь свое устройство


"Mysql + DNAT + openvpn"
Отправлено Tio , 14-Авг-09 17:39 
>[оверквотинг удален]
>>iptables -t nat -A PREROUTING -s 192.168.2.138 -p tcp -d 10.0.0.14 --dport
>>3306 -j DNAT --to-destination 10.0.0.1:3306
>> И --to-destination 10.0.0.14:3306 отправит пакеты на несуществующий порт (или я чего не понял?
>
>да, то я ошибся :)
>
># 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
>
>вместо tun0 подставь свое устройство

Спасибо большое! Заработало!