91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何將openstack環境中的虛擬機與public network連通

發布時間:2021-12-01 18:32:00 來源:億速云 閱讀:196 作者:柒染 欄目:云計算

這期內容當中小編將會給大家帶來有關如何將openstack環境中的虛擬機與public network連通,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

我們進一步分析路由功能,說明實現內部internal network和public network的路由(而不僅僅是internal network之間)。

我們還會分析neutron如何將浮動IP配置給虛擬機,從而實現public network與虛擬機的連通。

Use case #5: Connecting VMs to the public network

所謂“public network”,指openstack部署環境以外的網絡。這個網絡可以是datacenter中的另一個網絡、internet、或者一個不被openstack控制的私有網絡。

與public network通信,我們需要在openstack中創建一個network并設置為public。這個network用于虛擬機與public network通信。虛擬機不能直接連接到這個新創建的屬性為public的network,所有網絡流量必須使用openstack創建的router從private network路由到public network。在openstack中創建public network,我們只需要使用neutron net-create 命令,并將router:external設置為True。
在我們的例子中,public newtork叫做“my-public”。

# neutron net-create my-public --router:external=True
Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | 5eb99ac3-905b-4f0e-9c0f-708ce1fd2303 |
| name                      | my-public                            |
| provider:network_type     | vlan                                 |
| provider:physical_network | default                              |
| provider:segmentation_id  | 1002                                 |
| router:external           | True                                 |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tenant_id                 | 9796e5145ee546508939cd49ad59d51f     |
+---------------------------+--------------------------------------+


在我們的環境中,控制節點的eth4是一個沒有綁定IP的網卡。我們使用它接入外部public network。因此我們將eth4加入OVS網橋"br-ex",Neutron會將虛擬機向外部網絡的發送的網絡包路由到這個bridge。

# ovs-vsctl add-port br-ex eth4
# ovs-vsctl show
8a069c7c-ea05-4375-93e2-b9fc9e4b3ca1
.
.
.
    Bridge br-ex
        Port br-ex
            Interface br-ex
                type: internal
        Port "eth4"
            Interface "eth4"
.
.
.



我們在eth4上創建了一個IP范圍是180.180.180.0/24的public network。這個public network存在于datacenter中,通過gateway 180.180.180.1可以連接到datacenter網絡。為了將這個網絡與Openstack環境相連,我們需要在“my-public"這個network,上創建一個有相同IP范圍的subnet,并告訴neutron這個network的gateway。

# neutron subnet-create my-public 180.180.180.0/24 --name public_subnet --enable_dhcp=False --allocation-pool start=180.180.180.2,end=180.180.180.100 --gateway=180.180.180.1
Created a new subnet:
+------------------+------------------------------------------------------+
| Field            | Value                                                |
+------------------+------------------------------------------------------+
| allocation_pools | {"start": "180.180.180.2", "end": "180.180.180.100"} |
| cidr             | 180.180.180.0/24                                     |
| dns_nameservers  |                                                      |
| enable_dhcp      | False                                                |
| gateway_ip       | 180.180.180.1                                        |
| host_routes      |                                                      |
| id               | ecadf103-0b3b-46e8-8492-4c5f4b3ea4cd                 |
| ip_version       | 4                                                    |
| name             | public_subnet                                        |
| network_id       | 5eb99ac3-905b-4f0e-9c0f-708ce1fd2303                 |
| tenant_id        | 9796e5145ee546508939cd49ad59d51f                     |
+------------------+------------------------------------------------------+


 

然后,我們需要將router接入我們新創建的public network,使用下列命令創建:

# neutron router-gateway-set my-router my-public
Set gateway for router my-router



注意:我們在兩種情況下使用術語“public network",一個是datacenter中真實的public network,為了區分我們把它(180.180.180.0/24)叫做"external public network"。另一個是openstack中我們使用的"public network",我們稱之為“my-public"的接口網絡。我們還涉及兩個”gateways“,一個是外部Public network用的gateway(180.180.180.1),另一個是router中的gateway接口(180.180.180.2)。

執行上述的操作后,router上(之前已經擁有兩個網絡接口,連接兩個不同的internal network)增加了第三個網絡接口(被稱作gateway)。router可以有多個網絡接口,連接普通的internal subnet或者作為gateway連入“my-public"網絡。一個經常犯的錯誤是,試圖以通常網絡接口的方式接入public network,操作可能成功,但是卻并不能與外部網絡連通。在我們創建一個public network,subnet并接入router,網絡拓撲看起來是這樣的:

如何將openstack環境中的虛擬機與public network連通

進入router的namespace中,我們看到其中增加了一個180.180.180.0/24網段IP的網絡接口,IP為180.180.180.2:

