<!-- title: 笔记本上的5G核心网 -->

现网凌晨三点，没人敢重启一台AMF。可排障这门手艺，恰恰只在“敢按按钮”的环境里才练得出来——按错了会怎样？信令在哪一步断的？换组参数是什么效果？这些问题的答案，在现网永远只能靠猜，在实验床上却是几分钟能验证的事。今天这篇，讲讲怎么用三件开源软件，在一台笔记本上养出一张能注册、能建会话、能跑数据的5G SA试验网，以及怎么把它变成运维团队真正用得上的练兵场。

## 目录

- 一、为什么运维需要一张“可以随便按按钮”的网
- 二、三件开源货：选型与分工
- 三、半小时搭出一张5G SA试验网
- 四、排障实战三案：从NAS拒绝码到NAT丢失
- 五、从模拟器到真机：差的那一步
- 六、把实验床用出运维价值：三件正经事
- 七、实验床的边界：它救不了你什么
- 结语

## 一、为什么运维需要一张“可以随便按按钮”的网

干了十八年核心网，我对现网排障最大的感受是三个字：**不敢动**。

第一不敢动，是因为故障窗口短。用户投诉上来了，领导在群里催，你只有几分钟到几十分钟的处置时间，任何“试试看”的操作都可能让故障面扩大。于是排障变成了一门“读”的手艺——读日志、读告警、读话单，靠经验脑补信令怎么走，但很少有机会真正“做”一遍验证。

第二不敢动，是因为环境不可复现。用户侧一千种终端、一千种卡状态，你复现不出那一通失败的注册。根因定位八分靠推理、两分靠运气。

第三不敢动，是因为人才培养没有沙盘。新来的工程师对着几万条网元日志，最缺的不是知识，而是“完整的因果体验”：我改了这个参数，UE那一端到底会看到什么？现网永远不会给你做这个实验的机会。

这三个“不敢动”，指向同一个解法：**一张可以随便折腾的实验网**。2G那个年代，想练手得蹭实验室的真设备，机会稀缺；而今天，开源社区已经把一张完整的5G SA核心网装进了普通笔记本。这件事的技术含量不高，但运维价值被严重低估了——它把排障从“推理题”变成“可重复做的实验题”。

