openstack-vm-cannot-ssh

云之迷雾

  1. 今天发现了一件奇事,过程是这样的,我想SSH一个虚拟机,但是怎么也出不来,排除了防火墙等等一系列原因都无果,结果想到了在VNC界面上查看一下,不看还好,一看吓了自己一跳,为什么在3月份创建虚拟机的时候明明指定的IP是172.21.4.68,但是不知道怎么自己偷摸摸的变成了172.21.4.197。我也不能在现在再改该虚拟机IP,因为按openstack的规定:虚拟机的IP默认都是DHCP分配的,如果要设置固定IP,需要在创建虚拟机时就指定,直接在虚拟机上更改IP是会被过滤的,所以此法无效。
  2. 现在的情况就是除了通过在VNC界面查看ip是172.21.4.197 以外 , 在电科华云界面上 和 通过openstack的命令查看的ip 都是 172.21.4.68 ,也就是说虚拟机的IP是真的改了,但是openstack还未知道。到底是哪的原因呢?按照重启大法重启了两次,发现自己又变成了172.21.4.68的网址,后来左思右想都不对,再仔细一看,原来Bcast的地方变成了172.21.6.255,按道理来讲正常应该为172.21.4.255,为什么会变成172.21.6.255呢?
    image
  3. 首先,我查了一下什么是Bcast:broadcast address 即广播地址。Broadcast Address(广播地址)是专门用于同时向网络中所有工作站进行发送的一个地址。在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。例如,对于172.21.4.0(255.255.255.0 )网段,其广播地址为172.21.4.255 (255 即为2 进制的11111111 ),当发出一个目的地址为172.21.4.255 的分组(封包)时,它将被分发给该网段上的所有计算机。按正常来讲,这些信息都是由DHCP服务器来分配的,那么是不是也就是说可能存在别的DHCP服务器(比如172.21.6.X)扰乱了这个虚拟机的网络,而且按正常来讲,B类私有网址(172.21.4.X)的网络掩码应该是255.255.0.0,现在是255.255.255.0,这样做是为了能多一些子网。多8位掩码,就是多了2的8次方个子网(256个),毕竟学校没有那么多网络资源。
    在虚拟机正常的情况下我查看了一下该虚拟机上的syslog情况,发现了如下:
    image
  4. 可知该虚拟机正常情况下与172.21.4.3这个dhcp服务器进行了 交互,DHCP租约过程就是DHCP客户机动态获取IP地址的过程。
    DHCP租约过程分为4步:①客户机请求IP(客户机发DHCPDISCOVER广播包);②服务器响应(服务器发DHCPOFFER广播包);③客户机选择IP(客户机发DHCPREQUEST广播包);④服务器确定租约(服务器发DHCPACK/DHCPNAK广播包)。
    我又查看了一下出问题的这个虚拟机的日志(出问题的时候)发现了问题
    image
  5. 可以发现这个出问题的虚拟机早先通过了172.21.4.254进行了DHCP交互,获得了有问题的IP地址,因为这个iP地址是它分配的,所以也ping不通就很正常了,因为172.21.4.254也ping不通,这个是我们学校的网关,还有一个网关是172.21.6.254,可得出结论:172.21.4.254不仅是一个网关还是一个dhcp服务器,还有一张图,如下
    image
  6. 172.21.201.1 是一个DHCP服务器也。而且不单单是4网段的会与之交互,连6网段的也会与之交互,难道说172.21.201.1是一个学校总的DHCp服务器?经过查看别的服务器可确定172.21.201.1确实是一个DHCP服务器。是不是可能172.21.4.254是一个中继DHCP服务呢?DHCP服务器是可以分配不同网段的IP地址的,可以通过两个网卡,比如一个网卡可以提供4网段的,一个可以提供6网段的,这样也和日志上的证据对上了。

  7. 最后,经过查看一批虚拟机发现所有的都会与172.21.4.3(既有DNS也有DHCP)交互,难道是那个有问题的虚拟机与172.21.4.254,然后再与172.21.201.1 进行DHCP交互,扰乱了正常的应该与172.21.4.3的交互?
    最后经与云提供商询问,可能就是这个原因
    image

    结论

  • 最后的猜想:是不是因为172.21.201.1扰乱了我们的虚拟机,毕竟广播地址是172.21.6.255,现在我有个问题就是Bcast由谁来决定?????
-------------本文结束感谢您的阅读-------------