
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Exa-BGP Docker镜像用于构建网络路由实验环境,主要功能是学习和测试基于互联网路由表的策略。该环境包含多个cEOS网络设备、运行Ubuntu 24.04的Linux Docker容器(ExaBGP节点,命名为iexcng),以及二层交换机组件。通过eBGP和iBGP邻居关系配置,ExaBGP节点可向cEOS设备宣告完整互联网路由表,适用于模拟真实网络路由场景。
需提前部署容器化环境(如Docker、containerlab),并通过拓扑文件(如exabgp.yml)定义网络结构。环境包含以下组件:
ExaBGP默认配置文件(如internet-multi-bgp.cfg)包含路由宣告进程、邻居模板及具体邻居配置,示例如下:
# 需根据实验设计修改此文件 process route-announce-lum { run python3 /fullbgptable-lum.py; # 向lum邻居宣告路由的脚本 encoder text; } process route-announce-vzb { run python3 /fullbgptable-vzb.py; # 向vzb邻居宣告路由的脚本 encoder text; } template { neighbor AS_65000{ # 邻居模板,定义AS 65000的通用配置 peer-as 65000; family { ipv4 unicast; # 支持IPv4单播地址族 } } } neighbor 192.168.0.2 { # 具体邻居配置(如ho-lumen-rt) router-id 192.168.0.1; local-as 65001; inherit AS_65000; # 继承模板配置 local-address 192.168.0.1; api send { processes [route-announce-lum]; # 关联路由宣告进程 } } neighbor 172.16.0.2 { # 具体邻居配置(如ho-verizon-rt) router-id 172.16.0.1; local-as 65002; inherit AS_65000; local-address 172.16.0.1; api send2 { processes [route-announce-vzb]; } }
4.3.1 方式一:作为系统服务运行
修改exabgp.env文件,将运行用户改为root:
bashvi /etc/exabgp/exabgp.env # 将 user="exabgp" 修改为 user="root"
创建/修改systemd服务文件:
bashvi /usr/lib/systemd/system/exabgp.service
服务配置内容:
ini[Unit] Description=ExaBGP Documentation=man:exabgp(1) Documentation=man:exabgp.conf(5) Documentation=https://github.com/Exa-Networks/exabgp/wiki After=network.target ConditionPathExists=/root/internet-multi-bgp.cfg # 配置文件路径 [Service] Environment=exabgp_daemon_daemonize=false User=root Group=root RuntimeDirectory=root RuntimeDirectoryMode=0750 ExecStartPre=-/usr/bin/mkfifo /run/exabgp/exabgp.in # 创建命名管道 ExecStartPre=-/usr/bin/mkfifo /run/exabgp/exabgp.out ExecStart=/usr/sbin/exabgp /root/internet-multi-bgp.cfg # 启动命令 ExecReload=/bin/kill -USR1 $MAINPID Restart=always CapabilityBoundingSet=CAP_NET_ADMIN AmbientCapabilities=CAP_NET_ADMIN [Install] WantedBy=multi-user.target
重载服务配置并启动:
bashsudo systemctl daemon-reload sudo systemctl start exabgp
验证服务状态:
bashsystemctl status exabgp
预期输出包含服务运行状态及路由宣告日志。
4.3.2 方式二:手动运行
直接执行ExaBGP命令,指定配置文件:
bashexabgp internet-v3.cfg
运行后将实时输出启动日志及路由宣告过程,适合调试场景。
4.4.1 添加环回地址
在ExaBGP节点(iexcng)添加环回地址(如8.8.8.8/32):
baship addr add 8.8.8.8/32 dev lo label lo:8
4.4.2 配置返回流量路由
通过netplan配置客户端到内部网络的返回路由,示例配置文件(/etc/netplan/90-NM-xxx.yaml):
yamlnetwork: version: 2 ethernets: NM-1eb3ee1e-1b44-3d47-a9f6-90e202d34838: renderer: NetworkManager match: name: "ens5" addresses: - "192.168.0.0/30" # 本地网络地址 routes: - to: 198.*.*.0/27 # 目标网段 via: 192.168.0.2 # 下一跳地址(cEOS设备)
4.5.1 访问cEOS设备
通过SSH访问cEOS设备(如ho-lumen-rt):
bashssh admin@ho-lumen-rt
4.5.2 访问客户端设备
通过docker exec进入ExaBGP节点(iexcng)的bash shell:
bashdocker exec -it iexcng bash
使用containerlab命令销毁实验环境,清理容器及网络资源:
bashclab destroy -t exabgp.yml --cleanup
输出示例:
INFO[0000] Parsing & checking topology file: exabgp.yml INFO[0000] Destroying lab: exabgp INFO[0000] Removed container: iexcng INFO[0000] Removed container: ho-lumen-rt INFO[0000] Removed container: ho-verizon-rt INFO[0000] Removing containerlab host entries from /etc/hosts file
若需保留实验配置文件等 artifacts,可移除
--cleanup参数。
如有问题或建议,可通过留言或提交issue反馈。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务