从零到一:在云服务器上快速部署VyOS网络操作系统
1. VyOS网络操作系统简介VyOS是一个基于Debian的开源网络操作系统它继承了Vyatta的基因在社区驱动下发展壮大。这个系统最吸引人的地方在于它把专业级的路由、防火墙、VPN等功能打包成了一个轻量级的软件解决方案。我最早接触VyOS是在2015年当时需要为一个小型办公室搭建成本可控的网关设备商用路由器动辄上万的报价让我们把目光转向了开源方案。与商业方案相比VyOS最大的优势是全功能免费。它支持BGP/OSPF等高级路由协议具备状态检测防火墙、多种VPN协议包括热门的WireGuard还能做负载均衡和QoS流量控制。最让我惊喜的是它的配置方式与Juniper的JunOS高度相似采用层次化的命令结构这对网络工程师特别友好。在实际项目中我经常把VyOS部署在三种场景作为中小企业的全能网关在云环境中构建跨区域的网络互联用于开发和测试网络拓扑2. 云服务器准备与镜像选择2.1 主流云平台对比在AWS、Azure、腾讯云等平台部署VyOS时首先要关注实例类型的选择。根据我的实测经验云平台推荐实例类型最低配置要求网络性能关键点AWSt3.medium2核4GB启用ENA网络增强AzureB2s2核4GB选择加速网络选项腾讯云S5.MEDIUM42核4GB开启弹性网卡特别提醒避免使用突发性能实例如AWS的t系列因为路由转发需要稳定的CPU资源。曾经有个客户因为用了t2.micro实例在流量高峰时出现了严重的包丢失。2.2 获取VyOS镜像官方提供两种类型的镜像LTS版本长期支持适合生产环境当前最新是1.4.x系列滚动版本包含最新功能但稳定性可能受影响对于云部署我强烈推荐使用预构建的云镜像。以AWS为例获取镜像的实操步骤# 在本地使用AWS CLI查询社区AMI aws ec2 describe-images \ --owners aws-marketplace \ --filters Namename,Valuesvyos-1.4* \ --query Images[*].[ImageId,Name] \ --output table如果云平台没有官方镜像可以自行转换。我常用的转换工具是qemu-img# 将原始ISO转换为云平台适用的格式 qemu-img convert -f qcow2 vyos-1.4.qcow2 -O vpc vyos-1.4.vhd3. 实例创建与网络配置3.1 安全组设置要点云平台的安全组相当于防火墙需要精细配置。这是我的安全组模板规则方向协议端口范围源/目标用途入站TCP22管理IP段SSH管理入站ICMP-0.0.0.0/0网络测试出站全部全部0.0.0.0/0允许所有出站重要提示不要开放Web管理端口VyOS默认没有Web界面这也是它比OpenWRT更安全的一个特点。3.2 网络接口规划在多网卡配置时要特别注意云平台的网络限制。以AWS为例主网卡eth0用于管理流量分配弹性IP辅助网卡eth1用于业务流量建议单独放在不同子网配置示例AWS环境# 查看可用网卡信息 show interfaces # 典型配置需在configure模式下执行 set interfaces ethernet eth0 address dhcp set interfaces ethernet eth1 address 192.168.1.1/244. SSH初始配置实战4.1 首次登录使用云平台提供的SSH方式连接后默认凭据是用户名vyos密码vyos安全警告首次登录后必须立即修改密码我遇到过因为没改密码导致被入侵的案例。# 修改密码示例 configure set system login user vyos authentication plaintext-password # 此时会提示输入新密码 commit save4.2 SSH加固方案生产环境建议实施以下安全措施密钥认证# 生成密钥对在本地电脑 ssh-keygen -t ed25519 # 上传公钥到VyOS set system login user vyos authentication public-keys local type ssh-ed25519 set system login user vyos authentication public-keys local key 公钥内容禁用密码登录set service ssh disable-password-authentication更改默认端口set service ssh port 582225. 基础网络功能配置5.1 NAT配置实例使内网能够访问互联网是最常见的需求set nat source rule 100 outbound-interface eth0 set nat source rule 100 source address 192.168.1.0/24 set nat source rule 100 translation address masquerade5.2 防火墙最佳实践建议采用白名单策略# 创建防火墙规则集 set firewall name WAN-IN default-action drop set firewall name WAN-IN rule 10 action accept set firewall name WAN-IN rule 10 state established enable set firewall name WAN-IN rule 10 state related enable # 应用到接口 set interfaces ethernet eth0 firewall in name WAN-IN5.3 路由配置静态路由示例适用于混合云场景set protocols static route 10.8.0.0/24 next-hop 192.168.1.254如果需要连接云平台的VPN网关可以使用VTI接口set interfaces vti vti0 address 169.254.100.1/30 set interfaces vti vti0 mtu 1427 set interfaces vti vti0 remote 203.0.113.16. 系统维护与监控6.1 配置备份方案VyOS内置了配置版本管理# 查看配置历史 show configuration commits # 回滚到特定版本 rollback 3我习惯用SCP定期备份配置到本地# 从VyOS导出配置 scp vyosyour-instance:/config/config.boot ~/backups/vyos-$(date %Y%m%d).config6.2 监控方案建议启用以下监控功能# 启用SNMP set service snmp community YOUR_COMMUNITY authorization ro # 配置NetFlow set system flow-accounting interface eth0 set system flow-accounting server 192.168.1.100 port 20557. 常见问题排查问题1实例创建后SSH无法连接检查安全组规则确认VyOS已正确获取IP地址使用云平台的控制台查看验证路由表是否有默认路由问题2网络性能不佳# 查看接口统计信息 show interfaces ethernet eth0 statistics # 检查是否有丢包 monitor interface eth0问题3配置丢失确认每次修改后执行了commit和save检查磁盘空间df -h查看/var/log/vyatta/configd.log日志在云环境中使用VyOS最让我满意的是它的弹性扩展能力。去年双十一期间我们通过自动伸缩组配合VyOS成功应对了平时5倍的流量冲击。这种灵活性和商业解决方案相比成本只有十分之一。