云网络中的floating ip是什么

177 阅读4分钟

Floating IP(浮动 IP)是云网络中一个非常核心的概念,尤其在 OpenStack、阿里云、腾讯云等 IaaS 平台中广泛使用。它解决了 虚拟机(VM)无法直接从外部网络访问 的问题。


✅ 一、一句话定义

Floating IP 是一种“可动态绑定的公网 IP 地址”,用于将外部网络流量映射到私有网络中的虚拟机(VM)或服务上。


✅ 二、核心作用

问题Floating IP 的解决方案
VM 在私有网络(如 10.0.0.10),外部无法访问给 VM 绑定一个公网 IP(如 203.0.113.10
VM 重启或故障迁移后 IP 改变Floating IP 可解绑并重新绑定到新 VM
高可用切换主备 VM 共享同一个 Floating IP,故障时漂移

🔁 本质:实现“公网可达性”与“内网实例”的解耦


✅ 三、工作原理(以 OpenStack 为例)

📌 架构图

深色版本
[ 外部网络(公网)][ Floating IP: 203.0.113.10 ]
        ↓ (DNAT)
[ 路由器(Neutron Router)]
        ↓ (SNAT 反向)
[ 私有网络(10.0.0.0/24)][ VM: 10.0.0.10 ]

🔧 关键机制

1. DNAT(目标地址转换)

  • 外部用户访问 203.0.113.10:22

  • 云平台路由器(如 Neutron Router)执行 DNAT:

    • 目标 IP 从 203.0.113.10 → 10.0.0.10
  • 流量进入私有网络,送达 VM

2. SNAT(源地址转换)

  • VM 回复时,源 IP 是 10.0.0.10
  • 路由器执行 SNAT,源 IP 改为 203.0.113.10
  • 外部用户看到的是“从 203.0.113.10 回复”

🔄 整个过程对 VM 透明,VM 甚至不知道自己绑定了 Floating IP


✅ 四、典型操作命令(OpenStack)

Bash
深色版本
# 1. 创建 Floating IP
openstack floating ip create public-net

# 输出:Floating IP: 203.0.113.10

# 2. 绑定到 VM(Port)
openstack server add floating ip my-vm 203.0.113.10

# 3. 解绑
openstack server remove floating ip my-vm 203.0.113.10

# 4. 删除 Floating IP
openstack floating ip delete 203.0.113.10

✅ 五、Floating IP vs 固定 IP(Fixed IP)

特性Floating IP(浮动 IP)Fixed IP(固定 IP)
网络位置公网(外部可达)私网(如 10.0.0.x
是否可变可解绑、重绑定通常随 VM 创建固定
用途外部访问入口内部通信
NAT 类型DNAT(入向)无(或 SNAT 出向)
高可用支持漂移不支持
成本通常收费一般免费

🎯 类比:

  • Fixed IP 像你家的门牌号(幸福小区 3 栋 501
  • Floating IP 像你的手机号,别人通过它找到你,即使你搬家(换 VM)也能联系

✅ 六、不同云厂商的叫法

云厂商名称说明
OpenStackFloating IP最原始的叫法
阿里云弹性公网 IP(EIP)支持绑定 ECS、NAT、SLB 等
腾讯云弹性公网 IP(EIP)同上
AWSElastic IP(EIP)绑定 EC2 实例或 NAT 网关
华为云弹性公网 IP支持按需绑定
AzurePublic IP Address分标准/基本 SKU

💡 虽然名称不同,但核心思想一致:可绑定的公网 IP


✅ 七、高级用法

1. 高可用(HA)漂移

Text
深色版本
 VM: 10.0.0.10  绑定 Floating IP: 203.0.113.10
故障

Floating IP 解绑并绑定到备 VM: 10.0.0.20
  • 客户端无感知,连接恢复

2. 绑定到负载均衡器

  • Floating IP 绑定到 SLB/Nginx
  • 后端多个 VM 共享一个公网入口
  • 更安全、可扩展

3. NAT 网关出口 IP

  • 多个私网 VM 共享一个 Floating IP 出公网
  • 节省公网 IP 资源

✅ 八、技术实现(底层原理)

在 Neutron Router 中:

Bash
深色版本
# 查看 iptables DNAT 规则
iptables -t nat -L POSTROUTING -n -v

输出示例:

深色版本
DNAT       tcp  --  0.0.0.0/0            203.0.113.10         tcp dpt:22 to:10.0.0.10:22

在 OVS 中:

  • Floating IP 的绑定信息通过 ovsdb 下发
  • 流表生成 DNAT 规则

✅ 九、常见问题

问题解答
一个 VM 可以绑定多个 Floating IP 吗?可以,但通常不推荐,增加复杂性
Floating IP 会影响性能吗?有轻微 NAT 开销,但现代硬件几乎无影响
Floating IP 会丢包吗?正常不会,但 NAT 表满时可能丢包
Floating IP 可以跨可用区绑定吗?取决于云厂商,多数支持

✅ 十、面试回答模板

“Floating IP 是云网络中的一种公网 IP,用于让外部用户访问私网中的 VM。

它的核心机制是 DNAT:外部访问 Floating IP 时,云平台路由器将其映射到 VM 的私网 IP。

特点是 可动态绑定、支持漂移、实现高可用

在 OpenStack 中叫 Floating IP,在阿里云/AWS 中叫 EIP,本质相同。

它解决了‘私网 VM 无法被外网访问’的问题,是 IaaS 的基础能力。”


✅ 总结

关键点说明
本质可绑定的公网 IP
机制DNAT + SNAT
价值外网可达、高可用、灵活管理
趋势向 EIP 演进,支持更多绑定目标(SLB、NAT、VPN)

掌握 Floating IP,就掌握了 云网络南北向流量入口 的核心设计思想。