這篇文章給大家介紹如何使用network namespace創(chuàng)建一個(gè)router,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、做網(wǎng)站與策劃設(shè)計(jì),東海網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:東海等地區(qū)。東海做網(wǎng)站價(jià)格咨詢:18982081108
我們會(huì)通過一個(gè)稍微復(fù)雜(其實(shí)仍然相當(dāng)基本)的use case(兩個(gè)網(wǎng)絡(luò)間路由)探索網(wǎng)絡(luò)的設(shè)置。 路由使用的組件與連通內(nèi)部網(wǎng)絡(luò)相同,使用namespace創(chuàng)建一個(gè)隔離的container,允許subnet間的網(wǎng)絡(luò)包中轉(zhuǎn)。
記住我們?cè)诘谝黄恼轮兴f的,這只是使用OVS插件的例子。openstack還有很多插件使用不同的方式,我們提到的只是其中一種。
現(xiàn)實(shí)中,我們會(huì)創(chuàng)建不同的網(wǎng)絡(luò)用于不同的目的。我們也會(huì)需要把這些網(wǎng)絡(luò)連接起來。因?yàn)閮蓚€(gè)網(wǎng)絡(luò)在不同的IP段,我們需要router將他們連接起來。為了分析這種設(shè)置,我們創(chuàng)建另一個(gè)network(net2)并配置一個(gè)20.20.20.0/24的subnet。在創(chuàng)建這個(gè)network后,我們啟動(dòng)一個(gè)Oracle Linux的虛擬機(jī),并連接到net2。下圖是從OpenstackGUI上看到的網(wǎng)絡(luò)拓?fù)鋱D:

進(jìn)一步探索,我們會(huì)在openstack網(wǎng)絡(luò)節(jié)點(diǎn)上看到另一個(gè)namespace,這個(gè)namespace用于為新創(chuàng)建的網(wǎng)絡(luò)提供服務(wù)。現(xiàn)在我們有兩個(gè)namespace,每個(gè)network一個(gè)。
# ip netns list qdhcp-63b7fcf2-e921-4011-8da9-5fc2444b42dd qdhcp-5f833617-6179-4797-b7c0-7d420d84040c
可以通過nova net-list查看network的ID信息,或者使用UI查看網(wǎng)絡(luò)信息。
# nova net-list +--------------------------------------+-------+------+ | ID | Label | CIDR | +--------------------------------------+-------+------+ | 5f833617-6179-4797-b7c0-7d420d84040c | net1 | None | | 63b7fcf2-e921-4011-8da9-5fc2444b42dd | net2 | None | +--------------------------------------+-------+------+
我們新創(chuàng)建的network,net2有自己的namespace,這個(gè)namespace與net1是分離的。在namespace中,我們可以看到兩個(gè)網(wǎng)絡(luò)接口,一個(gè)local,一個(gè)是用于DHCP服務(wù)。
# ip netns exec qdhcp-63b7fcf2-e921-4011-8da9-5fc2444b42dd ip addr 1: lo: mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 19: tap16630347-45: mtu 1500 qdisc noqueue state UNKNOWN link/ether fa:16:3e:bd:94:42 brd ff:ff:ff:ff:ff:ff inet 20.20.20.3/24 brd 20.20.20.255 scope global tap16630347-45 inet6 fe80::f816:3eff:febd:9442/64 scope link valid_lft forever preferred_lft forever
net1和net2兩個(gè)network沒有被聯(lián)通,我們需要?jiǎng)?chuàng)建一個(gè)router,通過router將兩個(gè)network聯(lián)通。Openstack Neutron向用戶提供了創(chuàng)建router并將兩個(gè)或多個(gè)network連接的能力。router其實(shí)只是一個(gè)額外的namespace。使用Neutron創(chuàng)建router可以通過GUI或者命令行操作:
# neutron router-create my-router Created a new router: +-----------------------+--------------------------------------+ | Field | Value | +-----------------------+--------------------------------------+ | admin_state_up | True | | external_gateway_info | | | id | fce64ebe-47f0-4846-b3af-9cf764f1ff11 | | name | my-router | | status | ACTIVE | | tenant_id | 9796e5145ee546508939cd49ad59d51f | +-----------------------+--------------------------------------+
現(xiàn)在我們將兩個(gè)netwrok通過router連接:
查看subnet的ID:
# neutron subnet-list
+--------------------------------------+------+---------------+------------------------------------------------+
| id | name | cidr | allocation_pools |
+--------------------------------------+------+---------------+------------------------------------------------+
| 2d7a0a58-0674-439a-ad23-d6471aaae9bc | | 10.10.10.0/24 | {"start": "10.10.10.2", "end": "10.10.10.254"} |
| 4a176b4e-a9b2-4bd8-a2e3-2dbe1aeaf890 | | 20.20.20.0/24 | {"start": "20.20.20.2", "end": "20.20.20.254"} |
+--------------------------------------+------+---------------+------------------------------------------------+將subnet 10.10.10.0/24添加到router:
# neutron router-interface-add fce64ebe-47f0-4846-b3af-9cf764f1ff11 subnet=2d7a0a58-0674-439a-ad23-d6471aaae9bc Added interface 0b7b0b40-f952-41dd-ad74-2c15a063243a to router fce64ebe-47f0-4846-b3af-9cf764f1ff11.
將subnet 20.20.20.0/24添加到router:
# neutron router-interface-add fce64ebe-47f0-4846-b3af-9cf764f1ff11 subnet=4a176b4e-a9b2-4bd8-a2e3-2dbe1aeaf890 Added interface dc290da0-0aa4-4d96-9085-1f894cf5b160 to router fce64ebe-47f0-4846-b3af-9cf764f1ff11.
此時(shí),我們?cè)诓榭淳W(wǎng)絡(luò)拓?fù)鋾?huì)發(fā)現(xiàn)兩個(gè)網(wǎng)絡(luò)被router打通:

