Danielside

informática softwarelibre divagaciones música

Internet en casa con modem 4G y raspberry pi

Hacía mucho que lo tenía en mente y al fin me he podido poner y lo he conseguido. Dar de baja la fibra, que es una buena pasta por un servicio escasamente aprovechado, para montarme un tinglado con un modem 4G, una sim de cualquier operador virtual, una raspberry pi y un router tp-link.

Hay varias formas de hacer esto, en Internet hay muchos tutoriales muy buenos donde montas en la raspberry el router completo (DHCP, DNS, enrutamiento, etc.) pero hay una manera mucho más sencilla dejando que un router haga el trabajo sucio y convirtiendo a la raspi en un modem.

En el esquema que he montado:

  • La raspberry pi (2 B+la 2, versión bastante modesta con 256Mb de RAM) tiene conectado el modem 4G Huawei E3372, encargándose de la conectividad a Internet
  • A su vez la raspi se conecta por ethernet a un puerto normal del router tp-link WR841N, no al puerto WAN.
  • Los clientes (pcs, teléfonos, tablets, etc) se conectan con normalidad al router tp-link, bien por cable bien por wifi, llevando este el peso de dchp, dns, seguridad wireless, enrutaminto local, etc.
  • El router tp-link les dice a los clientes que su gateway por defecto es la raspi.
  • La raspi enruta todo ese tráfico hacia internet por el modem.

Es una fórmula fácil, de bajo mantenimiento y barata. Y con una sim de simyo he conseguido entre 16 y 20 Mb de velocidad de bajada. Vamos al lio.

La raspberry y el modem

Haciendo pruebas, para que esto sea rápido he tenido que tirar de una Raspberry 2 B+ (900 Mhz, 1G RAM y Ethernet Gigabit). Por el motivo que fuera, las descargas congestionaban demasiado la raspberry 2B (700 Mhz, 512Mb RAM, Ethernet 10/100) La raspberry pi más humilde nos debe valer, porque no va a hacer dhcp, dns ni distribuir internet por wifi, como se suele hacer en los tutoriales que hay en Internet. Necesitamos que tenga Raspbian, la última versión disponible. Ejecutaremos sudo raspi-config y hacemos que tenga toda la RAM dedicada al procesamiento y el mínimo para la GPU y además habilitaremos el acceso SSH.

Tenemos que hacer que tenga una IP fija para que no haya lios y los clientes tengan su gateway a una ip que ya no existe. Para ello editamos /etc/dhcpcd.conf y vamos hasta donde pone «Example static ip configuration» y descomentamos dos líneas:

interface eth0
static ip_address=192.168.0.119/24

Y esa será la IP de la raspi por la interfaz ethernet y por tanto la IP del gateway por defecto. Luego nos encargaremos de que nadie nos la pise. El motivo de ponerla estática y no por DHCP con un lease estático es que no queremos que esta interfaz enrute hacia internet, porque se podría poner por defecto y la raspi ya no encontraría la ruta hacia el mundo. Debe quedar tal que así:

pi@raspberrypi:~ $ sudo route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default hi.link 0.0.0.0 UG 203 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.8.0 0.0.0.0 255.255.255.0 U 203 0 0 eth1

Yo ya había tenido otro modem 3G de Huawei por USB, que realmente funcionaba como modem. Es decir que el ordenador que lo use debe encargarse de la marcación y abrir la conexión por el protocolo PPP de toda la vida, el mismo que cuando teníamos los modems de línea telefónica que hacían sonidos tan divertidos. Pero este es mucho más interesante y actúa como un micro-router. El trasto se encarga de habilitar la conexión de forma muy rápida, como si se tratara de un smartphone. Lo único que se hace la primera vez es configurarle el PIN de la SIM. A partir de ahí, concede IPs por DHCP (ethernet over usb) y tiene hasta una página web de administración en 192.168.8.1.

En Debian funciona perfecto, no hace falta instalar drivers adicionales. Lo único que tenemos que hacer es instalar el paquete usb-modeswitch. Normalmente Linux detecta estos dispositivos como de almacenamiento masivo porque llevan ranura SD. Este programa lo que hace es ponerlo automáticamente en modo modem. En Debian fue automático (al reiniciar) pero en Ubuntu fue necesario indagar un poco más y hacerlo a mano (chúpate esa ubuntu).

Si vemos que nos da IP el modem (en Raspbian ha creado una interfaz eth1) esto lo dejamos listo y continuamos con…

El router

