V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
calisto
V2EX  ›  编程

C 语言实现操作 tcp 数据包?

  •  
  •   calisto · 2017-03-02 17:56:04 +08:00 · 3804 次点击
    这是一个创建于 2852 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想法是这样的,在 linux 上创建一个网桥,数据包从 eth0 入, eth1 出, br0 绑定这两个网口。把从 eth0 进来的流量导到本地的 9001 端口,对 9001 端口的包分析里面的请求,完了之后重 eth1 出去
    15 条回复    2017-04-06 09:46:19 +08:00
    paw
        1
    paw  
       2017-03-02 18:13:49 +08:00
    为啥要导到 9001 上?
    如果只是要分析数据包,不做修改,直接 libpcap 抓包就是了。
    eth0 转到 eth1 ,用 iptables 规则应该可以实现。
    redsonic
        2
    redsonic  
       2017-03-02 20:10:59 +08:00
    用内核的 netfilter 框架可以随便搞
    julyclyde
        3
    julyclyde  
       2017-03-02 20:51:53 +08:00
    首先, TCP 是流
    jedihy
        4
    jedihy  
       2017-03-03 02:38:54 +08:00
    @julyclyde 流就没有数据包了?
    calisto
        5
    calisto  
    OP
       2017-03-03 09:34:45 +08:00
    @paw 分析数据包,要按规则拒绝某些请求
    paw
        6
    paw  
       2017-03-03 10:04:48 +08:00
    @calisto 好说啊,分析发现需要拒绝的了,直接往两个方向都扔一个 RST ,完事......学学 GFW ,依然不需要导流什么的

    等等,你是在自己实现 GFW 吗?

    如果你是要实现硬件防火墙、 DDOS 流量清洗之类的功能,只能上 Kernel bypass 了, https://blog.cloudflare.com/kernel-bypass/ 脱离内核协议栈,直接从网卡拿原始包,然后数据包怎么转 /去或留都是你说的算了。
    calisto
        7
    calisto  
    OP
       2017-03-03 10:06:55 +08:00
    @redsonic freebsd 也有 netfilter ?
    calisto
        8
    calisto  
    OP
       2017-03-03 10:08:03 +08:00
    @paw 类似!可是要审计到 7 层
    calisto
        9
    calisto  
    OP
       2017-03-03 10:15:11 +08:00
    @paw 实现 waf ,网桥透传
    paw
        10
    paw  
       2017-03-03 12:44:27 +08:00
    @calisto 那就用 DPDK 开发呗,我现在做的东西也是类似的,可行性不用担心肯定可以
    julyclyde
        11
    julyclyde  
       2017-03-03 15:31:00 +08:00
    @jedihy 你按包来改回导致后续的序列号、长度匹配不上,然后就被 DROP 了
    calisto
        12
    calisto  
    OP
       2017-03-03 15:34:30 +08:00
    @paw 有资料么?借我参考一下 [email protected]
    paw
        13
    paw  
       2017-03-03 19:32:01 +08:00   ❤️ 1
    jedihy
        14
    jedihy  
       2017-03-04 15:00:57 +08:00
    @julyclyde 压根都不会改那些东西,只要做重定向
    calisto
        15
    calisto  
    OP
       2017-04-06 09:46:19 +08:00
    @paw THX
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1012 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:09 · PVG 07:09 · LAX 15:09 · JFK 18:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.