当前位置: 首页 > news >正文

OpenStack物理机与虚拟机外部网络连接:网卡配置实战指南

1. OpenStack网络连接基础概念

第一次接触OpenStack网络配置时,我也被各种网桥和虚拟设备搞得晕头转向。简单来说,OpenStack的网络连接就像是在物理机和虚拟机之间搭建一座桥梁。物理网卡(eth0、ens33这类)是真实的硬件设备,而br-ex、br-int这些则是OpenStack创建的虚拟网桥。

在实际部署中,最常见的有四种网络设备:

  • 物理网卡:服务器上真实的网卡接口
  • br-ex:负责连接外部网络的虚拟网桥
  • br-int:处理虚拟机内部流量的集成网桥
  • br-tun:用于隧道网络的网桥(在复杂部署中才会用到)

我刚开始配置时犯过一个典型错误:直接把IP地址配在物理网卡上。后来发现正确的做法是让物理网卡作为二层接口,把IP地址配置在br-ex网桥上。这就好比把网卡变成一根"网线",真正的"网络功能"由虚拟网桥来实现。

2. CentOS系统配置实战

2.1 单网卡场景配置

在测试环境或资源有限的情况下,我们经常需要单网卡承担所有网络流量。我最近在VMware虚拟机上部署OpenStack时就遇到了这种情况。

首先需要关闭NetworkManager服务,这是CentOS 7下必须做的一步:

systemctl disable NetworkManager --now systemctl enable network --now

然后创建物理网卡配置文件。假设我们的网卡是eth0:

cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<END TYPE=OVSPort HWADDR=xx:xx:xx:xx:xx:xx ONBOOT=yes DEVICE=eth0 DEVICETYPE=ovs OVS_BRIDGE=br-ex END

接下来配置br-ex网桥。根据你的网络环境选择DHCP或静态IP:

DHCP方式

cat > /etc/sysconfig/network-scripts/ifcfg-br-ex <<END TYPE=OVSBridge NAME="br-ex" DEVICE=br-ex DEVICETYPE=ovs BOOTPROTO=dhcp DEFROUTE=yes ONBOOT=yes DELAY=0 END

静态IP方式(更推荐生产环境使用):

cat > /etc/sysconfig/network-scripts/ifcfg-br-ex <<END TYPE=OVSBridge NAME="br-ex" DEVICE=br-ex DEVICETYPE=ovs BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=8.8.4.4 DEFROUTE=yes ONBOOT=yes DELAY=0 END

配置完成后,重启网络服务:

systemctl restart network

2.2 多网卡场景配置

生产环境中,我们通常会使用多块网卡实现流量分离。最近我在一台戴尔服务器上部署时,就配置了双网卡:eth0用于业务流量,eth1用于管理流量。

首先配置外部网络网卡eth0(与单网卡配置相同):

cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<END TYPE=OVSPort HWADDR=xx:xx:xx:xx:xx:xx ONBOOT=yes DEVICE=eth0 DEVICETYPE=ovs OVS_BRIDGE=br-ex END

然后配置内部管理网卡eth1。这里有个关键点:管理网卡和业务网卡必须在不同网段,否则会出现路由冲突。

静态IP配置示例

cat > /etc/sysconfig/network-scripts/ifcfg-eth1 <<END TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes NAME=eth1 DEVICE=eth1 ONBOOT=yes IPADDR=10.0.0.100 NETMASK=255.255.255.0 GATEWAY=10.0.0.1 DNS1=8.8.8.8 DNS2=8.8.4.4 END

如果是无线网卡用于管理(我在笔记本上测试时遇到过这种情况),配置会稍有不同:

cat > /etc/sysconfig/network-scripts/ifcfg-eth1 <<END TYPE=Wireless BOOTPROTO=dhcp DEFROUTE=yes NAME=eth1 DEVICE=eth1 ONBOOT=yes END

3. Ubuntu系统配置实战

3.1 单网卡场景配置

从Ubuntu 18.04开始,网络配置改用netplan,这个变化让我刚开始很不适应。但用习惯后发现YAML格式的配置其实更清晰。

假设网卡是eth0,编辑netplan配置文件(通常在/etc/netplan/目录下):

vim /etc/netplan/01-network-manager-all.yaml

DHCP配置方式

network: version: 2 renderer: networkd ethernets: eth0: dhcp4: true bridges: br-ex: interfaces: [eth0] dhcp4: true

静态IP配置方式

