En este tutorial quiero compartir los pasos que he realizado para conseguir un escenario con un router con OpenWrt 25.05 o con libreCMC 6.1 (basado también en OpenWrt 25.05) como router principal de O2 completamente funcional, incluyendo el servicio de VoIP. El objetivo es completar y actualizar el tutorial realizado por el compañero aeri en este mismo foro el que se encuentra algo desfasado por ser para OpenWrt 19.07 y para una antigua versión de bird, siendo el actual bird2. Este tutorial podría verse como uno derivado del mismo por ser exclusivamente para O2, el cuál carece de IPTV.
Para aquellos que no sepáis qué es libreCMC, libreCMC es una versión derivada de OpenWrt, pero con el principal objetivo de garantizar que todo el software incluido sea 100% libre, cumpliendo estrictamente con las pautas de la Free Software Foundation (FSF), concretamente las pautas para distribuciones de sistemas libres (GNU FSDG), siendo una de las pocas distribuciones recomendadas por GNU que se encuentra en la lista de distribuciones libres de GNU/Linux, específicamente en la lista de distribuciones de GNU/Linux ligeras.
libreCMC elimina cualquier componente de software privativo o no libre, lo que reduce su compatibilidad con ciertos dispositivos, ya que algunos dependen de controladores privativos. Si un dispositivo es compatible con libreCMC, también lo será con OpenWrt, pero no siempre ocurre lo contrario. La mayoría de los dispositivos que funcionan con OpenWrt no son compatibles con libreCMC, ya que suelen requerir blobs o software privativo para su correcto funcionamiento.
Es probable que en algunos apartados haya cometido errores o sea posible aplicar una configuración óptima respetando la operativa de los servicios, por lo que me encantaría actualizar el tutorial con todos aquellos aspectos que consideréis relevantes.
El tutorial lo he realizado con NanoPi R4S que es compatible tanto con OpenWrt como con libreCMC.
En el tutorial doy por hecho que tienes un router con OpenWrt o con libreCMC, con LuCI instalado y que además puedes instalar paquetes.
- 1 Configuración de dispositivos
- 2 Configuración de interfaces
- 3 Configuración general de Internet y VoIP
- 3.1 Internet
- 3.1.1 Firewall
- 3.2 VoIP
- 3.2.1 Firewall
- 3.2.2 Bird2
- 3.2.2.1 Instalación
- 3.2.2.2 Configuración
- 3.2.3 ATA/Softphone
- 3.3 Resultados
- 3.1 Internet
- 4 Resultados finales
Configuración de dispositivos
Iniciamos LuCI.
Deberemos ir al menú Network → Interfaces.
Y nos encontramos una pantalla como esta (dependiendo del router te pueden aparecer más o menos interfaces):
Ahora nos dirigimos a la pestaña Devices.
En la que veremos una pantalla como esta.
Pulsamos el botón inferior Add device configuration….
Se abrirá una ventana emergente.
Configuración de dispositivos de Internet y VoIP
Internet
Elegimos VLAN (802.1q), a continuación deberemos seleccionar la interfaz de red correspondiente al puerto WAN (en este caso se llama “eth0”), finalmente poner en VLAN ID un 6 y pulsar en Save para configurar el servicio de Internet.
VoIP
Elegimos VLAN (802.1q), a continuación deberemos seleccionar la interfaz de red correspondiente al puerto WAN (en este caso se llama “eth0”), finalmente poner en VLAN ID un 3 y pulsar en Save para configurar el servicio de VoIP.
Resultados
Nos tendría que haber quedado como la pantalla siguiente.
Nos quedaría pulsar en Save & Apply.
Configuración de interfaces
Una vez configurados los dispositivos hay que configurar las interfaces de Internet y de Voz.
Desde donde nos encontrábamos, debemos volver a la pestaña Interfaces.
Donde nos encontraremos de nuevo con la siguiente pantalla.
Configuración de interfaces de Internet y VoIP
Internet
Pulsamos Edit en la interfaz WAN.
Nos encontramos una pantalla como la siguiente.
Elegiremos PPPoE en Protocol y pulsaremos en Switch protocol.
Tendremos entonces la siguiente pantalla.
Elegiremos el dispositivo cuya VLAN ID sea un 6 (en este caso se llama “eth0.6”) en Device, pondremos adslppp@telefonicanetpa en PAP/CHAP username, y por último, pondremos adslppp en PAP/CHAP password. Finalmente pulsaremos en Save.
VoIP
Pulsamos Add new interface….
Tendremos entonces la siguiente pantalla.
Elegiremos voip
en Name, DHCP client en Protocol, y por último, el dispositivo cuya VLAN ID sea un 3 (en este caso se llama “eth0.3”) lo pondremos en Device. Pulsaremos en Create interface.
Tendremos entonces la siguiente pantalla.
Finalmente pulsamos en Save.
Resultados
Nos tendría que haber quedado como la pantalla siguiente.
Nos quedaría pulsar en Save & Apply.
Configuración general de Internet y VoIP
A partir de este punto toda la configuración la realizaremos mediante línea de comandos a través de SSH. Cuando haya que editar ficheros recomiendo utilizar el editor GNU nano que es intuitivo y fácil de utilizar, pero generalmente no viene instalado y hay que instalarlo bien por LuCI o mediante línea de comandos:
opkg update
opkg install nano
Internet
Firewall
Abrimos el fichero /etc/config/firewall
y verificamos que las zonas y reglas wan
y lan
están correctamente configuradas:
config zone
option name lan
list network 'lan'
option input ACCEPT
option output ACCEPT
option forward ACCEPT
config zone
option name wan
list network 'wan'
list network 'wan6'
option input REJECT
option output ACCEPT
option forward REJECT
option masq 1
option mtu_fix 1
config forwarding
option src lan
option dest wan
VoIP
Firewall
Abrimos el fichero /etc/config/firewall
y agregamos lo siguiente:
config zone
option name voip
list network voip
option input ACCEPT
option output ACCEPT
option forward REJECT
option masq 1
option mtu_fix 1
config forwarding
option src lan
option dest voip
Bird2
Ahora procedemos a instalar el paquete bird2 que nos permite importar rutas por medio del protocolo RIP:
Instalación
OpenWrt
opkg update
opkg install bird2
libreCMC
En los repositorios de libreCMC aún no se encuentra bird2, por lo que es necesario descargarlo desde los repositorios de OpenWrt. El paquete en concreto dependerá del hardware que tengamos: el paquete que he elegido agregar como ejemplo es debido a que la salida de uname -m
es aarch64
.
wget https://downloads.openwrt.org/releases/packages-23.05/aarch64_generic/routing/bird2_2.15.1-1_aarch64_generic.ipk
opkg install bird2_2.15.1-1_aarch64_generic.ipk
Configuración
Borramos el fichero de configuración que genera la instalación.
rm /etc/bird.conf
Y añadimos las siguientes entradas mediante el comando nano /etc/bird.conf
:
log syslog all;
protocol kernel {
persist;
scan time 20;
ipv4 {
import all;
export all;
};
}
protocol device {
scan time 10;
}
protocol static {
ipv4 {
export none;
};
}
protocol rip voip {
ipv4 {
import all;
export filter {
if net ~ 10.0.0.0/8 then accept;
else reject;
};
};
interface "eth0.3";
}
Deberemos sustituir interfaz por el dispositivo cuya VLAN ID sea un 3 (en este caso se llama “eth0.3”).
ATA/Softphone
Con esta configuración sería posible utilizar un ATA para dar servicio a teléfonos analógicos o utilizar un smartphone o una aplicación de escritorio para enviar y recibir llamadas.
Resultados
En el fichero /etc/config/firewall
tendríamos que tener:
config zone
option name lan
list network 'lan'
option input ACCEPT
option output ACCEPT
option forward ACCEPT
config zone
option name wan
list network 'wan'
list network 'wan6'
option input REJECT
option output ACCEPT
option forward REJECT
option masq 1
option mtu_fix 1
config forwarding
option src lan
option dest wan
config zone
option name voip
list network voip
option input ACCEPT
option output ACCEPT
option forward REJECT
option masq 1
option mtu_fix 1
config forwarding
option src lan
option dest voip
En el fichero /etc/bird.conf
tendríamos que tener:
log syslog all;
protocol kernel {
persist;
scan time 20;
ipv4 {
import all;
export all;
};
}
protocol device {
scan time 10;
}
protocol static {
ipv4 {
export none;
};
}
protocol rip voip {
ipv4 {
import all;
export filter {
if net ~ 10.0.0.0/8 then accept;
else reject;
};
};
interface "eth0.3";
}
Resultados finales
Llegados a este punto tendríamos que tener la configuración de Internet y de VoIP completa y funcional.