Discusión: Electrónica Proyecto OpenPlotter
Ver mensaje
  #11  
Antiguo 03-10-2015, 09:47
Avatar de sailoog.com
sailoog.com sailoog.com esta desconectado
Expulsado
 
Registrado: 24-05-2011
Mensajes: 1,237
Agradecimientos que ha otorgado: 413
Recibió 1,358 Agradecimientos en 485 Mensajes
Sexo:
Predeterminado Re: Proyecto OpenPlotter

Cita:
Originalmente publicado por gilinas Ver mensaje
Hola Sailoog y resto de openplottaneos.

Cuando estoy un puerto con wifi me suelo conectar a internet través de un router NanoStation LOCO M2 que emplazo en el exterior con una abrazadera de quita-y-pon. La antena del router me suele dar muchísima mejor calidad que la de cualquier pincho USB o la antena interna de los propios dispositivos


También me gusta utilizar la pi como punto de acceso del resto de dispositivos que tengo en el barco (tablets, móviles, portátiles, etc.) y para ello conecto el router a la pi por el puerto ethernet y hago que la pi enroute todo el tráfico de la Wifi al router y viceversa a través de la ethernet. Para ello he realizado las siguientes modificaciones en openplotter que no le restan ninguna de las funcionalidades que ya tiene.

Lo primero es activar el IP Forwarding:
Editando /etc/sysctl.conf y descomentando (quitándole la #) la línea siguiente
Código:
#net.ipv4.ip_forward=1
A continuación, aplicamos las reglas IPTABLES que permiten redirigir el tráfico entre las dos interfaces:
Código:
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Guardamos las reglas aplicadas en este momento en un fichero para poder cargarlas al arrancar el sistema (ya que las reglas de IPTABLES se pierden al apagar el sistema)
Código:
sudo iptables-save > /etc/network/iptables.default
y por último modificamos el archivo /home/pi/.config/openplotter/wifi_server.py en la línea 74 añadiéndole al final:
Código:
\nup iptables-restore < /etc/network/iptables.default
Para que sea:
Código:
data='# interfaces(5) file used by ifup(8) and ifdown(8)\nauto lo\niface lo inet loopback\n\nauto '+wlan+'\niface '+wlan+' inet static\naddress 10.10.10.1\nnetmask 255.255.255.0\nup iptables-restore < /etc/network/iptables.default'
De esta manera, cuando ponemos openplotter en modo punto de acceso wifi (utilizando wlan0), si la pi tiene una conexión a internet por la ethernet, entonces enruta todo el tráfico de la wifi a internet.

Desde luego que el procedimiento que planteo está restringido a que el punto de acceso se monte en wlan0, pero seguro que se podría generalizar.

Y esto es todo, lo pongo por si consideráis que se podría añadir a openplotter para la próxima versión.


Casualmente en el foro americano alguien ha pedido algo parecido a esto y va y apareces tu con la solución, la verdad es que es un gustazo ver como fluyen las cosas a veces

Lo que propones ya lo hacía al principio de empezar el desarrollo de la parte wifi de openplotter pero lo acabé sacrificando porque preferí priorizar el poder conectar mas de un pincho wifi con el resultado de que entonces había mas de un interface (wlan0, wlan1...) y me complicaba demasiado el redirigir el trafico de internet con tantas variables. Ahora bien... eso era porque estaba siguiendo manuales sin saber bien lo que estaba haciendo y tu lo has explicado perfectamente asi que voy a intentar implementarlo de nuevo.

Al tener ya el interface que haga de access point (wlan0, wlan1...) en una variable, no hay problema en modificar el codigo para que sea cual sea, se rediriga a ethernet, pero... la duda del americano era si podría redirigir el trafico de internet desde el access point wifi a otro interface wifi, entonces mis dudas aquí son...

Se puede redirigir el trafico entre el access point wifi y otro interface wifi (wlan1...)?

Se puede redirigir el trafico entre el access point wifi y mas de un interface simultáneamente y de diferente tipo (eth0, wlan1...)?

Si la respuesta a la segunda pregunta es no, tampoco seria muy grave ya que incluyendo un campo en la pestaña access point donde el usuario pudiera elegir el interface desde el que quiere compartir la conexión a internet seria suficiente.

Lo pongo al principio de la cola de las modificaciones para la proxima versión.

Gracias Gilinas!

Los siguientes cofrades agradecieron este mensaje a sailoog.com
gilinas (03-10-2015)