Cómo configurar un enrutador NAT de Linux con una sola NIC

0

Tengo varios servidores de Windows ejecutándose en una red virtual de Azure con 2 subredes. Tengo un controlador de dominio en 10.0.0.4 y servidores en 10.0.1.4, 10.0.1.5, etc. Configuré una VPN de punto a sitio, para que pueda hacer una conexión VPN a la red virtual desde mi PC. Cuando hago la conexión VPN, mi PC recibe una IP 10.0.16.x. De forma predeterminada, la conexión VPN proporcionada por Azure enruta solo el tráfico 10.xxx a través de la VPN, pero he modificado esto marcando Usar puerta de enlace predeterminada en la red remota, porque quiero que todo el tráfico de Internet se enrute a través de Azure cuando estoy conectado a la VPN. Cuando hago esta conexión, puedo acceder a los servidores en la red virtual de Azure, pero no tengo conectividad a Internet. Tengo entendido que se requerirá un enrutador NAT para facilitar la conectividad a Internet.

He agregado una VM CentOS en 10.0.1.6. Tiene una sola NIC, ya que no es posible que las máquinas virtuales de Azure tengan más de una NIC. Tengo dos preguntas:

  1. ¿Será posible configurar un enrutador NAT con una sola NIC? ¿Si es así, cómo? Las búsquedas en Google me entierran en una avalancha de comandos de iptables, principalmente para enrutadores NAT con 2 NIC. No puedo encontrar nada que simplifique los pasos de configuración necesarios para este tipo de escenario. Intenté los comandos aquí , pero eso no fue exitoso.

  2. En mi PC después de conectarme a la VPN, no tengo muy claro qué necesitaré hacer. ¿Voy a querer esencialmente hacer de 10.0.1.6 la puerta de enlace predeterminada? Si es así, ¿es así como haré eso?

    route delete 0.0.0.0     
    route add 0.0.0.0. MASK 0.0.0.0 10.0.1.6
    

En caso de que ayude, aquí está la salida de ifconfigCentOS VM:

eth0      Link encap:Ethernet  HWaddr 00:15:5D:61:7E:1E
          inet addr:10.0.1.6  Bcast:10.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::215:5dff:fe61:7e1e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:931 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1034 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:101709 (99.3 KiB)  TX bytes:162650 (158.8 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Aquí hay un fragmento de la página de configuración de Azure Virtual Network que, con suerte, ayudará a describir el diseño de la red. Estoy usando "Subnet-1" para los controladores de dominio, y "Subnet-2" es donde viven todos los demás servidores (incluida la VM CentOS que estoy tratando de usar como enrutador). Azure configura automáticamente las máquinas virtuales en "Subred-1" con una puerta de enlace predeterminada de 10.0.0.1, y las máquinas virtuales en "Subred-2" con una puerta de enlace predeterminada de 10.0.1.1. Pero esas puertas de enlace no son servidores sobre los que tengo control. Los clientes VPN tienen direcciones IP asignadas desde el espacio de direcciones de "conectividad de punto a sitio".

Captura de pantalla de configuración de red virtual de Azure

(No se me permite publicar imágenes aparentemente)

Y aquí hay un enlace a la tabla de rutas en el cliente vpn (windows) (en este caso después de configurar 10.1.0.1 como la puerta de enlace predeterminada):

Tabla de ruta en cliente VPN

almaplayera
fuente
Noto que nadie ha respondido a esta publicación todavía. Iba a hacerlo, pero fue "demasiado difícil" ya que no es inmediatamente aparente [sin habilidades analíticas / de lectura / modelado mejores que el promedio] cómo funciona la red. Si nadie más ayuda y pones un diagrama que muestra cómo se ve todo, intentaré ayudar. Sospecho que el problema tiene que ver con las máscaras de red y las puertas de enlace.
davidgo
no sé cómo crear un diagrama de red, pero es simple: centos vm ip: 10.0.1.6 puerta de enlace predeterminada: 10.0.1.0 conectividad a internet: sí ip de cliente vpn de windows: 10.0.16.2 puerta de enlace predeterminada: 10.0.1.6 conectividad a internet: No, cuando estoy conectado a la VPN, puedo hacer ping a 10.0.1.6, y puedo hacer ping a 10.0.16.2 desde 10.0.1.6. pero no tengo conectividad a internet. Estoy tratando de configurar iptables en el centos vm, pero no he podido hacer que nada funcione, y quiero asegurarme de que sea posible con solo 1 nic.
almaplayera
error tipográfico: la puerta de enlace predeterminada para CentOS VM es 10.0.1.1
almaplayera
Lo sentimos, no está lo suficientemente claro: no pude dibujar fácilmente un diagrama de red a partir de la información proporcionada, sin máscaras de red y no es obvio dónde encajan las cajas en relación con los enrutadores. Sí, es posible con 1 nic: la VPN debe actuar como una segunda NIC, pero debe ajustar sus máscaras de red para comenzar. Puede descargar Dia (dia-installer.de) para la mayoría de los sistemas operativos, armar un diagrama como png y cargarlo o vincularlo.
davidgo
Para ser claros, la VM CentOS no es el servidor VPN. Solo estoy tratando de configurarlo como un enrutador. es muy difícil para mí describir completamente la red, porque varios componentes son parte de la infraestructura azul sobre la que no tengo control y sobre los que realmente no sé nada. espero que la captura de pantalla que publiqué proporcione suficiente información.
almaplayera

Respuestas:

0

El servidor vpn, por ejemplo, 10.0.0.1 es siempre la primera parada para todo el tráfico ip que sale del cliente.

Entonces, si tiene tráfico que va a, por ejemplo, www.google.com, primero debe cruzar este servidor vpn, porque la conexión vpn es un enlace punto a punto, es decir, el tráfico del cliente solo tiene una salida, que es el servidor.

Luego, el servidor vpn verá el destino del tráfico, y dado que el servidor está configurado para no reenviar el tráfico cuyo destino es Internet, lo eliminará.

Por lo tanto, el servidor vpn siempre interceptará y eliminará el tráfico que va a internet, no puede evitarlo.

Conclusión, el tráfico ni siquiera alcanzará los centos, por lo tanto, no activará NAT.

Puede crear un segundo túnel desde el cliente hasta los centos (por ejemplo, openvpn) dentro del túnel vpn original para ocultar el tráfico de internet del servidor vpn.

O, otra solución sería configurar un proxy web en la máquina virtual centos y configurar su navegador web para ese proxy, de esta manera el tráfico http siempre saldrá del cliente con la ip de centos de destino, y luego llegará al proxy , que reenviará a internet, sin embargo, esta solución solo funciona para el tráfico http.

aseaudi
fuente