Tengo una máquina Linux que está enrutada entre dos redes XX3.0 y XX4.0. Quiero que pueda conectar estas redes a Internet.
he leídoaquíen la gran respuesta de @Kevin de que para poder hacerlo tengo que usar NAT, lo que significa iptables, mi servidor en este momento no usa iptables, así que necesito encontrar el comando correcto para habilitarlo.
Mi red se puede describir así:
Internet <-(eth0) Linux Router <-[1](eth1) 192.168.3.0 <--[2](eth2) 192.168.4.0
El eth2 está conectado directamente al enrutador.
Las dos redes locales pueden comunicarse entre sí, pero ninguna puede siquiera hacer ping a una dirección IP pública. Intenté rastrear los paquetes en el enrutador, cuando emití el comando ping a una dirección IP pública en una máquina en la red .3.x, pero hasta donde puedo decir, hay un problema y parece estar con un sinfín de solicitudes ARP del eth0 int sobre quién tiene la dirección IP 3.x. Parece que tengo que habilitar el enrutador para que también se comporte como NAT. Hice una búsqueda y no pude encontrar el comando correcto que debo emitir con iptables, aunque probé los comandos que mencionan.aquíyaquí. He tenido la capacidad de enrutar entre las dos redes locales sin usar iptables en absoluto, y como no lo necesito, prefiero no usarlo, a menos que sea imposible hacer NAT sin él (en ese caso prefiero iptable que cualquier otro programa).
Para resumir la pregunta: 1. Necesito poder que las tres redes puedan comunicarse entre sí. 2. Prefiero no usar iptables (si es posible) ni ningún otro programa agregado. 3. Eso es todo.
Gracias.
Respuesta1
Las dos redes locales pueden comunicarse entre sí, lo que significa que tiene ip_forward habilitado. Si las redes locales no pueden hacer ping a la dirección IP pública, significa que debe enmascararse.
¿Puede hacer ping a la dirección IP pública desde este equipo de Linux? Si no, entonces debe haber algún otro problema. Tal vez necesites configurar tu enrutador en modo puente (es sólo una suposición).
Supongo que su máquina Linux puede hacer ping a la IP pública y hay una IP pública configurada en eth0. Por lo tanto, las máquinas de su red interna no pueden acceder a Internet con la dirección IP privada, por lo que debe realizar la navegación. Intente usar iptables porque es bastante sencillo.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Si no tiene iptables instalado en su sistema. Debe haber algún firewall instalado por defecto. ¿Qué distribución estás usando?
Respuesta2
Las direcciones IP privadas no son válidas para el uso de Internet y no se pueden enrutar. Sólo se pueden utilizar localmente.
Para habilitar el acceso a Internet, debe habilitar el reenvío de IP que parece realizarse según su descripción. En segundo lugar, es necesario utilizar NATing. La mayoría de las veces, su ISP realiza la NAT por usted. Esto puede cambiar según el tipo de conexión y las IP asignadas.
En cuanto a la herramienta, no creo que exista una herramienta mejor que iptables para hacerlo en Linux.
Respuesta3
Después de investigar un poco y recibir recomendaciones de su gente, llegué a la conclusión de que iptable es la mejor manera de hacer NAT (enmascaramiento), así que lo hice de la siguiente manera:
#Elimine todas las configuraciones actuales de iptables con:
$>iptables -F
y
$>iptables -t nat -F
Luego intente hacer ping entre las redes locales, debería funcionar con los valores predeterminados de iptables, en caso de que no escriba esto:
$>iptables -P INPUT ACCEPT
$>iptables -P FORWARD ACCEPT
$>iptables -P OUTPUT ACCEPT
Luego emita el comando anterior de @Sachin Divekar (reemplace ethX con su interfaz de conexión a Internet):
$>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Prueba, debería funcionar. Entonces deberías guardar esta configuración con:
$>iptables-save > /etc/sysconfig/iptables
Hecho.