The main objective of this project is to automate the installation process of free5GC-V3.1.1 project, through Ansible.
The content described in this repository was tested on a VM in the Digital Occean cloud environment with the following configurations:
- SO: Ubuntu 20.04 (LTS) x64
- Uname -r: 5.4.0-122-generic
- Memory: 4 GB
- Disk: 80 GB
Steps
Install python + git + ansible:
sudo apt update && apt -y install python && sudo apt -y install git && sudo apt -y install ansible
Clone this repository:
git clone https://github.com/ciromacedo/5GCore-easy-install.git
Install GOLang:
cd 5GCore-easy-install && ansible-playbook -K install-golang.yml
source ~/.bashrc
Run ifconfig
and get the name of internet network interface, like as illustrated in the figure below:
Run the following Ansible playbook (password for sudo is required):
cd 5GCore-easy-install && ansible-playbook -K free5gc-v311-install.yml -e "internet_network_interface=<< internet network interface name>>"
NRF > UDR > UDM > AUSF > NSSF > AMF > PCF > UPF (sudo -E ./bin/free5gc-upfd) > SMF > SERVER-WEB > SERVER-FRONT-END ( REACT_APP_HTTP_API_URL=http://core_ip_address:5000/api PORT=3000 yarn start )
1 - Instalar GO (Usar 5GEasyInstall)
2 - Clonar o repositório e instalar o GO
git clone https://github.com/my5G/my5G-RANTester.git
wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz
sudo tar -C /usr/local -zxvf go1.14.4.linux-amd64.tar.gz
mkdir -p ~/go/{bin,pkg,src}
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export GOROOT=/usr/local/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin:$GOROOT/bin' >> ~/.bashrc
source ~/.bashrc
3 - Instalar as dependencias
cd my5G-RANTester && go mod download
3 - Gerar os binários
cd cmd && go build app.go
4 - Editar o arquivo de configuração ** config/config.yml**
4.1 - Setar o IP para conexão com AMF:
amfif: ip: "127.0.0.1" port: 38412 name: "free5gc"
4.2 COnfigurar os parametros de acesso do UE
key: "8baf473f2f8fd09487cccbd7097c6862" opc: "8e27b6af0e692e750f32667a3b14605d" amf: "8000"
5 Após registrar o UE no Core a inicialização de um UE simples pode ser feita dentro da pasta cmd com:
./app ue
6 Se tudo estiver OK será gerada uma interface de rede com nome uetun1 e um PING pode ser realizado com:
ping google.com -I uetun1
1 - remover um aquivo q fica em /root/tem chamad gnb.sock 2 - as vezes tem q remover as interfaces de rede com esses comandos: ip link set uetun1 down ip link del uetun1
3 para verificar se o ping está realmente funcionando usar o seguinte comando: tshark - i <> --> o wireshark vai capturar os pacotes da interface ip r --> mostra as rotas e mostra tambem que qualquer pacote que chegar na máquina vai p/ a eth0 que é a default.
ip route add 8.8.8.8 via 60.60.60.0.1 dev uetun1 --> cria uma rota de modo que todo pacote que chega com destino 8.8 é encaminhado p/ a interface ETUN1 ao invés de ir p/ o ETH0.
--> deleta a rota anterior
Para que o PING com 'nomedosite.com' funcione, basta descobrir o IP do site alvo a adicionar uma rota com o seguinte comando:
ip route add <colocar-o-ip-aqui> via 60.60.0.1 dev uetun1
Para remover uma rota adicionada com o comando anterior basta executar:
ip route del <colocar-o-ip-aqui> via 60.60.0.1 dev uetun1