Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas

lunes, 8 de julio de 2024

Utilizar Raspberry pi como extensor de internet - impresora con ethernet, ahora disponible por Wifi

 Casos de uso:

- en mi caso, tengo una impresora que tiene cable ethernet, pero no wifi, y donde la tengo instalada no tengo cables de red, ni me apetece dejar un cable por el suelo, o tener que montar un cable de red por todas las paredes. 
- un portátil al que se le haya roto la tarjeta wifi o las antenas
- un equipo fijo alejado de router o hub

 ¿Qué necesitas?

Una raspberry Pi b+ de las primeras que no estés utilizando para nada
un dongle de wifi por usb (la 1 y la 2 no lo traían incorporado, la 3 y posteriores lo incorporan de forma nativa) 


Pasos:

* Utilizamos el pi imager para instalar Raspbian lite (sin entorno gráfico). La última versión en 2024 era bookworm (basado en debian 12) 
se puede saber lanzando el comando "cat /etc/os-release"

* en las opciones de raspbian, le indicamos cual es la red wifi a la que vamos a conectar, y un usuario para acceder por SSH (así no tenemos que toquetear desde un teclado pequeño y conectarle una pantalla para modificar cosas)
Recomiendo no usar la combinación pi + raspberry, porque no le gustan al ser las predeterminadas.

* una vez que arranca, podemos probar a conectar en remoto desde una ventana msdos conectada a la misma red que la pi



Aquí estoy conectando al nombre que le he dado a mi pi, (piwifi) con el usuario pi

Me pedirá la contraseña que le he dado y ya estoy dentro. Aunque es posible que te diga que por seguridad tienes que añadir la llave SHA en el fichero known_hosts dentro de C:\Users\<tu usuario>\.ssh




* Actualizar raspbian con los comandos habituales

sudo apt-get update
sudo apt-get upgrade

Puede tardar un rato, porque verifica qué paquetes tiene que actualizar y los actualiza desde el repositorio de internet de Raspbian. 

* Instalar programas o servicios necesarios 
sudo apt-get install dnsmasq
sudo apt-get install iptables
sudo apt-get install avahi-daemon  (este en mi caso ya estaba)
sudo apt-get install parprouted
sudo apt-get install dhcp-helper


*Verificar que el fichero de configuración de wifi está bien
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf


Importante el detalle de country y el nombre de tu red + la password en psk

Le damos a Ctrl + o para guardar, enter, y Ctrl + X para salir


Vamos a usar un fichero o script sacado de https://github.com/arpitjindal97/raspbian-recipes/blob/master/wifi-to-eth-bridge.sh
"curl -O https://raw.githubusercontent.com/arpitjindal97/raspbian-recipes/refs/heads/master/wifi-to-eth-bridge.sh" 

Lo que hace es pasar todo entre la interfaz wlan y la eth0 

Lo guardamos en /home/pi/wifi-to-eth-bridge.sh

Y lo hacemos ejecutable con una modificación de permisos
sudo chmod 744 wifi-to-eth-bridge.sh


Antes estaba en blanco, ahora aparece de color verde. 


Ahora viene lo más importante, hacer que se lance cada vez que reiniciamos. 
Para ello modificamos el fichero rc.local que está en /etc
sudo nano /etc/rc.local

Y añadimos la línea "bash /home/pi/wifi-to-eth-route.sh &" antes de exit 0




Ahora probamos a reiniciar para ver si funciona... (sudo reboot) 

Ejemplo de ifconfig antes:


        tenemos ether sin nada, wlan conectado,  y lo = loopback o su servidor propio local en 127.0.0.1


ifconfig después: 

igual, no funciona, porque el truco de editar rc.local no parece funcionar en la edición bookworm de raspian.

Tenemos que complicarnos un poco la vida para garantizar que el script se activa en cada reinicio. Si lo lanzamos con sudo bash script.sh funciona, pero queremos que lo haga de forma autónoma y automática. 

Ejemplo de que sí funciona si lo lanzamos a mano cada vez.


Vamos a intentar el método de autoinicio de systemd (que lo lanzará como root)

sudo nano /etc/systemd/system/bridge.service

Dentro ponemos:

[Unit]
Description=Servicio para vincular ethernet y wifi
Wants=network-online.target
After=network.target network-online.target

[Service]
Type=exec
Restart=on-failure
RestartSec=60
User=pi
ExecStart=/home/pi/wifi-to-eth-route.sh
Environment=PATH=/home/pi/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

[Install]
WantedBy=multi-user.target

