openstack 主机无法ping通instance,无法ssh到instance

https://docs.openstack.org/zh_CN/user-guide/cli-nova-configure-access-security-for-instances.html

好不容易安装好了OpenStack,发现无法ping通instance,无法ssh到instance:

最后折腾了半天发现是security group的问题:

Neutron 默认的安全组规则会禁止掉所有从外面访问 instance 的流量。

本节我们会修改安全组的配置,允许 ping 和 ssh instance。
有两种方法可以达到这个目的:

1. 修改 “default” 安全组。
2. 为 cirros-vm1 添加新的安全组。

一、什么是安全组

安全组,翻译成英文是 security group。安全组是一些规则的集合,用来对虚拟机的访问流量加以限制,这反映到底层,就是使用iptables,给虚拟机所在的宿主机添加iptables规则。

可以定义n个安全组,每个安全组可以有n个规则,可以给每个实例绑定n个安全组,nova中总是有一个default安全组,这个是不能被删除的。创建实例的时候,如果不指定安全组,会默认使用这个default安全组。

现在nova中安全组应该会移到quantum中,并且会增加对虚拟机外出流量的控制。现在nova中的安全组只是对进入虚拟机的流量加以控制,对虚拟机外出流量没有加以限制。

https://docs.openstack.org/zh_CN/user-guide/cli-nova-configure-access-security-for-instances.html

设定实例的权限和安全设置?

当你启动一个虚拟机,你可以注入*key pair*,它为你的实例提供了SSH访问路径。为了能运行,镜像必须包含’cloud-init’包

你可以为每个项目至少创建一个密钥对。你可以在项目所属的多个实例上使用该密钥对。如果你使用外部工具生成密钥对,那么你可以将它导入到OpenStack。

注解

一个密钥对属于独立用户而不属于项目。要想在多个用户中共享密钥,那么每个用户需要导入该密钥对。

如果镜像使用一个静态根密码或者静态密钥集(都不推荐),那么当你启动实例的时候就没必要提供一个密钥。

一个*安全组*是一个被命名为网络访问规则的集合,安全组被用来限制访问实例流量的类型。当你启动一个实例时,你可以为它指定一个或多个安全组。如果你没有创建安全组,那么新实例会自动分配一个默认安全组,除非你明确指定一个不同的安全组。

每个安全组中的关联*规则*控制着组中访问实例的流量。任何进入的流量与规则不匹配将会默认被拒绝。你可以在安全组中添加或删除规则,并且可以修改默认的或任何其他安全组中的规则。

你可以修改安全组中的规则来允许通过不同的端口和协议访问实例。比如,你可以为实例上运行的DNS修改规则来允许通过SSH访问实例,ping通实例或者允许UDP流量。你可以为规则指定以下参数。

  • 流量来源 允许来自云环境其他组成员的IP地址或所有IP地址的流量访问实例。
  • 协议,SSH用TCP、Pings用ICMP或者UDP。
  • 虚拟机的目标端口。定义一个端口范围。只需要打开单个端口,输入同样的值两次。ICMP不支持端口,你输入一个值定义代码和被允许的ICMP流量类型。

规则在新建或者修改之后实时生效

添加密钥对?

你可以生成一个秘钥对或上传一个现有的公钥

  1. 要生成一个密钥对,运行以下命令。

    $ openstack keypair create KEY_NAME > MY_KEY.pem
    

    这个命令生成一个你指定名为KEY_NAME的秘钥对,将私钥写入指定的”.pem”文件里,且为Nova数据库注册公钥。

  2. 运行以下命令,设置”.pem”的权限为只有你本人可读写。
    $ chmod 600 MY_KEY.pem
    

导入秘钥对?

  1. 如果你已经生成一个密钥对且公钥位于”~/.ssh/id_rsa.pub”里面,那么运行以下命令上传公钥。

    $ openstack keypair create --public-key ~/.ssh/id_rsa.pub KEY_NAME
    

    该命令将公钥记录在Nova数据库里且密钥对的名字命名为你指定的“KEY_NAME”。

  2. 为确保密钥对成功导入,将密钥对像以下这样列出:
    $ openstack keypair list
    

