openstack neutron网络地址分配

一个openstack的虚拟机,是如何获得分配的地址,以及主机名,dns,主机路由,网关这些信息的呢?

ipv4的地址

对于ipv4的地址,是比较好理解的,无论是地址,dns,主机路由,网关,mtu,还是其他dhcp选项,都是从dhcp server获取到的。

虚拟机配置

具体虚拟机里只要在配置文件里(Centos7的eth0网卡配置文件时/etc/sysconfig/network-scripts/ifcfg-eth0)把BOOTPROTO=dhcp设置上。

重启network(centos7:systemctl restart network)服务即可。

虚拟机未分配到IP

可排查是虚拟机没发送请求报文,还是dhcp server没恢复报文,可以抓包tcpdump -i tapxxx -nv port 67(把tapxxx换成虚拟机tap设备)。

ipv6的地址

ipv6的地址分配和ipv4差别比较大。官网介绍:https://docs.openstack.org/newton/networking-guide/config-ipv6.html

对于ipv6的地址,稍微复杂些。创建时,有两个参数ipv6_ra_mode和ipv6_address_mode。决定了获取信息的方式。大概介绍下:

ipv6_ra_mode:确定谁发送RA报文

ipv6_address_mode:确定如何获取ipv6的地址,以及扩展信息,dns,主机路由,等这些。

下面具体,分析下各种配置

ipv6_ra_mode=slaac ipv6_address_mode=slaac

这种模式下,我们设置的地址前缀必须是64位的。

虚拟机IP

虚拟机最终的IP,是由地址前缀和MAC地址决定的,即地址前64位为地址前缀,后64位由mac地址经过eui64这种地址模式生产的。

地址前缀的获取

地址前缀MTU从RA广播中获取。也就是由路由接口发送过来的。也就是说虚拟机如果想从RA报文中获取,前提得有路由接口,需要把虚拟机所在的子网加入到路由器中。

虚拟机配置

这种模式的网络,配置文件配置方式:

BOOTPROTO=none

ONBOOT=yes

IPV6_ADDR_GEN_MODE=eui64

IPV6_AUTOCONF=yes

有时候我们看到虚拟机内分配的IP,前缀是对的,但是IP却不对,和界面上分配的不一致,那一般都是虚拟机配置的地址生成模式不是eui64,目前openstack只支持eui64所以必须配置成eui64。有的默认可能是stable-privacy。

虚拟机未分配IP

可以排查有没有发出rs(router solicitation)报文,和收到ra(router advertisement)报文。可以抓包tcpdump -i tapxxx -nv icmp6(把tapxxx换成虚拟机tap设备)。

一般情况,虚拟机内配置好,会主动发送rs报文,路由接口回复ra报文。如果没有发出rs报文可能是虚拟内部问题。如果没有回复ra报文,那就是路由接口配置问题了,就是云平台问题了,先确定是不是配置了路由接口。如果收到了ra报文但是没有配置上虚拟机,那也是虚拟机内部的问题。

另外ra报文一般是周期性发送的,使用ovn的情况,默认是200-600s。

网关和默认路由

虚拟机收到ra报文,一般把发送者,设置成默认路由。一般是fe80开头的本地链路地址。

总结:

这种模式下,我们可以通过RA报文设置IP地址,MTU,默认路由。其他信息获取不到。

ipv6_ra_mode=dhcpv6-stateful ipv6_address_mode=dhcpv6-stateful

这种模式我们一般叫做有状态的DHCPv6。

虚拟机IP:

虚拟机的IP我们是可以通过发送dhcpv6的solicit报文,dhcpv6 server收到后,返回分配的虚拟机IP,DNS配置。

一般我们获取到IP地址以后,可能发现地址前缀不对,比如我们的网段是前缀是96位,虚拟机里却设置的64位。这是因为dhcpv6 server分配IP时,并没有告诉地址前缀是多少。

网关和默认路由

虚拟机收到ra报文,一般把发送者,设置成默认路由。一般是fe80开头的本地链路地址。同事RA报文里有MTU,地址前缀信息。

虚拟机配置

这种模式的网络,配置文件配置方式:

BOOTPROTO=none

ONBOOT=yes

IPV6INIT=yes

DHCPV6C=yes

IPV6_AUTOCONF=yes

虚拟机未分配IP

可通过抓包tcpdump -i tapxxx -nv port 567(把tapxxx换成虚拟机tap设备),查看是否发出dhcpv6的solicit报文。有没有收到dhcpv6 Advertise报文。

虚拟机未配置静态路由

可以排查有没有发出rs(router solicitation)报文,和收到ra(router advertisement)报文。可以抓包tcpdump -i tapxxx -nv icmp6(把tapxxx换成虚拟机tap设备)。

总结:

这种模式下,我们通过dhcpv6报文获取IP地址,DNS服务器信息。从RA报文获取MTU,默认路由,地址前缀。其他信息(主机路由,主机名等)获取不到。

ipv6_ra_mode=dhcpv6-stateless ipv6_address_mode=dhcpv6-stateless

这种模式下,我们设置的地址前缀必须是64位的。

虚拟机IP

虚拟机最终的IP,是由地址前缀和MAC地址决定的,即地址前64位为地址前缀,后64位由mac地址经过eui64这种地址模式生产的。

地址前缀的获取

地址前缀MTU从RA广播中获取。也就是由路由接口发送过来的。也就是说虚拟机如果想从RA报文中获取,前提得有路由接口,需要把虚拟机所在的子网加入到路由器中。

dns, domain_search 从 DHCP server获取

地址前缀,MTU从RA广播中获取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值