Instalé Ubuntu 11.10 en una máquina restaurada. También reemplacé una tarjeta NIC defectuosa con una tarjeta NIC nueva; se reconocen dos tarjetas NIC cuando se realiza la instalación. También tengo squid instalado como servidor proxy. Squid funciona bien cuando todas las estaciones de trabajo están conectadas al enrutador. Sin embargo ... .
Cuando conecto una NIC a mi enrutador (conexión a Internet en vivo disponible), la otra NIC a mi conmutador (sin Internet disponible), puedo crear dos redes separadas, pero no puedo entender cómo hacer que las dos tarjetas NIC se transfieran. datos entre ellos, así como a través de las dos redes.
- Intenté conectar ambas tarjetas Ethernet... ¡sin suerte!
- He intentado actualizar iptables… ¡sin suerte!
- He configurado ambas tarjetas NIC en direcciones estáticas... ¡no hubo suerte!
- He configurado una NIC para usar la otra como puerta de enlace... ¡no hubo suerte! Todo da como resultado un error de que la dirección a la que se hace ping (red relacionada con el conmutador) está en un destino inalcanzable.
¿Qué me estoy perdiendo?
Respuesta1
El script descrito por @laurent es innecesario, porque existe una forma canónica. Todo lo que necesitas hacer es editar /etc/sysctl.conf
y descomentar (eliminar #
al principio de) esta línea:
net.ipv4.ip_forward = 1
Entonces ya se aplicará en el arranque.
Respuesta2
Ubuntu tiene el reenvío de IP deshabilitado de forma predeterminada y debes habilitarlo para enrutar paquetes con tu máquina:
para habilitar, escriba en terminal como root ( sudo su
):
echo 1 > /proc/sys/net/ipv4/ip_forward
Obs: no funciona con sudo
Y si desea enrutar Internet desde esta máquina, es posible que también necesite configurar NAT.
EDITAR:
el primer comando echo 1 ...
no funciona con sudo. Tienes que cambiar a root con sudo su
antes (porque sudo ejecutará echo 1 como root pero intentará redirigir al archivo como tu usuario y esto no funcionará). De todos modos, siempre puedes comprobar si hay un 1 con cat /proc/sys/net/ipv4/ip_forward
.
Observaciones:Esto debe hacerse en cada arranque para que pueda escribir un script y usar update-rc.d en él.
La regla POSTROUTING parece correcta si eth0 es su NIC de conexión a Internet.
Reglas FORWARD que utilizo para conexiones establecidas y relacionadas:
-A FORWARD -p tcp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p udp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT
2da ACTUALIZACIÓN - Script automático:
#!/bin/sh
# turn ip_forward on/off
case "$1" in
'start')
echo 1 > /proc/sys/net/ipv4/ip_forward
;;
'stop')
echo 0 > /proc/sys/net/ipv4/ip_forward
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0
Guardas este script /etc/init.d
con el nombre que quieras ( router
por ejemplo) y lo haces ejecutable ( sudo chmod +x /etc/init.d/router
).
Para que se ejecute en cada reinicio, debe crear enlaces de inicio con update-rc.d:
sudo update-rc.d router defaults
Otras cosas que tienes que comprobar:
- DHCP funciona en la segunda red y envía la IP de su máquina como puerta de enlace predeterminada a la subred
- La puerta de enlace predeterminada (la IP de su máquina en la nueva subred) es mejor con una IP fija
- comentaste que no puedes hacer ping a la segunda NIC, pero ¿desde dónde? ¿La subred, su máquina o máquinas conectadas directamente al enrutador?
- ¿Squid está instalado en su máquina? ¿Cambiaste la configuración para incluir la nueva subred? ¿Necesitas calamares? No es muy fácil de configurar y puedes compartir Internet y redes sin él si no necesitas sus funciones adicionales.
Obs: el mensaje update-rc.d está bien, no hay problema. Ahora debería tener siempre un 1 en el archivo ip_forward.
Respuesta3
Probé este consejo y me encontré con un problema que no se trata aquí: la siguiente computadora tiene que saber cómo volver a la última computadora.
En mi caso tengo 2 redes: Una red WiFi, 192.168.1.0/24, y una red Ethernet, 192.168.40.0/24. Mi "enrutador" es una computadora portátil con un transceptor WiFi en la red 192.168.1.0/24 y una interfaz Ethernet en la red 192.168.40.0/24. El enrutador doméstico también tiene un transceptor WiFi y una interfaz Ethernet, pero este transceptor Ethernet se conecta a Internet. El enrutador doméstico también tiene un traductor de direcciones de red (NAT). El enrutador doméstico tiene una tabla de enrutamiento, y esa tabla de enrutamiento tiene una entrada de ruta predeterminada, que normalmente apunta al enrutador del proveedor de servicios de Internet (ISP).
Cuando una computadora en la red 192.168.40.0/24 deseaba enviar un paquete a alguna computadora en Internet, consultaba su propia tabla de enrutamiento y sabía que la puerta de enlace predeterminada era la computadora portátil, 192.168.40.1. Cuando el paquete llegó a la computadora portátil, ésta consultó su propia tabla de enrutamiento y reenvió el paquete al enrutador doméstico. El enrutador doméstico consultó su tabla de enrutamiento, pasó por la traducción de direcciones de red (un detalle que podemos ignorar en esta discusión) y luego al enrutador del ISP. En algún momento, la máquina de destino querrá enviar un paquete a mi computadora. El paquete llegará al enrutador doméstico, pasará por NAT inversa y luego deberá enrutarse. Cuando el paquete salga de NAT, tendrá una dirección IPv4 de destino en la red 192.168.40.0/24. Fue en este punto que me encontré con un problema: el enrutador doméstico no conocía la red Ethernet, 192.168.40.0/24. Entonces hizo lo que se supone que debía hacer: reenviar ese paquete a su enrutador predeterminado, es decir, al enrutador del ISP.
Para resolver el problema, tuve que hacer una entrada en la tabla de enrutamiento del enrutador doméstico, que le indica que para llegar a cualquier computadora en la red 192.168.40.0/24, envíe el paquete a la dirección WiFi de la computadora portátil, que está en 192.168. 1.0/24. Ahora, cuando el paquete llega a la computadora portátil, ésta conoce la red 192.168.40.0/24 y enruta el paquete allí.