No tiene por qué ser tp-link ni tiene por qué ser este modelo. Pero es muy interesante porque todavía se vende, es muy barato nuevo (20 euros), los hay a puñados de segunda mano y ¡admite librecmc!

LibreCMC es una distribución GNU/Linux para sistemas embebidos que fue añadida a la lista de la FSF de sistemas operativos completamente libres. Se fusionó con la iniciativa LibreWRT que a su vez derivaba del más conocido OpenWRT.

Cualquier router que tengamos con OpenWRT o, mejor, LibreCMC nos debería valer. Yo solo he probado con LibreCMC. Lo único que necesitamos es poder configurar las opciones del servidor DHCP.

Normalmente los routers vienen configurados para que ellos mismos sean el gateway y el servidor DHCP. En este caso lo que queremos es que todos los clientes que se conecten por DHCP sepan que su gateway no es el tp-link, sino la raspi.

Si recuerdas, le pusimos una IP fija a la raspi. Hay que asegurarse de que nadie la pise, dándole un lease estático (Network > DHCP and DNS y hacia abajo hasta Static Leases)

Ahora configuraremos a nuestro gusto el router, que no es el objetivo de este artículo. La seguridad wireless, DHCP, servidores DNS etc. El paso importante que nos queda aquí es configurar las opciones de DHCP. Para ello tenemos que ir a Network > Interfaces y pulsar en Edit sobre la interfaz LAN. Un router de estos suele ser una interfaz para la red local unida a un switch de cuatro puertos y una interfaz WAN. En este caso editamos las opciones de la interfaz LAN. Abajo del todo vemos DHCP Options.

Todo esto es bastante primitivo porque las opciones son números. La opción 6 hace que a los clientes se les ofrezcan sevidores DNS distintos del que se les da por defecto (que es el mimo router). Estos los he cogido de Open NIC.

Lo más importante para lo que nos ocupa es la opción 3, donde configuramos la IP de la raspi. De esta manera, cada cliente que se conecte por DHCP pondrá su gateway por defecto como la raspberry.

Cerrando

Debemos activar el forward de paquetes en el kernel, para que Linux sepa que tiene que intercambiar paquetes entre sus interfaces de red. Esto se hace editando /etc/sysctl.conf y descomentando la línea net.ipv4.ip_forward=1. Este cambio es a prueba de reinicios, pero para que funcione inmediatamente se puede hacer sudo sysctl -p.

Ya solo nos queda una regla iptables que termine de habilitar el enrutado entre las interfaces, que crearemos con sudo iptables -t nat -A POSTROUTING -j MASQUERADE. En cuanto la tengamos, para que aguante reinicios hay que instalar el paquete iptables-persistent. Durante la instalación nos preguntará si queremos guardar las reglas que tenemos en este momento, a lo que contestaremos afirmativamente.

Con esta configuración, en cualquier momento tecleando http://192.168.8.1 en el navegador podremos acceder al menú de administración del modem Huawei. Así podremos menear el invento hasta que tenga la mejor cobertura:

Ya solo te queda conectarte al tp-link por cable o wifi, configurar automáticamente la red del equipo con DHCP ¡y a navegar!

Si quieres ahorrarte el pastón de una conexión de fibra y tienes suficiente con una limitación de descarga al mes (en función de la tarifa que contrates) y además ser independiente de estas compañías, es una buena fórmula. Si cuentas con buena cobertura 4G en tu zona, se puede hacer de todo. El streaming va de lujo. Yo por ejemplo he terminado pagando 17€ por 20G/mes en lugar de 52€ por la fibra. Y si quiero puedo cambiar de tarifa inmediatamente. Además, cambiar de compañía es lo más fácil del mundo: pillarte una SIM y cambiarla en el modem. Y si te vas de vacaciones, simplemente te llevas el modem contigo. Aunque si quieres disfrutar de tus vacaciones, olvídate de Internet 😉

Y ahí va el speedtest para la configuración con la raspi 2 B+. Con la anterior, el test de subida siempre fallaba y la descarga daba 16Mb. Y ahora…


Archivado en categoría(s) GNU/Linux, Internet, Raspberry Pi, Software Libre