Le modificamos permisos para poder ser lanzado por todos
sudo chmod 664 /etc/systemd/system/bridge.service

Luego toca usar estos comandos:
sudo systemctl daemon-reload
sudo systemctl enable bridge  (para que se active al iniciar) 
sudo systemctl start bridge  (para probar que no da fallos) 

El primero recarga la tabla de servicios, luego se habilita, y por último se lanza.

Si quieres ver si se está ejecutando bien, usa "systemctl status bridge.service" o "journalctl -xeu bridge.service"

Ahora reinicio de nuevo para ver si se activa sólo. NO ES EL CASO.
Voy a deshacer lo que modifiqué antes de rc.local para dejarlo como estaba (por dejarlo todo como estaba). 



RESULTADO FINAL: 

No funciona el tema de arranque automático en ninguno de sus métodos probados. 
Haga lo que haga, aunque el script .sh funciona por sí solo, no consigo que funcione desde systemd


Así que mientras investigo en profundidad, me toca arrancar la pi, conectar desde ssh, y lanzar el comando con sudo bash /home/pi/wifi-to-eth-bridge.sh cada vez que se reinicia la pi

No es una solución idónea pero hemos aprendido a utilizar la pi, también el systemd, sólo que debe existir una incompatibilidad entre systemd y la version bookworm que le hacen que ningún método de arranque automático de linux funcione. 
 

martes, 5 de junio de 2012

Ubuntu 10 y su nuevo interfaz Unity

Hola de nuevo. 

Hace ya tiempo que utilizo Linux para varias actividades, basicamente: 

En este caso voy a hablaros de Ubunto 10.04 y 10.11, que son los que más he usado ultimamente, para montar servidores virtualizados de páginas web.


Desgraciadamente, en seguida noté el cambio de la interfaz nueva...y no me gustó. 

Ejemplo de la antigua interfaz...




Ejemplo de la nueva interfaz....







Investigando un poco el tema, encontré las soluciones que recopilo y muestro aquí...


Instalación de otro entorno gráfico


He elegido LXDE, porque funciona muy rápido, y muestras los programas en una forma muy reconocible.


Para instalarlo, ejecutamos el gestor de programas [Software center], o la utilidad Synaptic (el gestor tiene un icono que parece una bolsa con regalos dentro)

Tecleamos el nombre de "LXDE", le damos a siguiente, y como mucho nos pedirá la contraseña de administrador que tengamos configurada. 


Otra forma de instalarlos es mediante un comando desde el programa Terminal (que nos mostrará una ventana negra como las del antiguo MS-DOS, para aquellos que la recuerden, aunque el terminal es mucho anterior al MSDOS)

Con el siguiente comando, y siempre que tengamos internet... recuperaremos la interfaz del antiguo escritorio Gnome con menús tipo la versión 9.

 sudo apt-get install gnome-session-fallback

Nota: en caso de que nos pida contraseña, ponemos la de administrador que tengamos, y si fuese necesario, podemos usar antes el comando  "sudo passwd root", que nos permite crearle una password de root (superadministrador), para usar a continuación.

Con estos dos pasos, ya tenemos 2 nuevas opciones alternativas a Unity

Cambiar de entorno grafico

Y cómo cambio de uno a otro, os preguntaréis. 

Pues la forma correcta es cerrar sesión, y en icono de una rueda dentada junto al nombre, hacemos clic para que la sesion se abra con el escritorio elegido. 


Predeterminar el entorno grafico que te guste

La siguiente vez que reinicié el equipo, volvió a brirse en Unity, y tuve que cambiar de nuevo. Así que busqué cómo se configura en Linux

El archivo que guarda este dato es lightdm.conf en la carpeta /etc/lightdm

Una vez modificado, con una línea que dice...user-session=LXDE

Podemos cambiar LXDE por el nombre de la sesion que queremos:
gnome-fallback para la versión clásica sin efectos
unity-2d para la version sin efectos de unity
ubuntu  para poner la versión de Unity3d que viene de forma predeterminada  

Para poder editar este archivo, he abierto el Gestor de archivos, y tiene una opcion en herramientas, que se denomina "Abrir la carpeta actual como root". 
Se abrirá una nueva ventana, y tiene permisos de edicion, porque es como si la hubiese abierto el superusuario "root". Le damos con el boton derecho al archivo, editamos con "gedit" y guardamos los cambios

El resultado, la carpeta y ejemplo de entorno elegido...



Espero que os sirva de ayuda, cualquier comentario sera bien recibido, y los enlaces de las fuentes os llevan a grandes web sobre todo tipo de informacion, aunque en inglés.





Fuentes: