V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
linux1orange
V2EX  ›  Linux

如何设计一款 Linux 防火墙软件

  •  
  •   linux1orange · 2022-02-26 12:34:23 +08:00 · 3701 次点击
    这是一个创建于 1030 天前的主题,其中的信息可能已经有所发展或是发生改变。
    要求:基于 Netfilter 架构,设计一款 Linux 防火墙,实现连线跟踪、包处理、包过滤、地址转换四大功能。
    请问需要参考哪些内容
    14 条回复    2022-03-12 11:09:22 +08:00
    chocolatesir
        1
    chocolatesir  
       2022-02-26 17:03:19 +08:00
    这是要做毕业设计了?
    PbCopy111
        2
    PbCopy111  
       2022-02-27 09:15:00 +08:00
    我以前类似的问题,都直接研究 ipatables 的源代码,自己想。。现在可以直接问答案了啊。
    hefish
        3
    hefish  
       2022-02-27 21:27:52 +08:00
    感觉是给 iptables 做个 web gui 就成了。
    tomychen
        4
    tomychen  
       2022-02-28 15:58:03 +08:00
    netfilter 有现成的 INPUT/OUPUT/NAT/FORWARD 等五个钩子

    直接挂上处理就好了
    linux1orange
        5
    linux1orange  
    OP
       2022-03-02 14:22:07 +08:00 via iPad
    @chocolatesir 是的 纯小白不知道咋动手,在 github 找了两个别人做的,结果内核版本不同,然后去降,发现没有指定的内核版本。现在准备看 Linux 网络编程那本书,上面有一个实例。真不知道如何开始了。。。
    linux1orange
        6
    linux1orange  
    OP
       2022-03-02 14:23:47 +08:00 via iPad
    @tomychen 我不太懂。。。就没啥思路,知道一些理论啥的,但不知道咋下手。。。
    linux1orange
        7
    linux1orange  
    OP
       2022-03-02 14:24:55 +08:00 via iPad
    @hefish 需要参考些啥知识内容。。。
    linux1orange
        8
    linux1orange  
    OP
       2022-03-02 14:25:58 +08:00 via iPad
    @PbCopy111 不是啊,就还是自己做,但是不知道到底做出个啥出来,参考哪些知识内容。。。
    linux1orange
        9
    linux1orange  
    OP
       2022-03-02 14:28:51 +08:00 via iPad
    就是需要准备些啥,用啥工具这些。
    tomychen
        10
    tomychen  
       2022-03-02 15:25:54 +08:00
    额,好像是完全没接触过啊。netfilter 是基于内核模块处理的,也就是说你要弄一个 netfilter hook 的内核模块,在 netfilter 提供的 INPUT/OUTPUT PRE/POSTROUTING 里面实现 类似于 iptables 的 filter /nat/log 等功能,log/trace netfilter 并没有给出接口,而是自己从 pre 到 post 的流程记录一下应该算是个 trace 了吧。
    关键字
    netfilter kernel module
    随手扒拉了个 github 的例子
    https://github.com/wangm8/Netfilter-Kernel-Module
    linux1orange
        11
    linux1orange  
    OP
       2022-03-02 16:48:37 +08:00
    @tomychen 是的,完全没接触过。。。都不知道咋搞,大概知道是自己编写模块然后加载进内核。。。但是,现在最困惑的是,不知道第一步做啥,是做个界面还是啥的以及用啥工具选环境啥的。。。真的好懵。。
    hefish
        12
    hefish  
       2022-03-02 21:05:34 +08:00
    非 985,211 本科毕业,应该是做个 gui 就算完了吧。用 gui 调用 iptables ,完成 防火墙规则的设置。
    具体哪些种类的规则,可以参考现有的商用防火墙。别用不着全部都实现啊,挑简单的实现。
    yanqiyu
        13
    yanqiyu  
       2022-03-03 09:56:05 +08:00
    要基于 Netfilter 架构岂不是要写内核模块,并且自己实现 conntrack 这些基础设施?这事情不简单啊
    Shiweizhi
        14
    Shiweizhi  
       2022-03-12 11:09:22 +08:00
    可能需要了解怎么写内核模块,然后把 Netfilter 相关的东西加进来,可能还需要写用户程序和内核模块交互
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5834 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:18 · PVG 11:18 · LAX 19:18 · JFK 22:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.