You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenStack实例间私有子网路由配置求助

OpenStack实例间私有子网路由配置求助

针对你遇到的跨实例私有子网互通问题,我来帮你梳理下可行的解决步骤,应该能实现你想要的ping通需求:

问题核心分析

你的两台实例通过OpenStack管理的172.26.20.0/24子网连通,但各自的10.0.0.0/24、10.0.1.0/24是未接入OpenStack网络的本地私有接口。要让这两个私有子网互通,核心是让两台实例自身具备流量转发能力,同时确保OpenStack层面的安全策略不拦截相关流量。

分步解决方案

1. 开启实例的IP转发功能

Linux系统默认关闭IP转发,这是私有流量无法跨接口转发的关键原因,必须开启:
在两台实例上分别执行以下命令:

# 临时生效(重启后失效)
echo 1 > /proc/sys/net/ipv4/ip_forward

# 永久生效(写入配置文件)
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

2. 确认静态路由配置完整

你已经添加了基础路由,建议补全完整的配置命令并验证:

  • 实例1执行:
    ip route add 10.0.1.0/24 via 172.26.20.20 dev eth0
    
  • 实例2执行:
    ip route add 10.0.0.0/24 via 172.26.20.10 dev eth0
    

执行ip route show命令,确认路由规则已正确添加。

3. 配置实例本地防火墙规则

如果实例开启了防火墙(iptables/firewalld),需要允许私有子网的流量转发:

  • 对于使用iptables的系统,实例1执行:
    # 允许两个私有子网间的转发流量
    iptables -A FORWARD -s 10.0.0.0/24 -d 10.0.1.0/24 -j ACCEPT
    iptables -A FORWARD -s 10.0.1.0/24 -d 10.0.0.0/24 -j ACCEPT
    # 允许ping所需的ICMP响应流量
    iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
    iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
    

实例2执行类似命令,将源和目的子网互换即可。如果用firewalld,可直接将对方私有子网添加到信任区域,或添加允许流量的规则。

4. 检查OpenStack安全组规则

OpenStack安全组是流量拦截的第一道关卡,必须配置对应的放行规则:

  • 给两台实例的安全组添加入方向规则:允许来自172.26.20.0/24子网的所有协议流量(私有流量通过这个子网转发),同时允许来自对方私有子网的ICMP流量(满足ping需求)
  • 添加出方向规则:允许到172.26.20.0/24子网和对方私有子网的所有协议流量

5. 逐步验证连通性

完成配置后,先验证基础连通:

  1. 在实例1上ping172.26.20.20,确认两台实例的OpenStack子网通信正常
  2. 再尝试ping10.0.1.1,同理在实例2上先ping172.26.20.10,再ping10.0.0.1
    如果仍不通,可用tcpdump在eth0和私有接口抓包,排查流量是否到达对方实例。

额外排查点

如果以上步骤都完成还是不行,检查:

  • 私有接口状态:用ip link show确认veth1接口处于UP状态
  • 虚拟路由器SNAT规则:若路由器开启了源NAT,需确认规则仅针对外网流量,未拦截子网内的私有流量转发

按照这个流程操作,应该就能解决你的私有子网互通问题了!

备注:内容来源于stack exchange,提问作者Fefux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:28:08