资讯专栏INFORMATION COLUMN

Cisco思科网络插件Contiv (四) 网络策略实践

jackzou / 1497人阅读

摘要:网络策略的作用可以通过网络策略来限制容器之间的访问行为,以实现用户对安全性的方面的要求。搭建过程环境准备参考思科网络插件一环境部署搭建环境,由于本文并不关注网络的跨主机特性,因此只在一台宿主机上启动进程和进程就够了。

网络策略的作用

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

创建 Policy
root@node-1:/home/yc/workspace# netctl --netmaster http://172.16.112.128:9999  policy create web-policy
Creating policy default:web-policy 

创建名为web-policyPolicyPolicy的名字在租户(tenant)的命名空间(namespace)是唯一的,这里没有指定tenant参数, 因此使用的是 default 租户

添加 rule

Policy创建后是空的,我们还需要为Policy添加规则(rule). 一个Policy可以包含多个rule,最终的行为也是这些rule的叠加。每条rule包含以下信息:

match criteria匹配规则,定义了rule的入口条件,满足匹配规则的报文将执行设定的行为action, 匹配条件包括protocolportip-address

 `protocol`可选参数为**TCP**、**UDP**、**ICMP**
 `port`为需要允许或禁止的端口号
 `ip-address`为出方向流量的目的**IP**,或者入方向流量的源**IP**

direction 可选参数为inboundoutbound,分别代表入方向和出方向的规则

action 可选参数为allowdeny

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端口

首先创建 groupAgroupB

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 groupBtcp/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命令可以看到容器分配的IP10.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容器, 分别指定使用groupAgroupB网络, 尝试访问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生效

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27526.html

相关文章

  • Cisco思科网络插件Contiv (二) Master实现原理

    摘要:在当前版本中会注册和两个服务,前者开放端口供控制整个系统,后者开放端口供控制器使用。 Contiv网络结构 showImg(http://contiv.github.io/assets/images/Contiv-HighLevel-Architecture-a619d55a.png); 上图为Contiv的网络模型,大体上可分为Master和Host Agent两个组件,其中Mast...

    Pluser 评论0 收藏0
  • Cisco思科网络插件Contiv (三) Plugin 实现原理

    摘要:网络结构上图为的网络模型,大体上可分为和两个组件其中运行在每台宿主机上主要负责与交互实现插件逻辑配置底层进程实现具体的网络功能组件是与交互的核心逻辑以常用的为例该逻辑即是实现框架下所规定的种种接口实现与的消息交互关于和请查看与框架与实现同 Contiv网络结构 showImg(https://segmentfault.com/img/remote/1460000017001034?w=...

    DevTalking 评论0 收藏0
  • Cisco思科网络插件Contiv (一) 安装

    摘要:什么是官网是一个用于跨虚拟机裸机公有云或私有云的异构容器部署的开源容器网络架构。作为业界最强大的容器网络架构,具有层层和模式,能够与思科基础设施进行本地集成,并使用丰富的网络和安全策略将应用意图与基础设施功能进行映射。 什么是Contiv Contiv (官网)是一个用于跨虚拟机、裸机、公有云或私有云的异构容器部署的开源容器网络架构。作为业界最强大的容器网络架构,Contiv具有2层、...

    EasonTyler 评论0 收藏0
  • 基于OVN的Kubernetes网络架构解析

    摘要:它最基本的功能是实现了虚拟交换机,可以把虚拟网卡和虚拟交换机的端口连接,这样一个交换机下的多个网卡网络就打通了,类似的功能。最基础的分布式虚拟交换机,这样可以将多台机器上的容器组织在一个二层网络下,看上去就好像所有容器接在一台交换机上。 【编者的话】Kubernetes经过了几年的发展,存在着很多的网络方案。然而网络虚拟化在Kubernetes出现前就一直在发展,其中基于OpenVsw...

    dingding199389 评论0 收藏0
  • 当下最有价值的这18个云计算认证

    摘要:下面就让我们来看看你应该考虑哪些最受欢迎的云计算认证。是一个国际机构,负责推动云计算专业人员的标准培训和认证。目前,提供一个认证和五个云认证,范围从专业云管理员到专业云解决方案架构师。关于IT,如果说有一点可以肯定的,那就是投资云永远也不晚。随着云对IT和整个业务越来越重要,对云技能的需求也只会越来越大。但是,要证明你在这个竞争激烈的就业市场中具有所需的技能和知识,可能是一件很难的事情。如果...

    Bryan 评论0 收藏0

发表评论

0条评论

jackzou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<