Si te preguntas porqué establecer una IP fija te diría que, al igual que todos tenemos un DNI que nos distingue e identifica unívocamente, una IP fija nos garantiza identificar un equipo en la red.
Algo básico en los elementos de infraestructura de mi red es que cada elemento tenga su «propio DNI», de modo que pueda saber si está o no en funcionamiento o poder accederlo rápidamente.
Como elemento básico de infraestructura que es la Raspberry Pi en casa, lo primero que hice con ella (después de activarle el acceso por SSH), fue establecer una IP fija.
Pasos previos
Voy a partir del supuesto de que es tu router el que otorga las IP a tus dispositivos a través del servidor DHCP que incorpora, y que es también tu router el que hace de servidor de DNS.
A la hora de establecer una IP fija es importante conocer y decidir lo siguiente:
- ¿Cuál es la IP del router? Es lo que se conoce como puerta de enlace o gateway.
- ¿Cuál es la máscara de red usada por el router?
- ¿Cuál es el servidor de DNS?
- ¿Qué IP quieres darle a la Raspberry Pi?. Dicha dirección debe estar dentro de las direcciones que tu red está usando, y eso depende de la puerta de enlace y de la máscara de red.
La pasarela (en inglés gateway ) o puerta de enlace es el dispositivo que actúa de interfaz de conexión entre aparatos o dispositivos, y también posibilita compartir recursos entre dos o más ordenadores.
Wikipedia
La máscara de red es una combinación de bits que sirve para delimitar el ámbito de una red de ordenadores. Su función es indicar a los dispositivos qué parte de la dirección IP es el número de la red, incluyendo la subred, y qué parte es la correspondiente al host.
Wikipedia
Dicho esto, tecleemos lo siguiente en el terminal y observemos en la imagen siguiente los valores de las columnas «gateway» (192.168.0.1) y «genmask» (255.255.255.0):
netstat -rn
Pues la IP que decidas darle a la Raspberry Pi debe de ser de la forma 192.168.0.X, donde la X debe tener un valor comprendido entre 2 y 255 (no puede valer 0, porque la IP sería una IP «especial» reservada para la propia red, ni puede valer 1, porque le estarías dando la IP del router).
- Debe tener un valor comprendido entre 0 y 255.
- No puede valer 0, porque la IP que conformarías es una IP «especial» y está reservada para la propia red.
- No puede valer 1, porque entonces le estarías dando la IP del router.
Para saber quién es el servidor de DNS que está usando tu Raspberry Pi, teclea lo siguiente y obtendrás algo como «nameserver 192.168.0.1»:
cat /etc/resolv.conf | grep nameserver
¿Cómo establecer una IP fija?
Te diría que hay 2 métodos, pero con uno de ellos, si bien la Raspberry obtuvo la IP fija y funcionaba perfectamente, algo hizo que me decantase por el segundo de los métodos.
Método 1: archivo «interfaces»
Mi primera idea fue alterar el archivo /etc/network/interfaces
Todo fue bien, pero me llevé una sorpresa al ver que, si bien no suponía ningún problema para el correcto funcionamiento de la Raspberry Pi, el servicio dhcpdcd (es la parte cliente que se conecta al servidor DHCP para obtener dinámicamente una IP) estaba generando errores.
Ahí decidí optar por el método 2, por lo que no daré instrucciones sobre cómo implementar este método 1.
Método 2: archivo «dhcpcd»
Vamos a teclear el siguiente comando en la terminal, suponiendo que partimos del archivo original (virgen) con el que se ha creado la instalación de Raspbian el sistema operativo de la Raspberry Pi:
sudo nano /etc/dhcpcd.conf
Al final de este archivo, se añaden:
- La IP que has decidido darle (palabra clave ip_address)
- La puerta de enlace de tu router (palabra clave routers)
- La IP del equipo que va a resolver las DNS (palabra clave domain_name_servers).
En mi caso las líneas a añadir son (pata dar IP fija tanto para la ethernet como para la WiFi):
interface eth0 static ip_address=192.168.0.3/24 static routers=192.168.0.1 static domain_name_servers=192.168.0.1 interface wlan0 static ip_address=192.168.0.4/24 static routers=192.169.0.1 static domain_name_servers=192.168.0.1
Para que los cambios tengan efecto teclea:
sudo reboot
Puedes comprobar la IP de eth0 y de wlan0 asignadas a la Raspberry Pi como hicimos antes, tecleando por separado estos comando:
ifconfig eth0 ifconfig wlan0