1. 程式人生 > >openstack 主機無法ping通instance,無法ssh到instance

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