新建和管理安全组?

  1. 列出当前项目的安全组,包括说明,输入以下命令:

    $ openstack security group list
    
  2. 要创建有指定名称和描述的安全组,则输入以下命令:
    $ openstack security group create SECURITY_GROUP_NAME --description GROUP_DESCRIPTION
    
  3. 要删除指定的组,请输入以下命令:
    $ openstack security group delete SECURITY_GROUP_NAME
    

注解

您不能删除一个项目的默认安全组。而且您也不能删除已经指定给正在运行的实例的安全组。

新建和管理安全组规则?

使用命令:command:openstack security group rule`修改安全组规则。开始之前,使用source命令执行OpenStack RC文件。更多细节,参考:doc:../common/cli-set-environment-variables-using-openstack-rc`。

  1. 要列出安全组规则,则运行以下命令:

    $ openstack security group rule list SECURITY_GROUP_NAME
    
  2. 要允许SSH访问实例,则要选择以下项中的其中一项:
    • 允许所有IP访问,指定IP子网 CIDR为``0.0.0.0/0``:

      $ openstack security group rule create SECURITY_GROUP_NAME       --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
      
    • 仅允许访问来自其他安全组(源组)的IP地址访问指定的端口:
      $ openstack security group rule create SECURITY_GROUP_NAME       --protocol tcp --dst-port 22:22 --remote-group SOURCE_GROUP_NAME
      
  3. 要允许ping通实例,选择以下项中的其中一项:
    • 允许所有IP访问,指定IP子网 CIDR为``0.0.0.0/0``。

      $ openstack security group rule create --protocol icmp   SECURITY_GROUP_NAME
      

      这允许访问所有代码和所有ICMP的流量。

    • 只允许其他安全组(源组)的成员ping 通云主机。
      $ openstack security group rule create --protocol icmp   --remote-group SOURCE_GROUP_NAME SECURITY_GROUP
      
  4. 为了允许访问UDP端口,比如允许访问一台虚拟机上面的DNS服务,选择以下选项:
    • 允许IP地址UDP访问,以CIDR的方式指定IP网段为``0.0.0.0/0``。

      $ openstack security group rule create --protocol udp   --dst-port 53:53 SECURITY_GROUP
      
    • 只允许来自其他安全组(源组)的IP地址访问指定的端口。
      $ openstack security group rule create --protocol udp   --dst-port 53:53 --remote-group SOURCE_GROUP_NAME SECURITY_GROUP
      

删除安全组规则?

要删除一个安全组规则,请指定规则ID。

$ openstack security group rule delete RULE_ID

511 openstack keypair create mykey >mykey.pem
515 chmod 600 mykey.pem
517 openstack keypair list

538 openstack security group rule create 83da1f44-482d-4d9c-90dd-fc081b5756b7 --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
541 openstack security group rule list 83da1f44-482d-4d9c-90dd-fc081b5756b7
542 openstack security group rule create --protocal icmp --remote-ip 0.0.0.0/0
543 openstack security group rule create --protocal icmp --remote-ip 0.0.0.0/0 83da1f44-482d-4d9c-90dd-fc081b5756b7
544 openstack security group rule create --protocol icmp --remote-ip 0.0.0.0/0 83da1f44-482d-4d9c-90dd-fc081b5756b7

 

原文地址:https://www.cnblogs.com/hilaryqs/p/10192065.html

时间: 2024-10-09 01:27:32

openstack 主机无法ping通instance,无法ssh到instance的相关文章

批量ping 查看主机能否ping通,能否ssh上.md,

[[email protected] lilei]$ cat hosts_status.sh #!/bin/bash# 清空脚本结果文件 /tmp/cant_ssh.txt/tmp/cat_ssh.txt/tmp/cant_ping.txt # shell脚本并发查看ip,具体ip列表根据个人信息更改for n in $(awk '{print $1}' /etc/hosts |uniq |grep -v '127.0.0.1')do{ping -w 2 -c 2 $n 1>/dev/null

防火墙设置:虚拟机ping不通主机,但是主机可以ping通虚拟机(转载)

http://blog.csdn.net/mmyzlinyingjie/article/details/21468365 我在Windows7系统安装了虚拟机,通过虚拟机安装了Ubuntu13.04,我设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机. 我的操作是:关闭防火墙,发现虚拟机可以ping通主机了.说明是Windows7防火墙阻止了. 现在存在的问题是:如果我一直关闭防火墙也不是个事啊?这样做会影响我的电脑安全的.于是我想我要先确定

