4. SONiC 命令行体系与 show 命令排错入门
任务说明
本案例目标是在SONiC交换机上完成管理接口(通常为eth0)的IP地址、子网掩码和默认网关配置,并验证管理网络连通性。SONiC将管理接口配置持久化于/etc/sonic/config_db.json中,运行时可通过config命令动态修改。本案例同时覆盖两种方式,并给出验证路径。
配置前检查
首先确认当前管理接口名称与已有配置。SONiC默认管理接口为eth0,但部分平台可能使用mgmt0。执行以下命令查看:
ip addr show eth0
cat /etc/sonic/config_db.json | python3 -m json.tool | grep -A 15 "MGMT_INTERFACE"
预期输出中应能看到当前接口状态。若接口不存在,请先确认平台实际管理接口名称,后续命令需相应替换。
方法一:命令行动态配置(立即生效)
使用config interface ip add命令配置管理IP与掩码,使用config ip route add添加默认网关。本案例以管理IP 192.168.1.100/24、网关192.168.1.1为例:
sudo config interface ip add eth0 192.168.1.100/24
sudo config ip route add default 192.168.1.1
配置后立即验证接口地址与路由表:
ip addr show eth0
ip route show
预期输出中eth0应绑定192.168.1.100/24,路由表应包含default via 192.168.1.1 dev eth0。
方法二:修改config_db.json持久化配置
命令行配置在重启后会丢失,如需永久生效需写入config_db.json。先查看当前MGMT_INTERFACE段结构:
cat /etc/sonic/config_db.json | python3 -c "import sys,json; d=json.load(sys.stdin); print(json.dumps(d.get('MGMT_INTERFACE',{}), indent=2))"
若尚无该段,则需新增。使用以下Python脚本安全更新配置(以eth0为例):
sudo python3 << 'EOF'
import json, ipaddress
# 定义管理接口配置
mgmt_if = "eth0"
mgmt_ip = "192.168.1.100/24"
gw = "192.168.1.1"
# 读取现有配置
with open("/etc/sonic/config_db.json", "r") as f:
config = json.load(f)
# 初始化 MGMT_INTERFACE 段
if "MGMT_INTERFACE" not in config:
config["MGMT_INTERFACE"] = {}
# 构造 key: (接口, IP前缀) value: {"gw": 网关}
key = (mgmt_if, mgmt_ip)
config["MGMT_INTERFACE"][key] = {"gw": gw}
# 写回文件(保留原格式)
with open("/etc/sonic/config_db.json", "w") as f:
json.dump(config, f, indent=4)
f.write("\n")
print("config_db.json 已更新")
EOF
注意:config_db.json中MGMT_INTERFACE的键为["eth0","192.168.1.100/24"]的JSON数组形式,上述脚本使用元组作为键,json.dump会自动转换为数组。修改后需重启sonic-mgmt-framework服务或执行config load -y /etc/sonic/config_db.json使配置生效:
sudo config load -y /etc/sonic/config_db.json
验证连通性
配置生效后,从管理网络内另一台主机(如192.168.1.50)执行:
ping -c 3 192.168.1.100
同时在SONiC交换机上测试到网关的连通性:
ping -c 3 192.168.1.1
若需验证互联网或远端管理网络连通,可进一步:
ping -c 3 8.8.8.8 # 需网关允许转发
判定标准
ip addr show eth0显示192.168.1.100/24且状态为UP;ip route show包含default via 192.168.1.1 dev eth0;- 从管理主机能ping通交换机管理IP;
- 交换机能ping通网关IP;
- 重启后配置仍然存在(验证持久化生效)。
故障排查提示
若配置后ping不通网关,按以下顺序检查:
ip addr show eth0确认IP已正确绑定且接口为UP状态;ip route show确认默认路由存在且dev指向eth0;- 检查网关设备是否配置了指向交换机管理IP的回程路由;
- 若使用
config load -y后配置未生效,检查config_db.json中MGMT_INTERFACE键格式是否为["eth0","192.168.1.100/24"],且无重复键冲突。