Quero conectar várias LANs localizadas em prédios remotos.
O site "central" possui um computador Linux executando o OpenVPN. Cada site remoto também executa o OpenVPN.
- o site central possui uma LAN numerada 192.168.0.0/24
- vários sites remotos também são numerados 192.168.0.0/24
- Não posso / não quero / não quero / modificar a numeração da LAN
- Não tenho controle na maioria dos OpenVPNs remotos
Em seguida, preciso:
1. definir LANs virtuais
2. configurar um NAT 1: 1 para cada site
3. o 1: 1 NAT deve ser configurado no roteador central
.
Portanto, cada site possui uma LAN 10.10.x.0 / 24.
Quando um computador deseja acessar, digamos, 192.168.0.44 no site 12, basta enviar um paquet para 10.10.12.44
Operar uma VPN não é um problema para mim. Atualmente, conecto mais de 60 sites. Mas não encontro uma maneira simples de fazer isso NAT 1: 1.
Aqui está um exemplo de um pacote enviado do site central para um site remoto e seu pacote de resposta:
Fiz alguns testes com o iptables NETMAP, mas não consigo fazê-lo funcionar porque não encontro uma maneira de modificar a origem + o destino após a decisão de roteamento.
Prefiro evitar o novo --client-nat
recurso do OpenVPN.
Talvez eu tenha que forçar o roteamento com ip route
? Ou para fazer um loop duas vezes na pilha de rede com veth
?
Nota: Não quero usar máscaras. Apenas 1/1 NAT.
EDIT:
Não é possível com uma configuração openVPN regular. Como um pacote de um site remoto é indistinguível de um pacote de outro site: ambos têm endereços de origem e destino semelhantes e ambos vêm da mesma interface de tun (ou toque). Portanto, não é possível obter o NAT da fonte.
Solução 1: faça o NAT nos sites remotos. Não é possível no meu caso. Eu tenho que fazer isso apenas no site central.
Solução 2: configure uma VPN para cada site remoto. Então eu vou ter um tun para cada um. Eu acho que isso pode estar bem. Memória não muito eficiente, mas ok.
Solução 3: configure um túnel (não criptografado) dentro da VPN para cada site. Isso dará uma interface para cada um. Túneis simples não são multiplataforma (até onde eu sei). Por exemplo, GRE ou ipip ou sit são válidos para Linux, mas alguns sites distantes estão executando apenas um computador Windows, portanto o openVPN está instalado nele. Tão impossível configurar um túnel simples. Outra opção é usar um túnel mais complicado (qual?), Mas a sobrecarga no sistema e no administrador de sistemas pode ser maior do que ter várias VPNs
Solução 4: compile o openVPN mais recente, pois inclui um recurso NAT 1: 1. Eu testei esta semana.