Eliminé mi respuesta original, porque no estaba completamente seguro de que fuera correcta. Desde entonces, he tenido tiempo para configurar una pequeña red virtual de máquinas virtuales para simular la red en cuestión. Aquí está el conjunto de reglas de firewall que funcionaron para mí (en iptables-save
formato, solo para la nat
tabla):
-A PREROUTING -d 89.179.245.232/32 -p tcp -m multiport --dports 22,25,80,443 -j DNAT --to-destination 192.168.2.10
-A POSTROUTING -s 192.168.2.0/24 -o ppp0 -j MASQUERADE
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.2.10/32 -p tcp -m multiport --dports 22,25,80,443 -j MASQUERADE
La primera POSTROUTING
regla es una forma directa de compartir la conexión a Internet con la LAN. Lo dejé allí para completar.
La PREROUTING
regla y la segunda POSTROUTING
regla juntas establecen los NAT apropiados, de modo que las conexiones al servidor a través de la dirección IP externa pueden ocurrir, independientemente de si las conexiones se originan desde el exterior o desde el interior de la LAN. Cuando los clientes en la LAN se conectan al servidor a través de la dirección IP externa, el servidor ve que las conexiones provienen de la dirección IP interna del enrutador (192.168.2.1).
Curiosamente, resulta que hay un par de variaciones de la segunda regla POSTROUTING que también funcionan. Si se cambia el objetivo a -j SNAT --to-source 192.168.2.1
, el efecto es (no sorprendentemente) el mismo que el MASQUERADE
: el servidor ve las conexiones de los clientes de LAN locales como procedentes de la dirección IP interna del enrutador . Por otro lado, si se cambia el destino a -j SNAT --to-source 89.179.245.232
, entonces los NAT aún funcionan, pero esta vez el servidor ve las conexiones de los clientes de LAN locales como procedentes de la dirección IP externa del enrutador (89.179.245.232).
Finalmente, tenga en cuenta que su regla PREROUTING
/ original no funciona, porque la regla nunca coincide con los paquetes que provienen de los clientes LAN (ya que estos no ingresan al enrutador a través de la interfaz). Sería posible hacerlo funcionar agregando una segunda regla solo para los clientes de LAN internos, pero sería poco elegante (IMO) y aún necesitaría referirse explícitamente a la dirección IP externa.DNAT
-i ppp0
ppp0
PREROUTING
Ahora, incluso después de haber presentado una solución "horquilla NAT" (o "NAT loopback", o "reflexión NAT", o como prefiera llamarla) con todo detalle, sigo creyendo que una solución DNS de horizonte dividido-- -con clientes externos resolviendo a la IP externa y clientes internos resolviendo a la IP interna --- sería la ruta más recomendable. ¿Por qué? Debido a que más personas entienden cómo funciona DNS que entienden cómo funciona NAT, y una gran parte de la construcción de buenos sistemas es elegir partes que se puedan mantener. Es más probable que se entienda una configuración DNS y, por lo tanto, se mantenga correctamente, que una configuración NAT arcana (IMO, por supuesto).