美文网首页虚拟化技术
lesson1 ovs conntrack实现单向ip通讯

lesson1 ovs conntrack实现单向ip通讯

作者: 近墨者也 | 来源:发表于2017-11-17 15:38 被阅读47次


拓扑图

目标

使用ovs构建出以上的网络拓扑结构,通过配置流表,使用conntrack实现以下功能

    1.vm1可以ping通vm2

    2.vm2不可ping通vm1

实验环境

CentOS Linux release 7.2.1511 (Core)

构建基础环境

git clone https://github.com/cao19881125/ovn_lab.git

cd ovn_lab/docker

docker build -t ovn_lab:v1 .

yum install package/openvswitch-kmod-2.7.90-1.el7.centos.x86_64.rpm


启动容器

cd ovn_lab

OVN_LAB_DIR=`pwd` docker run -it -d --privileged -v $OVN_LAB_DIR/lesson:/root/ovn_lab/lesson --name 'ovn_lab' ovn_lab:v1 bash

docker exec -it ovn_lab bash

创建网络拓扑

start_ovs.sh

/root/ovn_lab/lesson/list/lesson1/create_topo.sh

添加流表

ovs-ofctl add-flow br-int table=0,priority=100,arp,action=normal

ovs-ofctl add-flow br-int table=0,priority=100,ip,ct_state=-trk,action=ct\(table=1\)

ovs-ofctl add-flow br-int table=1,in_port=1,ip,ct_state=+trk+new,action=ct\(commit\),2

ovs-ofctl add-flow br-int table=1,in_port=1,ip,ct_state=+trk+est,action=2

ovs-ofctl add-flow br-int table=1,in_port=2,ip,ct_state=+trk+new,action=drop

ovs-ofctl add-flow br-int table=1,in_port=2,ip,ct_state=+trk+est,action=1

测试

vm1 ping vm2

# ip netns exec vm1 ping 10.0.0.20

PING 10.0.0.20 (10.0.0.20) 56(84) bytes of data.

64 bytes from 10.0.0.20: icmp_seq=1 ttl=64 time=0.314 ms

64 bytes from 10.0.0.20: icmp_seq=2 ttl=64 time=0.217 ms

vm2 ping vm1

# ip netns exec vm2 ping 10.0.0.10 -w 3

PING 10.0.0.10 (10.0.0.10) 56(84) bytes of data.

--- 10.0.0.10 ping statistics ---

4 packets transmitted, 0 received, 100% packet loss, time 2999ms

流表解析

1. table=0,arp,action=normal

    允许arp协议通过

2. table=0,priority=100,ip,ct_state=-trk,action=ct(table=1)

    untrack状态的ip包送到conntrack并处理后发到1表

3. table=1,in_port=1,ip,ct_state=+trk+new,action=ct(commit),2 

    vm1进来的new状态的ip包commit到conntrack并发到2端口

4. table=1,in_port=1,ip,ct_state=+trk+est,action=2

    vm1进来的est状态的包发到2端口

5. table=1,in_port=2,ip,ct_state=+trk+new,action=drop

    vm2进来的new状态的包直接drop

6. table=1,in_port=2,ip,ct_state=+trk+est,action=1

    vm2进来的est状态的包发到1端口

相关文章

  • lesson1 ovs conntrack实现单向ip通讯

    目标 使用ovs构建出以上的网络拓扑结构,通过配置流表,使用conntrack实现以下功能 1.vm1可以ping...

  • ovs conntrack及nat

    本文分析ovs中对conntrack的支持,分为命令行解析ct action及ovs-vswitchd端对conn...

  • lesson3 ovs使用conntrack实现snat

    目标 vm1和vm2分属两个网络 在br-int流表中使用conntrack实现vm1->vm2的snat 实验环...

  • 复习4

    组件通讯之slot 组件通讯是单向的数据流: 计算属性:主要通过computed关键字实现 通过逻辑计算,得到的一...

  • IP Phone (微信语音聊天)也就是使用网络进行通话(视频?

    IP电话(IP phone) :通过互联网或其他使用IP技术的网络来实现电话通讯的。(一种全新的技术,简历在IP技...

  • 链表

    一、单向链表 单向链表的普通实现 Java实现: Kotlin实现: 单向链表的递归实现 Java实现: 二、双向...

  • SocketDemo,实时通讯

    实时通讯简化相互通讯,俗称QQ,先输入IP地址进行相互连接,在进行内容相互传递。 步骤 Socket实现通讯的步骤...

  • vpp vs ovs

    vpp 和 ovs 类似,都是sdn方案,也都支持vpc,比如基于vxlan实现。 vpp的性能比原生ovs性能好...

  • ovs+dpdk 三级流表(microflow/megaflow

    本文介绍在ovs+dpdk下,三级流表的原理及其源码实现。普通模式ovs的第一和二级流表原理和ovs+dpdk下的...

  • OVS-各版本关键功能

    OVS 1.0 GRE tunneling OVS 1.1 Qos OVS 1.10 VXLAN OVS 2.2 ...

网友评论

    本文标题:lesson1 ovs conntrack实现单向ip通讯

    本文链接:https://www.haomeiwen.com/subject/lrdjvxtx.html