network: version: 2 renderer: networkd ethernets: eth0: dhcp4: false bridges: br-ex: interfaces: [eth0] addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8]

应用配置:

netplan apply

3.2 多网卡场景配置

Ubuntu下多网卡配置有个特殊注意事项:无线网卡最好继续使用NetworkManager管理,否则可能会失去连接。

这是我的一个实际配置案例(有线+无线组合):

network: version: 2 renderer: networkd ethernets: eth0: dhcp4: true wlan0: dhcp4: true optional: true bridges: br-ex: interfaces: [eth0] dhcp4: true

注意这里wlan0的optional: true参数很关键,它允许无线网卡在启动时暂时不可用而不会阻塞系统启动。

4. 常见问题与排错指南

在实际部署中,我遇到过各种网络连接问题。这里分享几个典型问题的解决方法。

问题1:网桥创建成功但无法获取IP地址检查物理网卡是否真的连接到了网桥:

ovs-vsctl show

应该能看到类似这样的输出:

Bridge br-ex Port br-ex Interface br-ex type: internal Port eth0 Interface eth0

问题2:多网卡场景下内部网络无法访问这通常是因为网卡配置在了相同网段。检查各网卡的IP配置:

ip addr show

确保不同网卡不在同一子网内。

问题3:Ubuntu系统重启后网络失效这可能是netplan配置未正确应用。尝试:

netplan generate netplan apply

并检查服务状态:

systemctl status systemd-networkd

问题4:虚拟机无法访问外部网络首先检查物理主机能否上网,然后验证NAT和路由规则:

iptables -t nat -L route -n

记得每次修改配置后,最好重启网络服务或直接重启服务器。我在实际运维中发现,有些网络变更需要完全重启才能生效。

http://www.jsqmd.com/news/518959/

相关文章:

  • ROS Melodic下移动小车SLAM建图实战:从Ubuntu 18.04环境配置到Gazebo仿真(避坑指南)
  • 探索傅里叶变换与短时傅里叶分析:从理论到脚本实践
  • 从Function Calling到MCP:AI工具化到底解决了什么,没解决什么
  • 第 5 篇:让 Claude 少犯错,验证机制、测试策略与发布检查清单
  • 普源DHO4000示波器数学运算全指南:FFT/积分/微分功能详解
  • COMSOL锂电池模型:风冷、水冷、空冷相变冷却及热电耦合仿真代
  • 域控制器开发避坑实录:从硬件设计到软件集成的5个关键挑战
  • 【NISP】证书全攻略:从入门到进阶的职业路径解析
  • 情绪问题是什么?主要有哪几种表现形式?
  • 基于Matlab的FFT滤波:谐波分析、频段清除与数据提取
  • 电商平台大数据建模:用户行为分析与推荐系统设计
  • 高阶滑模观测器在永磁同步电机无位置算法中的应用:性能卓越,无需低通滤波与相位补偿
  • Debian 13 KDE桌面美化全攻略:从Nordic主题到Papirus图标一步到位
  • 从原理到实践:手把手教你解决模拟版图中的天线效应问题
  • Hive数据一致性问题:分桶表_分区表数据倾斜与一致性保障技巧
  • 自动泊车系统中平行泊车与圆弧直线圆弧可行驶区域分析
  • 学习困难与儿童注意力缺陷的表现及其诊断标准是什么?
  • 为什么你的多线程程序总崩溃?可能是没用好pthread_setname_np这个隐藏功能
  • SDH网络中的POS接口配置实战——从理论到路由器部署
  • 基因编辑技术的伦理争议与投资风险
  • 出自动泊车MPC模型预测控制的路径跟踪(纯代码+运动学): 含误差图、前轮转角图、航向角图及动画展示
  • VirtualBox快速部署Debian12:从零开始的详细指南
  • Springer LaTeX投稿实战:常见编译问题与高效解决方案
  • x64dbg实战指南:从零开始掌握程序动态调试技巧
  • Pixel3刷机后必做的5件事:优化Android 12的隐藏设置与性能调校
  • 电荷泵实战:如何在EEPROM设计中避免寄生三极管效应(附电路图解析)
  • DevOps03-GitLab02-CI/CD03:Pipeline的job作业配置(variable、tags、stage、script、when、retry、need、parllel)
  • 1985-2024年企业合作专利数据
  • 用SmartPing替代Zabbix做轻量级网络监控:5分钟搞定跨机房延迟检测
  • DevOps03-GitLab02-CI/CD04:Pipeline运行控制【workflow控制、trigger触发、API触发】