5G、5G+是当前安全研究的热点。在研究过程中,不可避免的需要搭建5G仿真环境。笔者也不例外,但是最近在搭建5G环境时,却发现很多网上的所谓搭建教程都存在问题。这些搭建教程,给实际工作造成很多困扰。笔者本着负责任的态度,记录一下自己的遇坑过程,以及解决方法,在此分享给诸位。
常见的5G开源环境有free5gc、open5gc。
推荐搭建可参考
https://github.com/free5gc/free5gc
free5GC安装、运行、测试及注意事项-CSDN博客
Free5gc+UERANSIM模拟5G网络环境搭建及基本使用 - FreeBuf网络安全行业门户
问题1:free5gc的搭建环境有一个硬性条件,要求Linux内核版本为5.0.0-23-generic或5.4.0及之后的版本。但是很多、包括官网在内都推荐采用ubuntu 22.04。
避坑:ubuntu 22.04的内核有些是5.15.0-150-generic,有些是5.4.0-150-generic,导致在编译的过程中,总会报各种错误。然后很自然的想到降低内核版本,但是降低内核的过程很麻烦,稍不留意可能就是虚拟机死机。
解决方法:采用Ubuntu 18.04 ,笔者下载的内核版本是3.2.x,虽然内核不符合,但是内核版本升级比内核降低容易的多,只需要补充一下source.list,然后直接在线下载即可,不需要修改grub文件。原因很简单,Linux自动采用高版本的内核。如果不放心,建议修改grub文件,然后在开机过程中进入高级模式,方便调试。
sudo apt install 'linux-image-5.0.0-23-generic'
sudo apt install 'linux-headers-5.0.0-23-generic
问题2:部署过程中,会发现大量的依赖包需要从github上面下载,也可能会报错:Failed to connect to github.com port 443: Connection refused。
解决方法:
git config --global --unset http.proxy
git config --global url."https://ghproxy.com/https://github.com".insteadOf "https://github.com"
问题3:如果是free-compose安装,则可能出现如下错误。
避坑:chf:v3.3.0 这里有误,但是命令是没有问题的。
解决方法:修改文件,将v 3.3.0 修改为 latest。笔者已经在github官网上面提交了修改方案,不知道后面的人能否直接用。
问题4:在git clone https://hub.fastgit.org/aligungr/UERANSIM时,可能出现如下错误:
fatal: unable to access 'https://hub.fastgit.org/aligungr/UERANSIM/': gnutls_handshake() failed: Error in the pull function
避坑:这里应该是缺少gnutls-bin,有些教程让修改openssh来代替,但是系统之间存在差异性,能否成功靠运气。
解决方案:配置过程网上有很多,总结之后,大致可有如下解决方案:
apt-get install gnutls-bin
git config --global http.sslVerify false
git config --global http.postBuffer 1048576000
问题5:在编译UERANSIM过程中,虽然注意到cmake的版本,实现了100%编译完成,但是依旧可能出现各种编译错误,导致最后无法运行。
避坑:这是由于git clone https://hub.fastgit.org/aligungr/UERANSIM过程中,默认下载最新版本,最新版本可能并不成熟。
解决方案:git check切换仓库,具体命令如下:
cd ~
git clone https://github.com/aligungr/UERANSIM
cd UERANSIM
git checkout -b 3a96298
问题6:很多教程里面,都是git clone -b v0.2.0 https://github.com/PrincOwO/gtp5g.git,但是在执行过程中,老是报错。
避坑:可能是作者改了名字,也可能是大家相互抄,抄错了,导致就都错了。
解决方案:正确命令如下
git clone -b v0.2.0 https://github.com/PrinzOwO/gtp5g.git
此外,在编译过程中,也可能报错,此时建议git check,相关过程如下:
Open5gs搭建过程可参考:
https://open5gs.org/open5gs/docs/guide/
这里有快速入门和源代码编译。
问题1:搭建Open5gs的前提,需要具备mongdb环境,但是在执行sudo apt install -y mongodb-org,可能会报出unment dependencied的错误。
解决方案:这是由于环境不纯洁,导致之前的一些模块与新模块产生冲突。执行如下命令:
sudo apt-get autoremove mongodb-org-mongos mongodb-org-tools mongodb-org mongodb-org-database
问题2:采用源代码安装,在运行./build/tests/attach/attach时,会出现core dump。
解决方案:这种可能比较麻烦,建议修改虚拟机的配置,增加运行内存,直接上8G。
问题3:采用源代码安装,在运行./build/tests/attach/attach和sudo meson test -v时,很容易报出各种error,比如端口占用等。
解决方案:在编译open5gs源代码的过程中,默认开启了对应的网元,然后在mongodb中增加了订阅的信息,所以在运行test程序的时候,存在冲突,导致不成功。(这是笔者的血泪史,弄了半天,才ALL pass)
相关命令:
ps -ef |grep open5gs
然后运行 sudo pkill -9 open-* 一个一个关闭
Mongo
>> use open5gs
>> db.subscribe.find()
>> db.subscribe.drop()
>> exit
成功运行过程,附后面,表达一下成功的喜悦
yx@RAN:~/open5gs/open5gs-2.2.9$ cd build/ yx@RAN:~/open5gs/open5gs-2.2.9/build$ sudo meson test -v
ninja: Entering directory `/home/yx/open5gs/open5gs-2.2.9/build'
ninja: no work to do.
list-test : SUCCESS
pool-test : SUCCESS
strings-test : SUCCESS
time-test : SUCCESS
conv-test : SUCCESS
log-test : SUCCESS
pkbuf-test : SUCCESS
memory-test : SUCCESS
rbtree-test : SUCCESS
timer-test : SUCCESS
thread-test : SUCCESS
socket-test : SUCCESS
queue-test : SUCCESS
poll-test : SUCCESS
tlv-test : SUCCESS
fsm-test : SUCCESS
hash-test : SUCCESS
uuid-test : SUCCESS
All tests passed.
1/12 open5gs:unit / core OK 6.62 s
aes-test : SUCCESS
sha-test : SUCCESS
base64-test : SUCCESS
All tests passed.
2/12 open5gs:unit / crypt OK 0.07 s
sctp-test : SUCCESS
All tests passed.
3/12 open5gs:app / sctp OK 0.04 s
s1ap-message-test : SUCCESS
nas-message-test : SUCCESS
gtp-message-test : SUCCESS
ngap-message-test : SUCCESS
sbi-message-test : SUCCESS
security-test : SUCCESS
crash-test : SUCCESS
All tests passed.
4/12 open5gs:unit / unit OK 0.04 s
guti-test : SUCCESS
auth-test : SUCCESS
idle-test : SUCCESS
dereg-test : SUCCESS
paging-test : SUCCESS
identity-test : SUCCESS
gmm-status-test : SUCCESS
ue-context-test : SUCCESS
reset-test : SUCCESS
All tests passed.
5/12 open5gs:5gc / registration OK 18.75 s
qos-flow-test : SUCCESS
session-test : SUCCESS
All tests passed.
6/12 open5gs:5gc / vonr OK 4.39 s
nssai-test : SUCCESS
All tests passed.
7/12 open5gs:5gc / slice OK 1.90 s
s1setup-test : SUCCESS
guti-test : SUCCESS
auth-test : SUCCESS
idle-test : SUCCESS
emm-status-test : SUCCESS
ue-context-test : SUCCESS
reset-test : SUCCESS
All tests passed.
8/12 open5gs:epc / attach OK 10.39 s
bearer-test : SUCCESS
session-test : SUCCESS
rx-test : SUCCESS
video-test : SUCCESS
cx-test : SUCCESS
All tests passed.
9/12 open5gs:epc / volte OK 12.74 s
mo-idle-test : SUCCESS
mt-idle-test : SUCCESS
mo-active-test : SUCCESS
mt-active-test : SUCCESS
mo-sms-test : SUCCESS
mt-sms-test : SUCCESS
crash-test : SUCCESS
All tests passed.
10/12 open5gs:epc / csfb OK 7.20 s
epc-test : SUCCESS
All tests passed.
11/12 open5gs:app / 310014 OK 5.97 s
epc-x2-test : SUCCESS
epc-s1-test : SUCCESS
5gc-xn-test : SUCCESS
5gc-n2-test : SUCCESS
All tests passed.
12/12 open5gs:app / handover OK 12.01 s
OK: 12
FAIL: 0
SKIP: 0
TIMEOUT: 0
原文始发于微信公众号(星耀安全实验室):5G仿真环境搭建避坑指南
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论