摘要:網絡策略的作用可以通過網絡策略來限制容器之間的訪問行為,以實現用戶對安全性的方面的要求。搭建過程環境準備參考思科網絡插件一環境部署搭建環境,由于本文并不關注網絡的跨主機特性,因此只在一臺宿主機上啟動進程和進程就夠了。
網絡策略的作用
Contiv可以通過網絡策略來限制容器之間的訪問行為,以實現用戶對安全性的方面的要求。比如,我可以限制容器僅對源IP在特定范圍的其他容器開放特定的端口,而拒絕其他IP地址的容器的訪問。
搭建過程 環境準備參考Cisco思科網絡插件Contiv (一) 環境部署搭建環境,由于本文并不關注Contiv網絡的跨主機特性,因此只在一臺宿主機上啟動master進程和plugin進程就夠了。
創建 contiv 網絡root@node-1:/home/yc/workspace# netctl --netmaster http://172.16.112.128:9999 network create --subnet=10.100.100.1/24 contiv-net Creating network default:contiv-net
創建網絡 contiv-net,指定子網范圍是10.100.100.1/24
創建 Policyroot@node-1:/home/yc/workspace# netctl --netmaster http://172.16.112.128:9999 policy create web-policy Creating policy default:web-policy
創建名為web-policy的Policy, Policy的名字在租戶(tenant)的命名空間(namespace)是唯一的,這里沒有指定tenant參數, 因此使用的是 default 租戶
添加 rulePolicy創建后是空的,我們還需要為Policy添加規則(rule). 一個Policy可以包含多個rule,最終的行為也是這些rule的疊加。每條rule包含以下信息:
match criteria 即匹配規則,定義了rule的入口條件,滿足匹配規則的報文將執行設定的行為action, 匹配條件包括protocol、port、ip-address
`protocol`可選參數為**TCP**、**UDP**、**ICMP** `port`為需要允許或禁止的端口號 `ip-address`為出方向流量的目的**IP**,或者入方向流量的源**IP**
direction 可選參數為inbound為outbound,分別代表入方向和出方向的規則
action 可選參數為allow或deny
priority指定該 rule 的優先級,默認是1,數值越大的rule優先級越高
from-group 設置rule生效的EndPoint組的名字(入方向)
to-group 設置rule生效的EndPoint組的名字(出方向)
from-network 設置rule生效的network的名字(入方向)
to-network 設置rule生效的network的名字(出方向)
舉例來說,我們要為我們的httpd容器設定以下行為:
容器屬于 groupA,開放tcp/80端口
只允許屬于 groupB 的容器訪問tcp/80端口
首先創建 groupA和 groupB
root@node-1:/home/yc/workspace# netctl --netmaster http://172.16.112.128:9999 group create contiv-net groupA -policy=web-policy Creating EndpointGroup default:groupA root@node-1:/home/yc/workspace# netctl --netmaster http://172.16.112.128:9999 group create contiv-net groupB -policy=web-policy Creating EndpointGroup default:groupB
創建 rule 1, 設置deny所有對tcp/80端口的訪問
root@node-1:/home/yc/workspace# netctl --netmaster http://172.16.112.128:9999 policy rule-add web-policy 1 -direction=in -protocol=tcp -port=80 -action=deny
創建 rule 2, 設置allow groupB 對tcp/80端口的訪問
root@node-1:/home/yc/workspace# netctl --netmaster http://172.16.112.128:9999 policy rule-add web-policy 1 -direction=in -protocol=tcp -port=80 -action=deny
查看設置的rule
root@node-1:/home/yc/workspace# netctl --netmaster http://172.16.112.128:9999 policy rule-ls web-policy Incoming Rules: Rule Priority From EndpointGroup From Network From IpAddress To IpAddress Protocol Port Action ---- -------- ------------------ ------------ --------- ------------ -------- ---- ------ 1 1 tcp 80 deny 2 10 groupB tcp 80 allow Outgoing Rules: Rule Priority To EndpointGroup To Network To IpAddress Protocol Port Action ---- -------- ---------------- ---------- --------- -------- ---- ------啟動 httpd 容器
root@node-1:/home/yc/workspace# docker run -itd --net=groupA --name=http-server httpd 4af399efa8646001599a3345231c5c34026139c5e2fd9012e1cdeff4b9dde71b
啟動名為http-server的容器,指定使用的網絡為groupA,啟動后通過docker network inspect命令可以看到容器分配的IP是10.100.100.1
root@node-1:/home/yc/workspace# docker network inspect groupA [ { "Name": "groupA", "Id": "20bcf90e8be6bb9c0dd4a5bcfdfa1812a91aab9bef137f60747b3ccc8602227a", "Created": "2018-09-30T09:12:58.292952948-07:00", "Scope": "global", "Driver": "netplugin", "EnableIPv6": false, "IPAM": { "Driver": "netplugin", "Options": { "group": "groupA", "network": "contiv-net", "tenant": "default" }, "Config": [ { "Subnet": "10.100.100.0/24" } ] }, "Internal": false, "Attachable": true, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": { "4af399efa8646001599a3345231c5c34026139c5e2fd9012e1cdeff4b9dde71b": { "Name": "http-server", "EndpointID": "935a57e40dc4d508cc254e6abe0b6b9ee5ae0a7dca7ec843c9dff146c8c5d859", "MacAddress": "02:02:0a:64:64:01", "IPv4Address": "10.100.100.1/24", "IPv6Address": "" } }, "Options": { "encap": "vxlan", "pkt-tag": "2", "tenant": "default" }, "Labels": {} } ]啟動 busybox 容器,訪問httpd
啟動兩個busybox容器, 分別指定使用groupA和groupB網絡, 嘗試訪問httpd容器的tcp/80端口
root@node-1:~# docker run -it --net=groupA --name=bbox-A busybox / # / # wget http://10.100.100.1:80 Connecting to 10.100.100.1:80 (10.100.100.1:80) wget: can"t connect to remote host (10.100.100.1): Connection timed out / #
root@node-1:~# docker run -it --net=groupB --name=bbox-B busybox / # / # wget http://10.100.100.1:80 Connecting to 10.100.100.1:80 (10.100.100.1:80) index.html 100% |***************************************************************************************************************************| 45 0:00:00 ETA / #
可見, bbox-B可以訪問httpd容器的tcp/80端口, 而bbox-A不能, 即Policy生效
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27526.html
摘要:在當前版本中會注冊和兩個服務,前者開放端口供控制整個系統,后者開放端口供控制器使用。 Contiv網絡結構 showImg(http://contiv.github.io/assets/images/Contiv-HighLevel-Architecture-a619d55a.png); 上圖為Contiv的網絡模型,大體上可分為Master和Host Agent兩個組件,其中Mast...
摘要:網絡結構上圖為的網絡模型,大體上可分為和兩個組件其中運行在每臺宿主機上主要負責與交互實現插件邏輯配置底層進程實現具體的網絡功能組件是與交互的核心邏輯以常用的為例該邏輯即是實現框架下所規定的種種接口實現與的消息交互關于和請查看與框架與實現同 Contiv網絡結構 showImg(https://segmentfault.com/img/remote/1460000017001034?w=...
摘要:什么是官網是一個用于跨虛擬機裸機公有云或私有云的異構容器部署的開源容器網絡架構。作為業界最強大的容器網絡架構,具有層層和模式,能夠與思科基礎設施進行本地集成,并使用豐富的網絡和安全策略將應用意圖與基礎設施功能進行映射。 什么是Contiv Contiv (官網)是一個用于跨虛擬機、裸機、公有云或私有云的異構容器部署的開源容器網絡架構。作為業界最強大的容器網絡架構,Contiv具有2層、...
摘要:它最基本的功能是實現了虛擬交換機,可以把虛擬網卡和虛擬交換機的端口連接,這樣一個交換機下的多個網卡網絡就打通了,類似的功能。最基礎的分布式虛擬交換機,這樣可以將多臺機器上的容器組織在一個二層網絡下,看上去就好像所有容器接在一臺交換機上。 【編者的話】Kubernetes經過了幾年的發展,存在著很多的網絡方案。然而網絡虛擬化在Kubernetes出現前就一直在發展,其中基于OpenVsw...
摘要:下面就讓我們來看看你應該考慮哪些最受歡迎的云計算認證。是一個國際機構,負責推動云計算專業人員的標準培訓和認證。目前,提供一個認證和五個云認證,范圍從專業云管理員到專業云解決方案架構師。關于IT,如果說有一點可以肯定的,那就是投資云永遠也不晚。隨著云對IT和整個業務越來越重要,對云技能的需求也只會越來越大。但是,要證明你在這個競爭激烈的就業市場中具有所需的技能和知識,可能是一件很難的事情。如果...
閱讀 2418·2021-10-11 10:57
閱讀 1274·2021-10-09 09:59
閱讀 1986·2019-08-30 15:53
閱讀 3206·2019-08-30 15:53
閱讀 1000·2019-08-30 15:45
閱讀 727·2019-08-30 15:44
閱讀 3432·2019-08-30 14:24
閱讀 946·2019-08-30 14:21