20b - Instalación de Open5GS

Volver ó índice

Usamos sistema operativo Ubuntu Server 22.04.2.

Instalación en sistemas x86-64

Partiendo de Ubuntu Server ya instalado.

Cambia zona horaria a España:

sudo timedatectl set-timezone Europe/Madrid

Comprueba que esté correcta:

date

Pon IP estática o bien ajusta una IP dinámica en el router para que sea siempre la misma y que tú la conozcas (anótala). A continuación renueva la dirección:

sudo dhclient -v

Actualiza listado de paquetes:

sudo apt update

Instala los programas de servidor SSH y escaneo de redes (sniffing):

sudo apt install openssh-server nmap wireshark -y

Instalación de base de datos MongoDB

sudo apt install wget gnupg -y
wget -qO - y https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt update
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb

Y por fin instalamos MongoDB:

sudo apt install -y mongodb-org

Comprueba la versión:

mongod --version

Comprueba que se está ejecutando en este momento:

sudo systemctl status mongod --no-pager

Haz que se empiece a ejecutar AHORA:

sudo systemctl start mongod

Haz que se inicie AUTOMÁTICAMENTE al arrancar el equipo:

sudo systemctl enable mongod

Comprueba que se está ejecutando ahora mismo:

sudo systemctl status mongod --no-pager	

IMPORTANTE VIRTUALIZANDO EN KVM: la CPU debe estar marcada como “host”.

Instalación de Open5GS

sudo add-apt-repository -y ppa:open5gs/latest

Actualiza los paquetes con el nuevo repositorio:

sudo apt update	 # si falla, edita /etc/apt/sources.list

Por fin, instalamos open5gs:

sudo apt install -y open5gs

Comprueba que se esté ejecutando (al instalarse ya hace start y enable):

sudo systemctl status open5gs-* --no-pager  #ver todos los servicios de Open5GS con el asterisco

Instalación de interfaz web para base de datos de SIMs

sudo apt update && sudo apt install curl -y
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs #npm
curl -fsSL https://open5gs.org/open5gs/assets/webui/install | sudo -E bash -

Comprueba que MongoDB sigue funcionando:

sudo systemctl status mongod --no-pager

Comprueba que la webui (interfaz web) se ha instalado correctamente (debería estar start y enabled:

sudo systemctl status open5gs-webui.service --no-pager

WebUI accesible desde otros equipos

Por defecto la WebUI sólo está accesible desde el navegador web de la máquina en la que está instalada Open5GS (en localhost:3000). Para que esté disponible desde cualquier equipo de la red debes editar el siguiente fichero:

sudo nano /lib/systemd/system/open5gs-webui.service

Y añadir estas líneas debajo de donde pone production (fuente):

Environment=HOSTNAME=0.0.0.0
Environment=PORT=3000

A continuación:

sudo systemctl daemon-reload
sudo systemctl restart open5gs-webui

 Configuración de red

OJO, comandos volátiles: algunas de estas órdenes se deben repetir después de cada reinicio

Ccomprueba que esté todo abierto en el firewall:

sudo iptables -L

Permite el acceso al WebUI:

sudo iptables -I INPUT -p tcp --dport 3000 -j ACCEPT

Permitir que el servidor funcione como router:

sysctl net.ipv4.ip_forward
sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1

Comprobamos:

cat /proc/sys/net/ipv4/ip_forward

Interfaz tuntap

Interfaz de túnel (la red móvil propiamente dicha):

sudo ip addr add 10.45.0.1/16 dev ogstun
sudo ip addr add 2001:230:cafe::1/48 dev ogstun
sudo ip link set ogstun up

 Reglas de NAT y firewall

sudo iptables -t nat -A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE
sudo ip6tables -t nat -A POSTROUTING -s 2001:db8:cafe::/48 ! -o ogstun -j MASQUERADE
sudo iptables -I INPUT -i ogstun -j ACCEPT
sudo iptables -L

Mirar solamente reglas NAT:

sudo iptables -t nat -L
sudo ufw status
sudo systemctl restart open5gs-amfd

Configuración de Open5GS

Edita los ficheros según si indica en la documentación de Open5GS (atención a MCC, MNC, IP de ciertos parámetros, TAC) y en la ficha 20.

MME (control plane NSA, 4G e inferiores):

sudo nano -l /etc/open5gs/mme.yaml  # fíjate en "tac: 1

Cambia:

SGW-U (user plane NSA, 4G e inferiores):

sudo nano -l /etc/open5gs/sgwu.yaml

Cambia la IP donde proceda:

AMF (control plane 5G SA):

sudo nano -l /etc/open5gs/amf.yaml

Cambia

UPF (user plane 5G SA):

sudo nano -l /etc/open5gs/upf.yaml

Cambia la IP donde proceda:

Después reinicia los servicios para aplicar los cambios:

sudo systemctl restart open5gs-mmed
sudo systemctl restart open5gs-sgwud
sudo systemctl restart open5gs-amfd
sudo systemctl restart open5gs-upfd

Diagnóstico

Comprobar core 5G (Conexiones de gNB y UE):

sudo tail -f /var/log/open5gs/amf.log # 5G SA

Comprobar core 2G-4G (conexiones de eNB y UE):

sudo tail -f /var/log/open5gs/mme.log # 4G y 5G NSA

Monitorización de puertos con tcpdump:

sudo tcpdump port 36412	# Monitorizar un puerto S1
sudo tcpdump host x.x.x.x # Monitorizar la IP que le digas (una gNB por ejemplo)

IMPORTANTE: Comprobar que todos los servicios funcionen correctamente:

sudo systemctl status open5gs-* --no-pager  #ver todos

Arrancar Wireshark del servidor Open5GS desde cualquier otra máquina de la red (requiere tener instalado X11):

ssh -fYvvv osboxes@10.0.0.57 "wireshark" &

Volver ao curso