VyOS起步指南:用Docker快速搭建网络实验环境
文章目录
- 1. VyOS是什么?为什么选择它?
- 2. 五分钟快速部署:Docker方案
- 3. 进入容器:初探VyOS世界
- 4. 核心操作:像开发者一样思考
- 5. 踩坑提醒:新手常见问题
- 6. 结语:网络即代码的未来
1. VyOS是什么?为什么选择它?
VyOS是一个专为路由、防火墙和网络服务设计的开源网络操作系统。它继承了Vyatta项目的优秀基因,在保留社区驱动特性的同时,融入了企业级功能与开源灵活性。简单来说,它就像是网络界的"瑞士军刀":
- 企业级功能:支持BGP、OSPF、VPN等高级网络协议,可满足复杂网络架构需求
- 配置即代码:所有配置以易读的文本文件存储,支持版本控制,完美契合DevOps自动化工作流
- 多场景适用:可运行在物理设备、虚拟机甚至容器中,部署方案高度灵活
- 轻量高效:容器化后资源占用低于100MB,远低于传统商业路由器方案,更适合实验环境
2. 五分钟快速部署:Docker方案
用Docker Compose部署VyOS,只需一个配置文件实现一键启动:
# docker-compose.yaml
version: '3.8'
services:vyos-router:image: afla/vyos:1.4 # 官方推荐镜像container_name: vyos-routerprivileged: true # 必须启用特权模式以操作网络栈restart: always # 确保异常退出后自动恢复sysctls:- net.ipv6.conf.all.disable_ipv6=1 # 实验环境禁用IPv6简化配置ports:- "179:179" # BGP端口,用于路由协议测试- "6080:8080" # 映射Web管理端口到宿主机volumes:- /lib/modules:/lib/modules # 内核模块映射,支持网卡驱动- ./vyos-config:/opt/vyatta/etc/config # 配置文件持久化存储路径networks:- local-net # 接入独立网络networks:local-net:external: true # 使用预先创建的网络
这个配置有几个关键点值得深入注意:
- 特权模式必要性:访问底层网卡和路由表必须开启特权模式(privileged: true)
- 配置持久化机制:通过volume映射
/opt/vyatta/etc/config
到本地目录,确保配置变更不会丢失 - 网络隔离优势:独立网络(local-net)避免与其他容器冲突,保持实验环境纯净
- 端口映射逻辑:BGP标准端口179用于协议实验,6080替代8080避免端口冲突
启动命令简单到只需两行,执行时间不超过5秒:
docker network create local-net # 创建隔离的桥接网络
docker-compose up -d # 后台静默启动容器
3. 进入容器:初探VyOS世界
容器启动后,需通过SSH命令进入操作环境,具体步骤为:
docker exec -it vyos-router bash # 附加到容器终端
vbash-4.1# su vyos # 切换为安全限制的vyos用户
此时进入VyOS CLI界面,注意其两种核心工作模式的区别:
- 操作模式(
$
提示符):仅查看系统状态(不可修改配置) - 配置模式(
#
提示符):修改系统参数(需授权)
# 在操作模式下查看网络接口(直接获取只读信息)
vyos@vyos:~$ show interfaces# 输入configure命令进入编辑状态
vyos@vyos:~$ configure
[edit] # 提示符变为#,表示进入配置模式(可修改系统)
4. 核心操作:像开发者一样思考
VyOS的CLI采用直观的树形结构,支持Tab自动补全和实时帮助系统:
# 利用Tab补全命令(减少输入错误)
vyos@vyos:~$ sh[Tab] # 自动扩展为show# 查看show命令的子选项列表
vyos@vyos:~$ show [Tab]
Possible completions:arp # 显示ARP缓存表bridge # 查看桥接设备状态configuration # 导出当前运行配置interfaces # 列出所有接口详情
完整的show命令树可参考下图:
典型命令show version
的输出示例(包含版本和运行时间):
配置工作流三步曲是操作的核心逻辑:
# 1. 使用set修改参数(例如更新设备标识)
vyos@vyos# set system host-name my-router# 2. 提交变更到内存(立即生效但未持久化)
vyos@vyos# commit# 3. 写入磁盘保存配置(重启后不丢失)
vyos@vyos# save
Saving configuration to '/config/config.boot'...
Done # 成功提示
5. 踩坑提醒:新手常见问题
-
权限问题:
- 症状:忘记
privileged: true
会导致网络接口无法启用(ifconfig失败) - 解决方案:检查docker-compose配置,确保特权模式已启用
- 症状:忘记
-
配置丢失风险:
- 陷阱:执行
commit
后未save
,重启容器时配置重置 - 防护:重要变更后必须运行
save
,最好结合volume持久化
- 陷阱:执行
-
网络连接故障:
- 现象:容器无法ping通外部IP或宿主机
- 排查:确认docker网络配置正确,验证防火墙是否放行端口
6. 结语:网络即代码的未来
通过Docker部署VyOS,真正实现了"基础设施即代码"的转型目标。所有配置文件均可提交Git仓库管理,部署过程可集成至CI/CD流水线自动验证,这种现代工作流大幅提升实验效率。
下次当你需要模拟复杂网络拓扑或验证安全策略时,可优先选用此方案。体验3秒启动路由器的极致速度后,传统物理设备的部署方式将显得格外笨重!
资源推荐:
- 官方文档:最权威的配置指南和API参考
- GNS3市场镜像:直接导入预置拓扑模板
- Docker Hub镜像:定期更新的容器镜像源