Enlace permanente


  • tomas dice:

    Muy bueno! A ver si le doy vida a esa raspberry que tengo por ahí cogiendo polvo.

  • Ruben dice:

    Lo veo muy complicado… Se te ha ocurrido activar en punto de acceso en tu smartphone, o comparte un router 4G de esos de 25 €?

    1. Danielside dice:

      Más complicado pero más divertido y barato.
      Ese en concreto no sirve de mucho, ya que si te fijas en la letra pequeña la conectividad es 3G/3.75G. No vas a llegar a tanta velocidad como te permita un modem real 4G. Además, como tenía que compartir la conexión entre varios PCs, dudo que ese cacharrito hubiera sido capaz de manejar tanto tráfico en la red. Me hubiera ido muy lento por los motivos indicados.
      Contemplé ir a uno superior como este https://www.tp-link.com/es/home-networking/3g-4g-router/tl-mr6400/. Ese sí que va ofrecerte todo lo que ofrece un switch/router de cualquier compañía. Cuando lo miré subía de 100 euros y aparte tenía que comprar también el modem, así que opté por aprovechar lo que tenía. Pero si se fastidiara la infraestructura y no quisiera complicarme, iría seguro a por el mr6400.

  • Hernan dice:

    es exactamente lo que estaba necesitando. tengo una casa en el campo donde casi no hay senal de celular. con el modem 4g y antenas externas consigo 4g , pero el modem no soporta bien mas de 2 dispositivos conectados por wifi (cuando se quiere ver tv por streaming ni 1)y no queria usar un repetidor ya que va a perder aun mas velocidad. y tampoco queria comprar un router wifi 4g , porque tengo varios en desuso. voy a probar esto que propones. queria consultarte si es necesario que el router tenga LibreCmC o con el firmware original de tplink funciona tambien . voy a usar un tplink tl-wr941nd. saludos!

    1. Danielside dice:

      ¡Me alegro de que te sirva!
      Pues no te sabría decir, el punto crítico puede estar cuando configuras quien quieres que sea el servidor DHCP. Está en el post. Necesitas configurar que el servidor DHCP no sea el TpLink sino la raspberry. Si pudieras hacer eso con el firmware del dispositivo que propones, entonces no debería haber mayor problema.

      1. hernan dice:

        por suerte el firmware de tplink permitio configur como default gateway a la raspi. y funciono perfecto!!. este fin de semana lo probare en el campo estrenando antenas externas para el modem huawei. lo unico que me dio problemas fue que el modem huawei se reiniciaba constantemente conectado directo a un puerto usb de la raspi. se resolvio conectando un hub usb con alimentacion externa. saludos!!

        1. Danielside dice:

          ¡Me alegro! Si quieres deja por aquí marcas y modelos utilizados para tu proyecto (de la raspi, del 4g) por si a alguien le puede servir.
          El tema de la alimentación es normal en raspis, incluso hasta la 2. Pero como bien dices se soluciona con alimentación externa.

  • Harry Solo dice:

    Yo ando bsucando este tutorial, pero para tener internet free(gratis con las operadoras en modo prepago), hay gente por redes sociales que los ofrecen y esta un poco carito, pero con unico pago. Si sabes o saben algo, pasenme el dato.

  • Nicho dice:

    Saludos, muy bueno, justo estaba leyendo info sobre unas simbox pero me desencante al ver que solo eran para llamadas, no sabes si se puede hacer con mas de 1 modem el mismo proyecto? tengo sim diferentes y cada operadora ofrece planes diferentes, en telefonos de 2sim tengo que estar cambiando de una a otra tarjeta ya que una sola tiene por decir para fb otras para ws, otra da mas megas, etc y tener 2 o mas telefonos de 2sim en modo hotspot es un lio

    1. Danielside dice:

      Pues sería un poco más complicado, lo primero es que necesitarías dos routers USB, uno para cada SIM. Pero una vez configurados los modems, tendrías que decidir cual usar para compartir la conexión en cada momento. Si quisieras usar los dos al mismo tiempo, creo que también se podría pero es bastante más complicado y depende de lo que quieras hacer: los dos anchos de banda sumados, uno para cierto tráfico (redes sociales por ejemplo) y otro para otro tipo de tráfico, etc. Tendrías que decidir cual es tu estrategia.

  • john jairo dice:

    amigo, tengo un servidor pequeño que necesita internet 24/7 la unica opcion que tengo es utilizar un modem usb 3g o 4g, actualmente lo utilizo con un modem movistar 3g pero este a veces se desconecta y toca ir manualmente a reiniciarlo.
    con las raspberry tendria posibilidad de conexion automatica? aun si se desconecta.

  • Danielside dice:

    Sí, es posible. Se podría hacer con SystemD posiblemente, mírate esta otra entrada /2020/05/09/router-3g-con-raspberry-pi-y-pi-hole/
    Otra alternativa sería meter un script en cron que de alguna manera detecte si hay conexión y si no lo hay, levante de nuevo la red.


  • Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.