自己动手搭建free5Gc环境 – 作者:tammypi

前提

做5Gc相关分析,却苦于没有环境和数据,于是使用free5Gc搭建一套5G核心网环境,方便后续工作的展开。

网上资料众说纷纭,有自行用go对于free5Gc进行编译的,也有使用kubernetes进行搭建的。但是,我期望:

  • 搭建工作尽可能简单

  • 不想引入不需要的东西,例如kubernetes里的replication control,pod,service等一系列的概念

所以,用docker-compose来搭建free5Gc无疑是最好的方法。记录搭建的整个流程如下。

1. 系统环境

在Ubuntu18.04虚拟机上搭建整套环境。而free5Gc需要的系统内核为5.0.0-23-generic(官方说是因为UPF的一个issue),所以首先需要进行切换内核的工作。

1.1 更新ap-get源

首先备份原/etc/apt/sources.list文件,然后再在新的/etc/apt/sources.list文件中,将源切换为阿里源。

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

再运行apt-get update更新源。

1.2 更换内核

apt-get install linux-image-5.0.0-23-generic

apt-get install linux-headers-5.0.0-23-generic

重启虚拟机后,uname -a可以查看当前的内核已经变更为5.0.0-23:

图片[1]-自己动手搭建free5Gc环境 – 作者:tammypi-安全小百科

安装gtp5g:

git clone https://github.com/free5gc/free5gc-compose.git

cd gtp5g

make

sudo make install

图片[2]-自己动手搭建free5Gc环境 – 作者:tammypi-安全小百科

2. 安装docker及docker-compose

sudo apt-get install docker.io

sudo apt-get install docker-compose图片[3]-自己动手搭建free5Gc环境 – 作者:tammypi-安全小百科

free5GC需要更高版本的docker-compose,所以先安装pip,再使用pip安装指定的docker-compose版本

sudo apt-get install python-pip

sudo pip install docker-compose==1.26.0

3. 安装free5Gc

git clone https://github.com/free5gc/free5gc-compose.git

图片[4]-自己动手搭建free5Gc环境 – 作者:tammypi-安全小百科

cd free5gc

由于需要使用go语言相关功能,所以需要将代理切换为国内的代理。修改free5Gc/base/Dockerfile增加红线处配置:图片[5]-自己动手搭建free5Gc环境 – 作者:tammypi-安全小百科

sudo make base

sudo docker-compose build

sudo docker-compose up //直接运行

sudo docker-compose up -d //后台运行

4. 效果

可以看到,各个网元已经成功构建:

图片[6]-自己动手搭建free5Gc环境 – 作者:tammypi-安全小百科

docker容器也都成功启动:

图片[7]-自己动手搭建free5Gc环境 – 作者:tammypi-安全小百科

5. 使用UE/gNB进行连接

在我的环境中,AMF网元的IP为10.100.200.8(进入docker容器自行查看ip)。

Github上另外有一个开源项目:

https://github.com/hhorai/gnbsim图片[8]-自己动手搭建free5Gc环境 – 作者:tammypi-安全小百科

是一个开源的5G gNB/UE模拟器,可以用于验证5G核心网。

git clone https://github.com/hhorai/gnbsim&& cd gnbsim && cd example && go build

即编译完成。

在free5Gc的webui里,新建一个subscribers:(free5Gc启动后,webui容器会将自己的5000端口映射到宿主机的5000端口上,所以使用http://宿主机ip:5000即可以访问webui界面)。其默认的用户名和密码为:admin/free5gc。图片[9]-自己动手搭建free5Gc环境 – 作者:tammypi-安全小百科

修改example.json如下内容:

imeiisv:208930000000003(与新建的那个subscriber的UE ID保持一致)

msin:0000000003(与UEID后10位保持一致)

图片[10]-自己动手搭建free5Gc环境 – 作者:tammypi-安全小百科

GTPuAddr:因为gnbsim就是运行在宿主机上,填写ubuntu 的IP即可

GTPuIFname:填写ubuntu的网卡即可

UE.url(启动一个web服务器,将UE.url指向这个Web服务器的url)

执行命令:sudo ./example -ip 10.100.200.8 即可以接入5G核心网。

整个gnbSim模拟了生成一个gNB和UE,并且使用UE打开了一个web页面的过程(即UE.url的值指向的web页面):

图片[11]-自己动手搭建free5Gc环境 – 作者:tammypi-安全小百科

因为运行example后,会新建gtp-gnb虚拟网卡。如果再次测试,会提示设备忙。所以,如果需要再次测试,可以用命令:

sudo ip link delete gtp-gnb 删除之后,再进行测试。

来源:freebuf.com 2021-01-07 18:13:39 by: tammypi

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论