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.
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: -)
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).
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.
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.
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.
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.