Quiero conectar varias LAN ubicadas en edificios remotos.
El sitio "central" tiene una computadora Linux con OpenVPN. Cada sitio remoto también ejecuta OpenVPN.
- el sitio central tiene una LAN numerada 192.168.0.0/24
- varios sitios remotos también están numerados 192.168.0.0/24
- No puedo / no quiero / no quiero / lo que sea modificar la numeración LAN
- No tengo control sobre la mayoría de los OpenVPN remotos
Luego necesito:
1. definir LAN virtuales
2. configurar un NAT 1: 1 para cada sitio
3. el NAT 1: 1 debe configurarse en el enrutador central
.
Por lo tanto, se considera que cada sitio tiene una LAN 10.10.x.0 / 24.
Cuando una computadora quiere alcanzar, digamos, 192.168.0.44 en el sitio 12, solo tiene que enviar un paquete a 10.10.12.44
Operar una VPN no es un problema para mí. Actualmente conecto más de 60 sitios. Pero no encuentro una manera simple de hacer esto NAT 1: 1.
Aquí hay un ejemplo de un paquete enviado desde el sitio central a un sitio remoto, y su paquete de respuesta:
Hice algunas pruebas con iptables NETMAP pero no puedo hacer que funcione porque no encuentro una manera de modificar el origen + destino después de la decisión de enrutamiento.
Prefiero evitar la nueva --client-nat
función de OpenVPN.
Tal vez tengo que forzar el enrutamiento con ip route
? ¿O para pasar dos veces en la pila de red con veth
?
Nota: no quiero usar disfraces. Solo 1/1 NAT.
EDITAR:
No es posible con una configuración regular de openVPN. Debido a que un paquete de un sitio remoto es indistinguible de un paquete de otro sitio: ambos tienen direcciones de origen y destino similares, y ambos provienen de la misma interfaz tun (o tap). Por lo tanto, no es posible fuente-NAT.
Solución 1: haga el NAT en los sitios remotos. No es posible en mi caso. Tengo que hacerlo solo en el sitio central.
Solución 2: configure una VPN para cada sitio remoto. Así que tendré un tun para cada uno. Creo que esto puede estar bien. No es muy eficiente en memoria pero está bien.
Solución 3: configure un túnel (sin cifrar) dentro de la VPN para cada sitio. Esto le dará una interfaz para cada uno. Los túneles simples no son multiplataforma (para mi conocimiento). Por ejemplo, GRE o ipip o sit están bien para Linux, pero algunos sitios distantes solo ejecutan una computadora con Windows, por lo que openVPN está instalado en ella. Tan imposible de configurar un túnel simple. Otra opción es usar un túnel más complicado (¿cuál?) Pero la sobrecarga en el sistema y en el administrador del sistema puede ser mayor que tener múltiples VPN
Solución 4: compile la última versión de openVPN, ya que incluye una función NAT 1: 1. Pruebo esto esta semana.