Eu tenho uma situação um pouco única que está tornando o gerenciamento do meu vpns um pouco doloroso, então estou tentando tornar isso mais fácil para mim e meus usuários, espero que alguém possa me dar algumas idéias e / ou alternativas.
A situação agora é que eu tenho cerca de 600 clientes que se conectam a cerca de 6 servidores na minha rede, para replicação de banco de dados mysql.
Os escravos do MySQL se conectam ao master, então a conexão vem da minha rede para a rede do cliente, nós costumávamos fazer isso sem VPNs, mas isso está longe de ser seguro, então nós estamos movendo todo mundo para VPNs.
Agora eles se conectam com o openvpn diretamente ao servidor que estão atribuídos.
A coisa é, a maioria dos usuários não são técnicos, então minha equipe tem que se conectar a eles (teamviewer e similares) e fazer a configuração para eles, e às vezes temos que mover esses caras de um servidor para outro.
Do jeito que está agora envolve alguém da minha equipe realmente pequena se conectando ao servidor do cliente e mudando a configuração no servidor, às vezes seu firewall, e isso leva muito tempo para uma equipe de 3 gerenciar 600.
Agora: CLIENTE --- VPN / MYSQL SERVER
Então, eu queria facilitar a minha vida e estou configurando os 6 servidores em uma rede privada, com uma máquina virtual extra como o gateway.
Nessa VM eu estou executando o openvpn com 3 instâncias, de modo que seria em torno de 200 clientes por instância.
Lembre-se que a replicação do MySQL, no nosso caso, não usa enormes quantidades de largura de banda, cerca de 40KBps por usuário, o que faz com que as velocidades de upload do ADSL (a maioria dos clientes usa adsl) sejam terríveis.
Agora, eu estava lendo sobre as interwebs e a maioria das pessoas disse que isso não é possível, então imaginei que este seria o lugar para verificar novamente.
Eu poderia ter cada cliente se conectando à sua instância vpn, mas eu queria tornar mais fácil e usar algo como um proxy reverso, então eu tenho apenas um endereço externo e porta para conexão e dependendo de qual endereço eles se conectam para redirecioná-los para a porta correta no servidor openvpn.
Pretendido: CLIENT --- FIREWALL --- NGINX ---- PORTA CORRETA NO SERVIDOR VPN
Isso é possível? Se não com nginx com outra coisa?
Se não é possível o que você faria nessa situação? Eu estou morrendo por algumas ideias aqui:)
Até agora eu tentei configurar nginx para redirecionar para o servidor vpn como um gateway fastcgi, sem sorte, ovpn chega ao nginx mas não redireciona nada. Se eu tentar com um navegador, recebo um erro de gateway incorreto e somente eles o servidor ovpn mostra alguns sinais de vida no log.
as instâncias do servidor vpn são as seguintes (3 delas, portas e pools IP diferentes).
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"
o cliente conf é
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
e no nginx eu tenho a seguinte configuração para cada hostname vpn
server {
listen 4000;
server_name vpn-001.myserver.com;
location / {
fastcgi_pass 10.0.0.137:4001;
}
}
Quando o cliente ovpn tenta se conectar, recebo esse lixo no log de erros do nginx. 10.0.0.4 é meu firewall.
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 "-" "-"
e nada chega ao log do servidor ovpn. (Eu sei que ele redirecionar causa quando eu uso um navegador para se conectar ao mesmo endereço eu recebo um erro de gateway ruim de nginx e alguma resposta no ovpn log)
pensamentos? idéias?