关于OpenStack虚拟机支持单网卡多IP问题

33 篇文章 16 订阅
21 篇文章 1 订阅

问题:有的场景需要虚拟机支持单网卡多IP,该如何设置

解决:如果是物理机或VMware虚拟机,则可以这样设置(以ubuntu14.04为例)

vi /etc/network/interfaces

auto eth0
iface eth0 inet static
address 192.168.128.10
netmask 255.255.255.0
gateway 192.168.128.2

auto eth0:1
iface eth0:1 inet static
address 192.168.128.11
netmask 255.255.255.0

保存后重启

同网段的IP无论是 ping 192.168.128.10 还是 ping 192.168.128.11 均能 ping 通

那OpenStack的虚机是否也这样设置就行了呢?

为了支持手动设置IP,需要给此虚拟机设置静态IP(如何设置请参考 为instance设置静态IP)

我们基于OpenStack O版进行测试,先创建虚拟机 test1 ,并设置静态IP 172.16.100.16
这里写图片描述

test2 ping test1 可以通,说明静态IP设置成功
这里写图片描述

然后给此虚拟机的eth0网卡设置第二个IP 172.16.100.15 并重启
可以看到 eth0 有两个 IP 地址,分别为 172.16.100.16 和 172.16.100.15
这里写图片描述

再次 test2 ping test1 ip 172.16.100.16 可以通,但是 ping ip 172.16.100.15 不通
这里写图片描述

为什么不通?

先看 test1 在哪个计算节点
这里写图片描述

然后查看此节点的 iptables filter 规则,有下面两条
意思是,对 IP 地址为 172.16.100.16 MAC 地址为 FA:16:3E:34:12:A1 的流量通过,其他的都 Drop 掉,所以 IP 172.16.100.15 就不通了

[root@compute1 ~]# iptables -t filter -L

这里写图片描述

如何解决呢?

通过 allowed-address-pairs 来扩展端口属性,允许指定端口的MAC和IP地址对的流量通过

先查看 IP 172.16.100.16 对应的 port ID
这里写图片描述

执行 neutron port-update 命令(或 openstack port set 命令)

[root@controller ~]# neutron port-update 065fb66a-0b78-4392-95d4-5a2e2c4784ba --allowed-address-pairs type=dict list=true ip_address=172.16.100.15
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Updated port: 065fb66a-0b78-4392-95d4-5a2e2c4784ba

查看 update 后的 port
这里写图片描述

再查看计算节点的 iptables filter 规则,果然有变化

[root@compute1 ~]# iptables -t filter -L

这里写图片描述

验证一下 test2 ping test1 的 172.16.100.15 地址
这里写图片描述

通过!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值