我們還可以發(fā)現(xiàn)兩個(gè)網(wǎng)絡(luò)接口連接到router,作為各自subnet的gateway。
我們可以看到為router創(chuàng)建的namespace。
# ip netns list qrouter-fce64ebe-47f0-4846-b3af-9cf764f1ff11 qdhcp-63b7fcf2-e921-4011-8da9-5fc2444b42dd qdhcp-5f833617-6179-4797-b7c0-7d420d84040c
我們進(jìn)入namespace內(nèi)部可以看到:
# ip netns exec qrouter-fce64ebe-47f0-4846-b3af-9cf764f1ff11 ip addr 1: lo: mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 20: qr-0b7b0b40-f9: mtu 1500 qdisc noqueue state UNKNOWN link/ether fa:16:3e:82:47:a6 brd ff:ff:ff:ff:ff:ff inet 10.10.10.1/24 brd 10.10.10.255 scope global qr-0b7b0b40-f9 inet6 fe80::f816:3eff:fe82:47a6/64 scope link valid_lft forever preferred_lft forever 21: qr-dc290da0-0a: mtu 1500 qdisc noqueue state UNKNOWN link/ether fa:16:3e:c7:7c:9c brd ff:ff:ff:ff:ff:ff inet 20.20.20.1/24 brd 20.20.20.255 scope global qr-dc290da0-0a inet6 fe80::f816:3eff:fec7:7c9c/64 scope link valid_lft forever preferred_lft forever
我們看到兩個(gè)網(wǎng)絡(luò)接口,“qr-dc290da0-0a“ 和 “qr-0b7b0b40-f9。這兩個(gè)網(wǎng)絡(luò)接口連接到OVS上,使用兩個(gè)network/subnet的gateway IP。
# ovs-vsctl show 8a069c7c-ea05-4375-93e2-b9fc9e4b3ca1 Bridge "br-eth3" Port "br-eth3" Interface "br-eth3" type: internal Port "eth3" Interface "eth3" Port "phy-br-eth3" Interface "phy-br-eth3" Bridge br-ex Port br-ex Interface br-ex type: internal Bridge br-int Port "int-br-eth3" Interface "int-br-eth3" Port "qr-dc290da0-0a" tag: 2 Interface "qr-dc290da0-0a" type: internal Port "tap26c9b807-7c" tag: 1 Interface "tap26c9b807-7c" type: internal Port br-int Interface br-int type: internal Port "tap16630347-45" tag: 2 Interface "tap16630347-45" type: internal Port "qr-0b7b0b40-f9" tag: 1 Interface "qr-0b7b0b40-f9" type: internal ovs_version: "1.11.0"
我們可以看到,這些接口連接到”br-int",并打上了所在network對(duì)應(yīng)的VLAN標(biāo)簽。這里我們可以通過gateway地址(20.20.20.1)成功的ping通router namespace:

我們還可以看到IP地址為20.20.20.2可以ping通IP地址為10.10.10.2的虛擬機(jī):

兩個(gè)subnet通過namespace中的網(wǎng)絡(luò)接口互相連通。在namespace中,Neutron將系統(tǒng)參數(shù)net.ipv4.ip_forward設(shè)置為1。命令查看如下:
# ip netns exec qrouter-fce64ebe-47f0-4846-b3af-9cf764f1ff11 sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1
我們可以看到namespace中的系統(tǒng)參數(shù)net.ipv4.ip_forward被設(shè)置,這種設(shè)置不會(huì)對(duì)namespace外產(chǎn)生影響。
創(chuàng)建router時(shí),Neutron會(huì)創(chuàng)建一個(gè)叫qrouter-的namespace。subnets通過OVS的br-int網(wǎng)橋上的網(wǎng)絡(luò)接口接入router。網(wǎng)絡(luò)接口被設(shè)置了正確的VLAN,從而可以連入它們對(duì)應(yīng)的network。例子中,網(wǎng)絡(luò)接口qr-0b7b0b40-f9的IP被設(shè)置為10.10.10.1,VLAN標(biāo)簽為1,它可以連接到“net1”。通過在namespace中設(shè)置系統(tǒng)參數(shù)net.ipv4.ip_forward為1,從而允許路由生效。
關(guān)于如何使用network namespace創(chuàng)建一個(gè)router就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
新聞標(biāo)題:如何使用networknamespace創(chuàng)建一個(gè)router
標(biāo)題鏈接:http://www.chinadenli.net/article12/piiigc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、響應(yīng)式網(wǎng)站、品牌網(wǎng)站建設(shè)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)