Lichen Liu

与其感慨路难行,不如马上出发

  • 主页
所有文章 友链 关于我

Lichen Liu

与其感慨路难行,不如马上出发

  • 主页

使用ct_state 实现出口放行防火墙

2020-05-15

openflow 本身没有定义连接状态,需要控制器做sdn 防火墙。但ovs 的实现中支持了conn track,可以利用Linux 的nf_conntrack(类似iptables)。

出口方向放行

第一条flow 是先用ct_state=-trk 匹配出所有的包,action=ct(table=0) 加上trk 再回到table 0继续处理。

第二条flow 匹配所有带有trk 标记且源地址为a.b.c.d(用于标示本地虚拟机)的”new”包,例如icmp ping,tcp 的主动握手包等,通过ct(commit) 创建nf_conntrack 项,并放行(normal)。

第三条flow 匹配所有已经被追踪并建立链接的包(无状态协议icmp,udp 等也可以正常被nf_conntrack 追踪),均放行。

1
2
3
# ovs-ofctl add-flow "cookie=0x100,icmp,ct_state=-trk,actions=ct(table=0)"
# ovs-ofctl add-flow "cookie=0x100,icmp,ct_state=+trk+new,nw_src=a.b.c.d actions=ct(commit),normal"
# ovs-ofctl add-flow "cookie=0x100,icmp,ct_state=+trk+est actions=normal"

入口方向放行

配置入口方向放行时第一条flow 已经做了对所有包添加trk,和放行+trk+est,因此入口放行只需要允许+trk+new,同样通过ct(commit) 建立nf_conntrack 项并normal 放行即可。nw_src 用于指定希望放行的对方地址,nw_dst 为本地虚拟机地址。

1
# ovs-ofctl add-flow "cookie=0x100,icmp,ct_state=+trk+new,nw_src=e.f.g.h/x,nw_dst=a.b.c.d actions=ct(commit),normal"
  • ovs

扫一扫,分享到微信

微信分享二维码
sk_buff 简介
/dev 下的null, zero, random等文件是怎么来的
© 2023 Lichen Liu
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链
  • 关于我

tag:

  • Linux
  • golang
  • xml
  • omitempty
  • test
  • art
  • AWS
  • Kernel
  • bonding
  • sk_buff
  • kernel
  • libvirt
  • libvirt-go
  • numa
  • ping
  • arp
  • 输入法
  • ovs
  • font
  • manjaro
  • 坑
  • 北京
  • 旅游

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 北京周末

    2023-03-22

    #北京#旅游

  • manjaro kde 升级后中文字体变成方块

    2021-02-18

    #font#manjaro#坑

  • sk_buff 简介

    2020-10-26

    #Linux#sk_buff#kernel

  • 使用ct_state 实现出口放行防火墙

    2020-05-15

    #ovs

  • /dev 下的null, zero, random等文件是怎么来的

    2020-03-07

    #Linux#Kernel

  • NUMA 内存策略 preferred 的效果

    2020-02-20

    #Linux#numa

  • 在linux kernel 源码中搜索syscall 的实现

    2020-02-20

    #Linux

  • 一次ping 遇到Invalid argument 报错的问题

    2020-02-11

    #Linux#ping#arp

  • Linux 网络bond mode 4 的xmit_hash_policy layer3+4 到底是如何hash 的

    2020-01-10

    #Linux#bonding

  • golang xml 如何忽略空结构体

    2020-01-09

    #golang#xml#omitempty

  • libvirt-go 的一个坑

    2020-01-07

    #golang#libvirt#libvirt-go

  • 在AWS 的Amazon Linux 上下载源码

    2019-12-23

    #Linux#AWS#Kernel

  • 中文测试

    2019-12-23

    #test#输入法

  • Hello world

    2019-12-18

    #test#art

  • 肥叉烧
  • 安全大手子
  • 物理学博士
  • 一个愣头青
普通上班族,会一点Linux, 想学SDN