Usando dois clientes openvpn para expor os serviços de um servidor

1

No momento, estou tentando usar dois clientes openvpn para expor os serviços de um servidor, como já foi dito no título. Eu posso estar jogando com poderes muito além da minha compreensão atual, mas por favor, tenha paciência comigo: -)

Esboço

Esta é a minha configuração atual:

           INTERNET eth0 |          | VPN tun0

                  /----- perimeter-a -----\ 
internet clients-:                         :------ server
                  \----- perimeter-b -----/

server também é o servidor VPN neste caso. perimeter-a e perimeter-b são clientes VPN.

server tem eth0 (interface pública), eth1 (outra interface pública) e tun0 (interface vpn). Cada perimeter tem eth0 (interface pública) e tun0 (interface vpn).

O objetivo

A meta é que qualquer internet client possa falar com perimeter-a ou perimeter-b e que pareça que eles estão sendo veiculados por um desses, enquanto, na verdade, você está sendo atendido por server . Conectar a um servidor de jogo (por exemplo) em perimeter-a e conectar a um servidor de jogo em perimeter-b fará com que você termine em server toda vez.

A única exceção a essa regra deve ser quando perimeter-a ou perimeter-b não encaminhar uma porta correspondente. As portas devem ser encaminhadas explicitamente em uma dessas duas máquinas. UDP e TCP devem ser manipulados.

Tentativas anteriores

Minha tentativa anterior dependia do NAT via iptables, mas tinha o problema de perder o endereço do internet client on server . O endereço do internet client deve ser preservado - e é por isso que decidi usar uma VPN e principalmente direcionar o tráfego de e para server por meio disso.

Idéia e tentativa atual

Minha tentativa atual é usar perimeter-a e perimeter-b como gateways da Internet para server . O problema é que eu não tenho certeza sobre se é possível ou não configurá-lo quando ambos perimeters são clientes VPN em vez de servidores.

Posso passar um pacote de qualquer um dos perimeters para server sem reescrever a origem do pacote e enviá-lo de volta para qualquer um dos perimeters , descobrindo que ele entrou em server via tun0? Mas então eu preciso ter duas interfaces de tun para diferir entre os dois perimeters , certo? E então, quando esses pacotes chegarem em perimeter-XY , eu precisaria que essa máquina reescreva a fonte para si mesma e a envie para o internet client , dado que o pacote veio do tun0 - correto?

Estou completamente perdido neste momento e não consegui encontrar nada que descreva o meu caso real. Até onde estou longe da solução? Estou indo pelo caminho errado? Tudo isso é possível?

Essencialmente, estou tentando construir dois pseudo-gateways e uma máquina para usá-los, dependendo de onde a conexão veio.

Editar 1 : Os três servidores em questão não estão na mesma LAN - Eles estão localizados em locais totalmente diferentes, cada um.

    
por Danny Nophut 18.04.2015 / 01:55

1 resposta

0

Se eu entendi sua pergunta corretamente, o que você está tentando alcançar é tratado pelo projeto Linux Virtual Server - link . No mínimo, ele vai te dar dicas para os problemas.

    
por 18.04.2015 / 14:51