本文的解读主轴是 **Open5GS 官方文档（[open5gs.org/open5gs/docs](https://open5gs.org/open5gs/docs/)）** 和 **3GPP TS 24.501（5G NAS协议，Stage 3）**：文中涉及的流程、消息与错误码，属于可验证的标准与文档事实；具体的部署手法和排障案例，则来自我个人的实战复盘，属于经验观点，供参考。

## 二、三件开源货：选型与分工

搭一套能跑通端到端流程的5G SA试验网，核心思路是“核心网用一个项目，RAN用模拟器，想上真空口再加SDR”。四件主流开源货，分工如下：

| 项目 | 角色 | 语言 | 许可证 | 一句话定位 |
|---|---|---|---|---|
| Open5GS | 5GC/EPC核心网 | C | AGPL-3.0 | 模块化NF齐全，EPC与5GC一套代码覆盖，文档完善，最接近“能扛生产”的开源核心网 |
| free5GC | 5GC核心网 | Go | Apache-2.0 | 学术团队出品，跟R15/R16特性比较快，适合研究型场景 |
| UERANSIM | 模拟gNB+模拟UE | C++ | GPLv3 | 纯软件模拟RAN和终端，不依赖任何硬件，入门首选 |
| srsRAN Project | 真实gNB | C++ | AGPL-3.0 | 配USRP等SDR上真实空口，是“模拟”到“真机”的桥 |

怎么选？我的建议是**组合拳**：Open5GS 当核心网，UERANSIM 当RAN——这是最低成本的闭环，也是各项目官方文档互相打通最顺畅的组合；free5GC 适合想读代码、跟标准演进的人；srsRAN 留到第二阶段再上。

几点选型经验：其一，Open5GS 的强项在“全”——它同时覆盖EPC和5GC，这意味着你可以在实验床上研究4/5G互操作、EPS Fallback这类现网最常见的跨系统问题；其二，许可证要留意，AGPL-3.0 对商用改造有传染性约束，拿来内部练手没问题，想做商业产品发行就要请法务把关；其三，UERANSIM 只是模拟器，它不模拟无线信道，这是它的天花板，后面第五节细说。

## 三、半小时搭出一张5G SA试验网

先看整体架构，一张图说清楚信令和用户面怎么走：

```mermaid
flowchart TD
    UE["模拟UE nr-ue<br/>TUN口收发"] -->|N1 NAS| gNB["模拟gNB nr-gnb"]
    gNB -->|N2 NGAP| AMF["AMF"]
    AMF -->|N11| SMF["SMF"]
    SMF -->|N4 PFCP| UPF["UPF<br/>ogstun接口"]
    UPF -->|N3 GTP-U| NET["internet DNN"]
    AMF -->|鉴权与签约| AUTH["AUSF UDM UDR"]
    SMF -->|会话策略| AUTH
```

部署过程按官方文档（Open5GS 文档的 Quickstart 一节，UERANSIM 仓库的 README）走，不会超过半小时。把关键步骤和我踩过的坑摘出来：

**第一步：装核心网。** Ubuntu 上用官方 PPA（`ppa:open5gs/latest`）安装，各NF以独立服务形式落在系统里，配置文件集中在 `/etc/open5gs/` 下的各 `.yaml`。签约数据放 MongoDB，官方还提供一个 Node.js 写的 WebUI，默认跑在本机 9999 端口（文档给的默认账号是 admin/1423），点点鼠标就能开户——IMSI、K、OPc、APN、切片，一个页面全包。批量开户可以用 `open5gs-dbctl` 这类脚本工具。

**第二步：做用户面出口。** 建一块 TUN 接口（通常叫 `ogstun`），官方文档用 `10.45.0.0/16` 做UE地址池，再配一条 NAT 伪装规则让流量出公网。**这一步是新手翻车第一名**，第四节案例三专门讲。

**第三步：起模拟RAN。** UERANSIM 两个可执行文件：`nr-gnb` 连 AMF（默认 SCTP 38412），`nr-ue` 附着到 gNB。UE 配置文件里要写死 SIM 参数——IMSI、K、OPc，因为你没有真卡，鉴权向量是配置文件里这几个十六进制串和核心网签约数据“对暗号”算出来的（Milenge类算法）。配套的 `nr-cli` 可以随时看UE状态和信令dump，非常好用。

**第四步：验证。** UE注册成功、PDU会话建立后，在模拟UE的TUN口上 `ping` 一下外网，通了，就是一张端到端都活的5G SA网。整个过程中，AMF、SMF的日志（`/var/log/open5gs/`）就是你的第一手排障材料。

到这里你已经拥有：一个真实的5GC软件栈（NGAP、NAS、PFCP、GTP-U，全是按3GPP规范实现的真协议）、一个可控的模拟RAN、一个随开随关的实验环境。总成本：一台8G内存的笔记本，电费忽略不计。

## 四、排障实战三案：从NAS拒绝码到NAT丢失

工具搭好只是开始，真正的价值在排障。下面三个案例是我带新人时必练的“通关题”，覆盖了5G排障里最高频的三类故障。方法论先说清楚：**分段定位，从UE侧看到的错误码入手，沿N1→N2/N3逐段往下剥**——这个思路在现网和实验床上完全同构。

### 案例一：注册被拒，NAS拒绝码是第一现场

**现象**：`nr-ue` 起来后反复重试，日志里能看到 Registration reject。

**定位**：这是最典型的一段式排障。NAS层的拒绝码定义在 TS 24.501 里（继承自EPS时代 TS 24.301 的编号体系），它直接告诉你核心网在哪一步、因为什么把你拒了。最常见的三个：**#3 Illegal UE**、**#7 5GS services not allowed**、**#15 No suitable cells in tracking area**。

**根因与修复**：#3/#7 九成是签约和鉴权问题——WebUI里开户的K、OPc和UE配置文件里写的不一致，鉴权向量算不对，AUSF/UDM环节直接判非法；#15 则是“注册能走到接入层校验，但AMF认为你所在的跟踪区不适合你”，九成是 **gNB广播的TAC/PLMN和AMF配置里支持的TAC/PLMN对不上**。我带的新人最常犯的错就是：改了gNB配置文件里的TAC，忘了改AMF侧 `amf.yaml` 里的 `plmn_support` 配置。两边对齐，立通。

### 案例二：PDU会话建不起来，盯住SMF

**现象**：注册成功了，但PDU Session Establishment Reject，UE有TUN口却拿不到地址。

**定位**：注册走N1/N2，会话走N1/N2/N4三段，此时AMF已经放行，问题域收敛到SMF—UPF一侧。同样先看拒绝码：**#27（missing or unknown DNN）**说明UE请求的DNN在SMF侧没有对应配置；**#26（insufficient resources）**则常见于SMF到UPF的N4/PFCP会话没建立起来——UPF没起来、地址配错、路由不通，SMF拿不到用户面资源，只能报资源不足。

**修复经验**：#27 就去SMF配置里把DNN段补上（默认文档用 `internet`）；#26 先 `ss`/`tcpdump` 确认PFCP的8805端口通不通，再看UPF日志有没有PFCP Association成功的记录。这个案例的训练价值在于让新人理解：**注册成功≠会话能成，控制面通≠用户面通**——这是5G排障里最基本也最容易混淆的分界线。

### 案例三：注册成功、会话成功，就是ping不通

**现象**：一切都“成功”，UE的TUN口也拿到了 `10.45.x.x` 的地址，但外网ping不通。

**定位**：这是纯粹的宿主机网络问题，也是 Open5GS 新手群里的永恒话题。分段测：在UPF侧抓GTP-U（2152端口），看上行解封装后包有没有进来；包进来了、回包出不去，就是NAT那条 `MASQUERADE` 规则没配或者被宿主机重启冲掉了；再查 `ogstun` 接口和路由表。

**根因**：90%就是那条 `iptables -t nat` 伪装规则丢了。**修复**：补上规则，通了。这个案例看着最简单，训练价值却最大——它教会新人“用户面三段式检查法”：GTP-U封装段、核心网内部段、NAT出公网段，一段一段抓包，谁也别想蒙混过关。

把三案浓缩成一张速查表和一张定位决策图：

| 现象 | 第一眼看哪 | 高频根因 |
|---|---|---|
| 卡在NG Setup | AMF日志、SCTP 38412 | PLMN或TAC两边不一致 |
| 注册被拒 #3/#7 | 鉴权信令、签约数据 | K/OPc不匹配、IMSI没开户 |
| 注册被拒 #15 | gNB广播与AMF支持列表 | TAC不在AMF配置内 |
| PDU会话拒 #27 | SMF配置 | DNN缺失或不匹配 |
| PDU会话拒 #26 | PFCP关联状态 | UPF未启动、N4不通 |
| 注册成功ping不通 | ogstun、NAT规则 | MASQUERADE规则丢失 |

```mermaid
flowchart TD
    S["UE连不上"] --> Q1{"SCTP 38412通吗"}
    Q1 -->|不通| A1["查N2链路<br/>看NG Setup是否失败"]
    Q1 -->|通| Q2{"UE发注册请求了吗"}
    Q2 -->|没有| A2["查gNB与UE配置<br/>PLMN和TAC对齐"]
    Q2 -->|收到拒绝| Q3{"NAS拒绝码是多少"}
    Q3 -->|3或7| A3["查鉴权签约<br/>K与OPc是否一致"]
    Q3 -->|15| A4["查TAC与PLMN<br/>是否在AMF支持列表"]
```

顺带说一句排障的“外功”：Wireshark 对这套环境的支持相当成熟——SCTP 默认端口 38412 会自动解码 NGAP，GTP-U 走 2152，NAS 消息嵌在里面一层层展开，注册全流程每一步的信令元组清清楚楚。让新人把一次成功注册的PCAP从头到尾读一遍，胜过讲十遍注册流程PPT。

## 五、从模拟器到真机：差的那一步

模拟器跑通之后，很多人会想：能让真手机注册上来吗？能，但中间隔着三道坎，每一道都有明确的解法。

**第一道坎：鉴权材料。** 真手机里的USIM不认配置文件，你得给它一张“写了你核心网认识的K/OPc”的卡。业界通行做法是用 sysmocom 这类厂商的可编程USIM卡，配合 Osmocom 社区的 pySim 写卡工具把 IMSI、K、OPc 灌进去。5G的SUCI concealment要求卡支持相应的鉴权算法套件，买卡时确认清楚。

**第二道坎：真空口。** UERANSIM 没有无线，你得换 srsRAN Project 起一个真gNB，配一块 USRP B210 级别的SDR（5～20MHz带宽足够把注册、会话、数据全流程跑起来）。这一步之后，你就拥有了一张“只有你自己”的微型运营商。

**第三道坎：合规。** 这是必须严肃提醒的一条：空口发射要用频率，无照发射违法，也可能干扰现网。实验室要么用屏蔽箱/屏蔽室，要么走正规渠道申请试验频率。**别在现网频段上裸发射**，这条红线不因“只是玩玩”而消失。

过了这三道坎，实验床的保真度会上一个大台阶——你能看到真终端的NAS行为差异、真实的注册时延。但也要想清楚值不值：对多数运维训练场景，模拟器已经够用；真机环节更适合做互操作研究的小团队。

## 六、把实验床用出运维价值：三件正经事

实验床最怕沦为“装完就吃灰”的玩具。让它产生运维价值，我实践中总结出三件正经事：

**第一件：新人训练营。** 我给团队新人的第一周作业就是：照文档搭网、故意埋三个故障（改TAC、删DNN、清NAT规则）让他排、排完写复盘。一周下来，他对N1/N2/N3/N4的信令关系和错误码体系就有手感了——这比三个月的“跟着值班看告警”效率高得多。核心是**故障要人来埋，因果要自己验**。

**第二件：升级回归台。** Open5GS 这类项目迭代很快，每次升级前，在实验床上把“注册—建会话—传数据—去激活”这条主干道用脚本过一遍，就是最小可行的冒烟测试。这套脚本稍加改造（shell或Python驱动 `nr-cli`、检查TUN口连通性、比对结果），就能挂进CI——开源核心网的“版本验证”从此不用拿现网冒险。

**第三件：故障复现器。** 现网疑难来了，先在实验床上复现一遍。链路层断链、签约数据异常、会话建立被拒，绝大多数控制面故障都能在实验床上做出来；复现了，才能从容地做变量隔离，把“猜”变成“证”。这也是我这些年最大的体会：**排障水平的差距，本质上是“可重复实验次数”的差距**——高手不是直觉更准，而是单位时间能验证更多假设。

## 七、实验床的边界：它救不了你什么

泼一盆冷水，实验床有三条明确的边界：

**它不懂无线。** UERANSIM没有信道衰落、没有切换重选、没有真实的空口时延——凡是“无线侧特有”的故障（弱覆盖、乒乓切换、上行干扰），实验床一律无能为力。这块短板要靠真SDR或路测去补。

**它不代表规模。** 单UE跑通了，不代表一千并发不崩。Open5GS 官方从未声称默认配置可以直接扛生产话务，容量、HA、数据持久化这些生产命题，实验床只能提供“入门级的参考架构”，不能提供结论。

**它不是安全边界。** 实验床上几乎所有组件默认监听在本机或局域网，WebUI还有默认账号——**不要把它暴露到公网**，哪怕“只是玩玩”。核心网组件暴露公网的后果，任何一个干过运维的都懂。

另外提醒一句：不同项目版本之间默认值和配置项差异不小，本文提到的端口、子网、账号等细节均以官方文档当前版本为准，动手前先读一遍对应版本的文档，别拿旧教程硬套新版本。

## 结语

十八年前我学GPRS排障，靠的是蹭机房、抄笔记、在真网上踩坑；今天，一张完整的5G SA核心网可以装进任何一台笔记本，注册信令的每一步都摊开给你看。工具的民主化，把“排障”这门手艺的练习成本压到了近乎为零——剩下的差距，只在于你练不练。

现网教会我们敬畏，实验床教会我们因果。一个只待在现网的人，永远只有推理；一个常待在实验床的人，才有验证。把你不敢在现网按的那个按钮，搬到笔记本上按一遍——这就是我对每个想往深处走的通信运维同行，最实在的一条建议。

## 参考来源

1. [Open5GS 官方文档（Quickstart 与各NF配置指南）](https://open5gs.org/open5gs/docs/) — 本文部署步骤、默认端口与组网参数的主轴来源
2. [3GPP TS 24.501: Non-Access-Stratum (NAS) protocol for 5GS (Stage 3)](https://www.3gpp.org/dynareport/24501.htm) — 5G注册/PDU会话消息与拒绝码的权威定义
3. [UERANSIM: Open Source 5G UE and gNB Emulator（GitHub）](https://github.com/aligungr/UERANSIM) — 模拟RAN/UE工具的官方仓库与配置说明
4. [free5GC: Open Source 5G Core Network（GitHub）](https://github.com/free5gc/free5gc) — Go语言开源5GC项目，选型对比中的研究型选项
5. [pySim: Osmocom USIM/ISIM卡编程工具（GitHub）](https://github.com/osmocom/pysim) — 真机实验阶段写卡工具的官方仓库

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护，聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。
> 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
