Queremos agregar un segmento de red adicional (LAN2) y necesitamos algunas máquinas en LAN1 para acceder a los recursos en LAN2. Algunas máquinas en LAN2 también necesitan acceder a recursos en LAN1 y el segmento WAN. La puerta de enlace entre LAN1 y LAN2 se llama "SRV-01", un servidor Linux de doble conexión.
No puedo acceder a LAN2 desde LAN1 o LAN1 desde LAN2 ni a WAN desde LAN2. Me pregunto cómo hacer que los hosts LAN1 y LAN2 hablen juntos y también cómo permitir el acceso a la WAN desde las máquinas LAN2.
Solución de problemas
Recibo las siguientes respuestas usando ping:
IP (origen) ---> IP (destino): respuesta de ping -------------------------------------------------- ------------------------- 192.168.5.33 (cliente en LAN1) ---> 192.168.5.8 (SRV-01:eth0): OK 192.168.5.33 (cliente en LAN1) ---> 10.0.2.1 (SRV-01:eth1): NO 192.168.5.33 (cliente en LAN1) ---> 10.0.2.2 (SRV-02:eth0): NO *.*.*.*.* (SRV-01) ---> 192.168.5.33 (cliente en LAN1): OK *.*.*.*.* (SRV-01) ---> 10.0.2.2 (SRV-02:eth0): OK 10.0.2.2 (SRV-02) ---> 10.0.2.1 (SRV-01:eth1): OK 10.0.2.2 (SRV-02) ---> 192.168.5.8 (SRV-01:eth0): OK 10.0.2.2 (SRV-02) ---> 192.168.5.33 (cliente en LAN1): NO
Topología de la red
WAN --- (Enrutador ISP) --- LAN1 --- (SRV-01) --- LAN2 --- (SRV-02)
Enrutador ISP
El enrutador del proveedor de servicios de Internet (ISP) proporciona NAT (dos adaptadores de red) y actúa como servidor DHCP para LAN1. No tenemos acceso de shell/administrador a este equipo.
- xxx.xx.xx.xx/xx (eth0, WAN)
- 192.168.5.4/24 (eth1, LAN1)
servidor SRV-01
SRV-01 es un servidor Ubuntu 14.04 de doble conexión (dos adaptadores de red) que actuaría como puerta de enlace entre la subred LAN1 y la subred LAN2.
- 192.168.5.8/24 (eth0, LAN1)
- 10.0.2.1/24 (eth1, LAN2)
/etc/red/interfaces
# Loopback
auto lo
iface lo inet loopback
# LAN1
auto eth0
iface eth0 inet static
address 192.168.5.8
netmask 255.255.255.0
network 192.168.5.0
broadcast 192.168.5.255
gateway 192.168.5.4
dns-nameservers xxx.xxx.xxx.xxx
# LAN2
auto eth1
iface eth1 inet static
address 10.0.2.1
netmask 255.255.255.0
network 10.0.2.0
broadcast 10.0.2.255
dns-nameservers xxx.xxx.xxx.xxx
Enrutamiento
~$ netstat-r Tabla de enrutamiento IP del kernel Destino Puerta de enlace Genmask Banderas Ventana MSS irtt Iface predeterminado 192.168.5.4 0.0.0.0 UG 0 0 0 eth0 10.0.2.0 * 255.255.255.0 U 0 0 0 eth1 red local * 255.255.255.0 U 0 0 0 eth0
~$ mostrar ruta ip predeterminado a través de 192.168.5.4 dev eth0 10.0.2.0/24 dev eth1 proto kernel alcance enlace src 10.0.2.1 192.168.5.0/24 dev eth0 proto kernel alcance enlace src 192.168.5.8
reenvío de IP
~$ sudo sysctl -a | grep net.ipv4.ip_forward net.ipv4.ip_forward = 1 net.ipv4.ip_forward_use_pmtu = 0
Cortafuegos
El "Firewall sin complicaciones" (UFW) de Ubuntu está deshabilitado en el servidor "SRV-01" y todas las cadenas de iptables tienen una política predeterminada establecida para ACEPTAR el objetivo. Tenga en cuenta que ningún paquete llegó a la tabla FORWARD todavía...
~$ estado sudo ufw Estado: inactivo
~$ sudo iptables -L -v | política grep ENTRADA de cadena (política ACEPTAR 369 paquetes, 28278 bytes) Cadena ADELANTE (política ACEPTAR 0 paquetes, 0 bytes) SALIDA de cadena (política ACEPTAR 187 paquetes, 19740 bytes)
servidor SRV-02
SRV-02 es un Ubuntu Server 14.04 con un adaptador de red.
- 10.0.2.2/24 (eth0, LAN2)
/etc/red/interfaces
# Bucle invertido baja automática bucle invertido iface lo inet #LAN2 iface eth0 inet estático dirección 10.0.2.2 máscara de red 255.255.255.0 red 10.0.2.0 transmisión 10.0.2.255 servidores de nombres dns xxx.xxx.xxx.xxx
Enrutamiento
~$ netstat-r: Tabla de enrutamiento IP del kernel Destino Puerta de enlace Genmask Banderas Ventana MSS irtt Iface predeterminado 10.0.2.1 0.0.0.0 UG 0 0 0 eth0 10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
~$ mostrar ruta ip predeterminado a través de 10.0.2.1 dev eth0 10.0.2.0/24 dev eth0 proto kernel alcance enlace src 10.0.2.2
Cortafuegos
El "Firewall sin complicaciones" (UFW) de Ubuntu está deshabilitado en el servidor "SRV-02" y todas las cadenas de iptables tienen una política predeterminada establecida para ACEPTAR el objetivo.
~$ estado sudo ufw Estado: inactivo
~$ sudo iptables -L -v | política grep ENTRADA de cadena (política ACEPTAR 0 paquetes, 0 bytes) Cadena ADELANTE (política ACEPTAR 0 paquetes, 0 bytes) SALIDA en cadena (política ACEPTAR 0 paquetes, 0 bytes)
¿Que me estoy perdiendo aqui? Me pregunto qué ruta estática debería agregarse a SRV-01 y también si las puertas de enlace predeterminadas están configuradas correctamente...
Respuesta1
Hay dos problemas con esta configuración:
- Los hosts de LAN1 no saben nada sobre el segmento LAN2. Cuando hace ping a un host en LAN1 (llamémoslo host1) desde SRV-02, el paquete se enrutará a través de SRV-01 y llegará al host1. Sin embargo, el host1 enviará la respuesta a su puerta de enlace predeterminada (enrutador ISP), ya que no tiene una ruta específica a LAN2. (El enrutador ISP a) también lo enviará a su puerta de enlace predeterminada, ya que tampoco conoce la LAN2, ob) descartará el paquete porque proviene de una fuente desconocida, no de su LAN local).
- Al intentar llegar a la WAN desde LAN2, los paquetes se enrutarán a través de SRV-02 al enrutador ISP donde son posibles dos situaciones:
- El enrutador no traducirá NAT el paquete porque el origen del paquete (LAN2) no es su LAN local (esta es la situación más probable), o
- El enrutador traducirá NAT el paquete y lo enviará a Internet. Sin embargo, cuando llega la respuesta y el destino se traduce nuevamente a la dirección LAN2, el paquete no se entregará porque el enrutador ISP no tiene una ruta para esa red. El paquete se enviará incorrectamente a la puerta de enlace predeterminada (ISP).
Estos problemas podrían solucionarse agregando una ruta estática a LAN2 al enrutador ISP y agregando una configuración NAT de origen para LAN2 en SRV-01. Sin embargo, eso no es posible debido a que no hay acceso de administrador al enrutador del ISP.
Hay dos soluciones que lo solucionan:
A. Hacer del SRV-01 un enrutador completo para los hosts LAN1 y LAN2
- Agregue otro adaptador de red al SRV-01 (haciendo 3 en total)
- Cambie la topología de la siguiente manera:
.
WAN -> ISP router -> LAN1 -> SRV-01 +-> LAN3 (for hosts originally in LAN1)
+-> LAN2 -> SRV-02
Básicamente, estamos haciendo del SRV-01 un enrutador para ambos segmentos de LAN.
- Esto requerirá mover los hosts originalmente en LAN1 a una nueva subred LAN3; digamos que usamos
10.0.1.0/24
- Será necesario cambiar la configuración de red de SRV-01 de la siguiente manera:
/etc/red/interfaces:
# LAN1 - to ISP router
auto eth0
iface eth0 inet dhcp
# we can even use dhcp as the IP address is not really important
# - there are no more hosts on LAN1 apart from ISP router and SRV-01
# LAN3 - for hosts originally in LAN1
iface eth1
address 10.0.1.1
netmask 255.255.255.0
# LAN2
iface eth2
address 10.0.2.1
netmask 255.255.255.0
Reglas de iptables para que el acceso WAN funcione:
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j MASQUERADE
Alternativamente, si elige mantener la dirección IP estática en SRV-01 en eth0, las reglas podrían cambiarse (aunque MASQUERADE
aún funcionarían):
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j SNAT --to-source 192.168.5.8
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j SNAT --to-source 192.168.5.8
- Será necesario configurar DHCP en SRV-01 en eth1 (LAN3, para hosts originalmente en LAN1) y posiblemente también en eth2 (LAN2) si es necesario. (En ambos casos la puerta de enlace será la dirección local de eth1 o eth2 respectivamente, pero eso es evidente :)
Esto hará posible la comunicación entre LAN3 y LAN2 (a través de SRV-01, que es la puerta de enlace predeterminada para ambas). El acceso WAN también funcionará tanto desde LAN3 como desde LAN2 gracias a la NAT de doble fuente.
B. Convertir SRV-01 en un servidor DHCP para LAN1
Este enfoque no es tan claro como el anterior pero es un poco más simple. Se supone que puede desactivar DHCP en el enrutador ISP
- Deshabilite DHCP en el enrutador ISP
- Configure DHCP para LAN1 en SRV-01 y haga de SRV-01 (192.168.5.8) la puerta de enlace predeterminada para LAN1
- Configure la traducción NAT de origen para LAN2 en SRV-01 para que el acceso WAN funcione desde LAN2:
.
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -d 192.168.5.4 -j SNAT --to-source 192.168.5.8
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 ! -d 192.168.5.0/24 -j SNAT --to-source 192.168.5.8
La primera línea habilita SNAT para que los hosts LAN2 puedan acceder al enrutador ISP y la segunda línea deshabilita SNAT para el acceso LAN2-LAN1.
Nuevamente, este enfoque no es tan claro como el anterior, ya que hay dos enrutadores en la misma subred (SRV-01, enrutador ISP). Cuando utilicé este enfoque, noté que mi segundo enrutador (SRV-01 en este escenario) enviaba redirecciones ICMP al enrutador ISP, ya que veía que el cliente (host en LAN1) y el enrutador ascendente (enrutador ISP) están en el misma LAN. Es posible que esto no sea deseable ya que las políticas de red implementadas en SRV-01 podrían eludirse.
Espero que ayude.