虚拟机ping不通主机,但是主机可以ping通虚拟机(转载)

我在Windows7系统安装了虚拟机,通过虚拟机安装了Ubuntu13.04,我设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机. 我的操作是:关闭防火墙,发现虚拟机可以ping通主机了.说明是Windows7防火墙阻止了. 现在存在的问题是:如果我一直关闭防火墙也不是个事啊?这样做会影响我的电脑安全的.于是我想我要先确定防火墙阻止了什么,导致需要关闭防火墙? 于是我在网上查看资料,原来是Windows7的防火墙没有打开ICMPv4-In这个

虚拟机中2台Linux系统、2台客户机实现通信,并且可以以主机名ping通

实现目标:虚拟机中2台Linux系统.2台客户机实现通信,并且可以以主机名ping通 实验准备:1.在虚拟机中2台linux系统.一台win7.一台win2008 2.linuxA和linuxB作为2台路由器,win7和win2008作为2端的客户机 3.2台linux都加装一个网卡设备 导言:此实验用到思科路由交换技术. 我们所要实现的实验的访问路径如下: 客户机win7----->LINUX A----->LINUX B----->客户机win2008 并且实现通过ping主机名也可

远程服务器可以ping通,但ssh连接不上的问题解决

最近遇到远程阿里云服务器可以ping通,但ssh连接不上的问题,分析过程如下.1.检查远程服务器的sshd服务是否正常,检查结果是没问题,端口也正常运行.2.用tcpdump src host xxx.xxx.xxx.xx进行抓包,发现有收到客户端的包,说明sshd服务和基本连接都没问题3.怀疑和以前遇到的阿里云服务器MTU值要求比较低有关,用命令修改MTU值就能连上远程服务器了.sudo ip link set dev eth0 mtu 1200 原文地址:http://blog.51cto.

OpenStack平台上,windows云主机可以ping通百度但是无法打开网页,部分其它网页可以打开

问题描述: 在OpenStack平台上的64位Windows7虚拟机,可以ping通百度,但是却无法打开百度网页. 于是,笔者又对其它网址进行的测试,发现淘宝.京东.携程部分网页可以打开,而新浪等等网页依然打不开,瞬间郁闷了. 按照百度网上的搜索结果进行了各种尝试,包括重启路由.重装virtio驱动.重置winsoc文件(CMD命令:netsh winsock reset).重装TCP/IP协议等各种方法,均不见效. 然后看到网上有说旗舰版windows7系统中有这样的问题存在,于是笔者对同一个

VCenter中嵌套openstack VM不能ping通外部网络问题解决的方法

问题描写叙述: 近期搭建了vCenter环境,并使用vCenter创建的VM搭建了一套openstack环境.在验证openstack的外网功能时.发现报文死活ping不通外网,抓包发现报文在vcenter的dvs处给丢掉了,这是很奇怪的事情.细致排查后.现vCenter居然感知报文的mac对于不受vCenter管理的VM发出的报文直接忽视. 先上图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400

VCenter中嵌套openstack VM不能ping通外部网络问题解决办法

问题描述: 最近搭建了vCenter环境,并使用vCenter创建的VM搭建了一套openstack环境,在验证openstack的外网功能时,发现报文死活ping不通外网,抓包发现报文在vcenter的dvs处给丢掉了,这是非常奇怪的事情,仔细排查后,现vCenter竟然感知报文的mac对于不受vCenter管理的VM发出的报文直接忽视. 先上图: 解释如下: 1)ESX-B016是安装了VMWare ESX的主机,受vCenter管理和控制,我使用vCenter创建一个虚拟分布式交换机(dv

本地主机无法ping通虚拟机主机解决办法

今天想打开虚拟机,用xshell连接时,突然连接超时打不开,然后尝试ping虚拟机IP,发现无法ping通,此时百度一波问题解决... 1.首先查看本地IP情况 2.查看虚拟机网络适配器配置情况 3.确保虚拟机和本地在同一网段,配置好以后,重启虚拟网络编辑器,发现此时看能ping通虚拟机主机,并可以通过ssh连接! 原文地址:https://blog.51cto.com/13054614/2400070