# ip netns exec qrouter-fce64ebe-47f0-4846-b3af-9cf764f1ff11 ip addr
.
.
22: qg-c08b8179-3b:  mtu 1500 qdisc noqueue state UNKNOWN                                                      
    link/ether fa:16:3e:a4:58:40 brd ff:ff:ff:ff:ff:ff
    inet 180.180.180.2/24 brd 180.180.180.255 scope global qg-c08b8179-3b
    inet6 2606:b400:400:3441:f816:3eff:fea4:5840/64 scope global dynamic
       valid_lft 2591998sec preferred_lft 604798sec
    inet6 fe80::f816:3eff:fea4:5840/64 scope link
       valid_lft forever preferred_lft forever
.
.



在這里router的gateway地址180.180.180.2與虛擬機是聯通的,虛擬機可以ping到它。我們也能從虛擬機ping到外部網絡的gateway180.180.180.1以及這個gateway所連的網絡。如果我們查看router namespace,發現iptables的NAT talbe中有以下兩行規則。

# ip netns exec qrouter-fce64ebe-47f0-4846-b3af-9cf764f1ff11 iptables-save
.
.
-A neutron-l3-agent-snat -s 20.20.20.0/24 -j SNAT --to-source 180.180.180.2
-A neutron-l3-agent-snat -s 10.10.10.0/24 -j SNAT --to-source 180.180.180.2
 
.
.



因此,從net1或net2向外網發出的網絡包,其源IP地址會被修改為180.180.180.2。我們可以在虛擬機中ping外網的某個地址,看下請求包的IP地址是否是這個IP地址。

namespace中的路由表會把所有外部流量路由到外網的gateway(180.180.180.1)。

#  ip netns exec  qrouter-fce64ebe-47f0-4846-b3af-9cf764f1ff11 route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         180.180.180.1   0.0.0.0         UG    0      0        0 qg-c08b8179-3b
10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 qr-15ea2dd1-65
20.20.20.0      0.0.0.0         255.255.255.0   U     0      0        0 qr-dc290da0-0a
180.180.180.0   0.0.0.0         255.255.255.0   U     0      0        0 qg-c08b8179-3b


虛擬機中發出的流向public network的請求,會被NAT映射為源地址為180.180.180.2,然后發給public network的gateway。同樣,我們可以看到在namespace中ip forward功能是啟動的。

# ip netns exec qrouter-fce64ebe-47f0-4846-b3af-9cf764f1ff11 sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1


Use case #6: Attaching a floating IP to a VM

現在,虛擬機可以訪問public network。下一步,我們嘗試允許外部客戶訪問Openstack環境中的虛擬機,通過floating IP可以完成這個功能。 Floating IP由外部網絡提供,用戶可以將它設置給虛擬機,從而允許外部客戶接入虛擬機。

創建Floating IP,第一步是按照上一個usecase的講解,將虛擬機連入外部網絡。第二步時使用命令行,產生一個浮動IP。

# neutron floatingip-create public
Created a new floatingip:
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| fixed_ip_address    |                                      |
| floating_ip_address | 180.180.180.3                        |
| floating_network_id | 5eb99ac3-905b-4f0e-9c0f-708ce1fd2303 |
| id                  | 25facce9-c840-4607-83f5-d477eaceba61 |
| port_id             |                                      |
| router_id           |                                      |
| tenant_id           | 9796e5145ee546508939cd49ad59d51f     |
+---------------------+--------------------------------------+


根據"my-public" network的能力,用戶可以創建很多這樣的IP。將浮動IP與虛擬機關聯,可以通過命令行或者GUI完成。下圖是GUI的例子:

如何將openstack環境中的虛擬機與public network連通

在router namespace中我們可以看到,新增加了3跳iptabales規則:

-A neutron-l3-agent-OUTPUT -d 180.180.180.3/32 -j DNAT --to-destination 20.20.20.2
-A neutron-l3-agent-PREROUTING -d 180.180.180.3/32 -j DNAT --to-destination 20.20.20.2
-A neutron-l3-agent-float-snat -s 20.20.20.2/32 -j SNAT --to-source 180.180.180.3


這些規則主要是對Floating IP進行NAT操作。對于router收到的目的地址為180.180.180.3的請求,會被轉換成目標地址為20.20.20.2。反之亦然。

綁定Floating IP后,我們可以連接到虛擬機。需要確認安全組規則已經被設置,從而允許這樣連接:

nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0


這兩條規則,允許ping和ssh。

Iptables是一個復雜而強大的工具。如果想更好的理解iptables規則,可以查看iptables的幫助文件。

上述就是小編為大家分享的如何將openstack環境中的虛擬機與public network連通了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桐柏县| 大足县| 大安市| 淮安市| 郁南县| 鄯善县| 石首市| 奇台县| 黄山市| 广西| 怀化市| 府谷县| 苗栗县| 荆州市| 西和县| 华阴市| 内乡县| 中江县| 锦屏县| 开远市| 泸州市| 海南省| 富民县| 尼玛县| 益阳市| 宁远县| 文登市| 山阴县| 青河县| 北海市| 镇平县| 家居| 芦山县| 平阳县| 尼勒克县| 蓝田县| 福安市| 申扎县| 乌拉特中旗| 德江县| 西青区|