Назад | Перейти на главную страницу

Много пользователей, обратные прокси и проблемы с обоими

У меня в некоторой степени уникальная ситуация, из-за которой управление моими VPN-сервисами немного затруднительно, поэтому я пытаюсь облегчить задачу для меня и моих пользователей, надеюсь, что кто-нибудь может дать мне какие-то идеи и / или альтернативы.

Сейчас ситуация такова, что у меня около 600 клиентов, которые подключаются примерно к 6 серверам в моей сети для репликации базы данных mysql. Подчиненные устройства MySQL подключаются к главному устройству, поэтому соединение идет из моей сети в сеть клиентов, мы раньше делали это без VPN, но это далеко не безопасно, поэтому мы переводим всех на VPN.

Прямо сейчас они подключаются к openvpn прямо на назначенный им сервер. Дело в том, что большинство пользователей не являются техническими специалистами, поэтому моя команда должна подключиться к ним (teamviewer и подобные) и выполнить настройку для них, а иногда нам приходится перемещать этих ребят с одного сервера на другой. Прямо сейчас это связано с тем, что кто-то из моей очень маленькой команды подключается к клиентскому серверу и меняет настройки на сервере, иногда их брандмауэр, а это занимает слишком много времени для команды из 3 человек, чтобы управлять 600.

Сейчас: КЛИЕНТ --- VPN / MYSQL СЕРВЕР

Поэтому я хотел упростить себе жизнь и настраиваю 6 серверов в частной сети, при этом дополнительная виртуальная машина будет шлюзом. В этой виртуальной машине я запускаю openvpn с 3 экземплярами, так что это будет около 200 клиентов на экземпляр. Имейте в виду, что репликация MySQL в нашем случае не использует огромную полосу пропускания, около 40 Кбит / с на каждого пользователя, потому что скорость загрузки ADSL (большинство клиентов используют adsl) ужасно.

Я читал в Интернете, и большинство людей сказали, что это невозможно, поэтому я решил, что это место для двойной проверки.

Я мог бы подключить каждого клиента к своему экземпляру vpn, но я хотел упростить его и использовать что-то вроде обратного прокси, поэтому у меня есть только один внешний адрес и порт для подключения, и в зависимости от того, к какому адресу они подключаются, перенаправлять их на правильный порт на сервере openvpn.

Предназначено: КЛИЕНТ --- ФЕЙЕРВАЛ --- NGINX ---- ПРАВИЛЬНЫЙ ПОРТ НА VPN-СЕРВЕРЕ

Это возможно? Если не с nginx с чем-то другим? Если это невозможно, что бы вы сделали в этой ситуации? Я умираю от идеи здесь :)

До сих пор я пытался настроить nginx для перенаправления на сервер vpn в качестве шлюза fastcgi, не повезло, ovpn попадает на nginx, но ничего не перенаправляет. Если я попробую с браузером, я получаю плохую ошибку шлюза, и только для них сервер ovpn показывает некоторые признаки жизни в журнале.

экземпляры сервера vpn следующие (3 из них, разные порты и пулы IP).

port 4001
proto tcp
dev tun
ca vpnkeys/keys-vpn1/ca.crt
cert vpnkeys/keys-vpn1/vpn1.crt
key vpnkeys/keys-vpn1/vpn1.key  # This file should be kept secret
dh vpnkeys/keys-vpn1/dh1024.pem
server 172.16.101.0 255.255.255.0
ifconfig-pool-persist ipp-vpn1.txt
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status-vpn1.log
verb 3
push "10.0.100.11 255.255.255.255"

Конфигурация клиента

client
dev tun
proto tcp
remote vpn-001.myserver.com 80 # firewall throws to nginx on port 4000
resolv-retry infinite
nobind
# comentar as duas linhas abaixo em maquinas windows
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert cliente-xxxxx.crt
key cliente-xxxxx.key
ns-cert-type server
comp-lzo
verb 3
mute-replay-warnings

и на nginx у меня есть следующая конфигурация для каждого имени хоста vpn

server {
   listen 4000;
   server_name vpn-001.myserver.com;

   location / {
   fastcgi_pass 10.0.0.137:4001;
   }
}

Когда клиент ovpn пытается подключиться, я получаю этот мусор в журнале ошибок nginx. 10.0.0.4 - мой брандмауэр.

10.0.0.4 - - [25/Jun/2014:17:45:06 -0300] "\x00\x0E8\x84\xF1\xEB\xF2\x14>Z\xF2\x00\x00\x00\x00\x00" 400 173 "-" "-"
10.0.0.4 - - [25/Jun/2014:17:45:12 -0300] "\x00\x0E8\xC1\xE0(A\xD8\xAC\x16\xB2\x00\x00\x00\x00\x00" 400 173 "-" "-"
10.0.0.4 - - [25/Jun/2014:17:45:18 -0300] "\x00\x0E8\x95\xB4\x18[\x03@\xCA\xFC\x00\x00\x00\x00\x00" 400 173 "-" "-"
10.0.0.4 - - [25/Jun/2014:17:45:24 -0300] "\x00\x0E8\xE4{\xEE<\x98\x1B\x97K\x00\x00\x00\x00\x00" 400 173 "-" "-"
10.0.0.4 - - [25/Jun/2014:17:45:30 -0300] "\x00\x0E8\xE0'\x1Fr?\x06\xE33\x00\x00\x00\x00\x00" 400 173 "-" "-"
10.0.0.4 - - [25/Jun/2014:17:45:36 -0300] "\x00\x0E8g\xC8\xD8w8VH2\x00\x00\x00\x00\x00" 400 173 "-" "-"
10.0.0.4 - - [25/Jun/2014:17:45:42 -0300] "\x00\x0E8N\xFC\xCA\xE4\xC58\xD63\x00\x00\x00\x00\x00" 400 173 "-" "-"
10.0.0.4 - - [25/Jun/2014:17:45:48 -0300] "\x00\x0E8TL\x85=\x15\xE4\xF2\xD6\x00\x00\x00\x00\x00" 400 173 "-" "-"
10.0.0.4 - - [25/Jun/2014:17:45:54 -0300] "\x00\x0E8\xB0\x9A\x8D\x8Dq\xBE\xCD3\x00\x00\x00\x00\x00" 400 173 "-" "-"

и ничего не попадает в журнал сервера ovpn. (я знаю, что это перенаправляет причину, когда я использую браузер для подключения к тому же адресу, я получаю ошибку плохого шлюза от nginx и некоторый ответ в журнале ovpn)

мысли? идеи?

Возможно, вы можете просто создать DNS CNAME для каждого клиента, например:

clientname.mysql.myserver.com. CNAME mysql1.myserver.com.

Вместо того, чтобы подключаться к собственной VPN, подключите всех клиентов к одной VPN, а затем они просто подключатся к серверу mysql clientname.mysql.myserver.com. Переместить клиентскую базу данных между серверами будет так же просто, как изменить этот CNAME на

clientname.mysql.myserver.com. CNAME mysql2.myserver.com.

Это намного проще. Но я не уверен, правильно ли я понимаю, чего вы хотите добиться.