Estoy intentando configurar mi Raspberry Pi para que me dé acceso a dispositivos conectados a eth0 o wlan1.
La función deseada es esta:
- El usuario se conecta al RPi AP a través de wlan1 y recibe una IP (192.168.4.x)
- Dispositivo separado que se conecta a RPi a través de eth0 y recibe una IP (192.168.5.x)
- El usuario puede acceder a la interfaz de configuración del dispositivo conectado eth0 a través de su dirección IP local
He usado dnsmasq para configurar los servidores DHCP en cada interfaz y están felices de proporcionar IP;
# dnsmasq.conf
interface=wlan1
dhcp-range=wlan1,192.168.4.2,192.168.4.99,24h
interface=eth0
dhcp-range=eth0,192.168.5.1,192.168.5.99,24h
listen-address=::1,127.0.0.1,192.168.5.1,192.168.4.1
También actualicé mis iptables para reenviar el tráfico entre las interfaces;
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i wlan1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan1 -j ACCEPT
Sin embargo, todavía estoy un poco perdido cuando se trata de acceder a las diferentes IP. Creo que necesito configurar algunas rutas, pero me cuesta descubrir cómo implementar esto exactamente.
Hacer ping a una IP 192.168.4.x y 192.168.5.x a través de una conexión wlan0:
Y desde una conexión ...4.xy ...5.x de eth0:
Salidas de iptables y netstat:
pi@rak-gateway:~ $ sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
pi@rak-gateway:~ $ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan1
192.168.5.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Respuesta1
Sin embargo, todavía estoy un poco perdido cuando se trata de acceder a las diferentes IP. Creo que necesito configurar algunas rutas, pero me cuesta descubrir cómo implementar esto exactamente.
Lo que hay que recordar sobre el enrutamiento es quecada computadora en la rutaDebe saber dónde enviar un paquete en particular.
Entonces, si A se conecta a RaspPi como 192.168.4.x y B como 192.168.5.y, entonces
- ¿Debe saber que los paquetes a 192.168.5.*/24 van al 192.168.4.? dirección del RaspPi.
- B, cuando responde, debe saber que los paquetes a 192.168.4.*/24 van al 192.168.5.? dirección del RaspPi.
Obtendrá esto de forma gratuita si A y B solo están conectados a RaspPi y tienen la dirección IP de RasPi configurada como su puerta de enlace predeterminada. Si este no es el caso, por ejemplo porque A y B también están conectados a otra cosa, o porque no configuró dnsmasq
para anunciar la puerta de enlace predeterminada, entonces necesita configurar rutas.en A resp. B.
Puede hacer esto estáticamente directamente en A o B, o usar DHCP para distribuir las rutas (primer enlace de Google para obtener instruccionesaquí, google para más).
En cualquier caso, la depuración debería implicarmirando rutastanto en A como en B (en Linux, puede usar ip route get 1.2.3.4
, donde 1.2.3.4 es la dirección de destino).
Respuesta2
Gracias por tu actualizacion.
Lo primero que sugeriría es que arregle su eth0
rango de DHCP para que comience en 192.168.5.2
; actualmente parece comenzar en 192.168.5.1
.
Lo siguiente que debemos publicar es la tabla de enrutamiento de un dispositivo conectado a través de eth0
, y la tabla de enrutamiento de un dispositivo conectado a través de wlan1
.
Asegúrese de que ambos dispositivos hayan realizado DHCP correctamente y tengan direcciones en las subredes que espera antes de obtener sus tablas de enrutamiento.