iptables reenvío entre dos interfaces


26

Así que tengo una caja de Linux con dos interfaces inalámbricas, una es una estación y la otra un AP.

wlan0 (estación): conectado a la conexión a internet

wlan1 (AP): otros clientes se conectan a él.

Me gustaría que los clientes conectados a wlan1 puedan acceder a internet en wlan0. Y me gustaría hacer esto con iptables ya que mi kernel no tiene soporte de puente ...

Esto es lo que he intentado hasta ahora con iptables pero no funciona:

iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT

Agradecería cualquier ayuda.


1
IPTABLES es un filtro de paquetes con estado, permite / descarta / destruye paquetes. No es un enrutador o puente. Sus comandos ajustan el firewall para permitir el tráfico, pero no hacen nada para reenviarlo.
Zoredache

Así que reemplace el kernel con uno que tenga las características que necesita. Es "una caja de Linux", después de todo.
Michael Hampton

¿Puedo lograr lo que estoy tratando de hacer con 'ruta'? Examinaré la reconstrucción del núcleo con soporte de puente también, pero me pregunto si hay otras opciones.
Broody

Route le dice a dónde ir una vez que está habilitado. Michael te dijo lo que debes hacer para admitir el enrutamiento. ENTONCES necesita encenderlo a través de sysctl.
Magellan

Respuestas:


35

Primero, para permitir que los hosts que se conectan en su interfaz privada salgan a Internet, no necesita unir las interfaces, debe enrutar los paquetes que ingresan en una interfaz, a la otra, donde salen a la naturaleza.

Para hacer eso, solo necesitas:

  1. Habilite el reenvío en su caja de Linux:
  2. Permita que paquetes específicos (o todos) atraviesen su enrutador
  3. Como alguien dijo, como netfilter es un firewall sin estado, permita el tráfico para conexiones ya establecidas
  4. Cambiar la dirección de origen en los paquetes que salen a internet
    echo 1> / proc / sys / net / ipv4 / ip_forward
    iptables -A ADELANTE -i wlan1 -o wlan0 -j ACEPTAR
    iptables -A ADELANTE -i wlan0 -o wlan1 -m estado - estado ESTABLECIDO, RELACIONADO \
             -j ACEPTAR
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Deberias hacer eso.


Creo que probablemente te refieres a: echo 1 >/proc/sys/net/ipv4/ip_forwardpara la primera línea
Jason Tan el

eso es todo ... no sé qué pasó con la última parte de esa línea ... corregido.
Torian

Creo que también tendrías que configurar a los clientes para que usen Linux Box como su puerta de enlace.
Jason Tan

Y para que el reenvío persista durante los reinicios, desea hacer esto: 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'
Jason Tan

1
@StudentsTea Sí, lo hace, a menos que su iptables' FORWARDtabla, se establece una política de aceptación a nivel mundial. Sin embargo, aún necesitaría las natreglas de la tabla de cualquier manera.
Thomas Ward el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.