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

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

直接挂上处理就好了
linux1orange
2022-03-02 14:22:07 +08:00
@chocolatesir 是的 纯小白不知道咋动手,在 github 找了两个别人做的,结果内核版本不同,然后去降,发现没有指定的内核版本。现在准备看 Linux 网络编程那本书,上面有一个实例。真不知道如何开始了。。。
linux1orange
2022-03-02 14:23:47 +08:00
@tomychen 我不太懂。。。就没啥思路,知道一些理论啥的,但不知道咋下手。。。
linux1orange
2022-03-02 14:24:55 +08:00
@hefish 需要参考些啥知识内容。。。
linux1orange
2022-03-02 14:25:58 +08:00
@PbCopy111 不是啊,就还是自己做,但是不知道到底做出个啥出来,参考哪些知识内容。。。
linux1orange
2022-03-02 14:28:51 +08:00
就是需要准备些啥,用啥工具这些。
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
2022-03-02 16:48:37 +08:00
@tomychen 是的,完全没接触过。。。都不知道咋搞,大概知道是自己编写模块然后加载进内核。。。但是,现在最困惑的是,不知道第一步做啥,是做个界面还是啥的以及用啥工具选环境啥的。。。真的好懵。。
hefish
2022-03-02 21:05:34 +08:00
非 985,211 本科毕业,应该是做个 gui 就算完了吧。用 gui 调用 iptables ,完成 防火墙规则的设置。
具体哪些种类的规则,可以参考现有的商用防火墙。别用不着全部都实现啊,挑简单的实现。
yanqiyu
2022-03-03 09:56:05 +08:00
要基于 Netfilter 架构岂不是要写内核模块,并且自己实现 conntrack 这些基础设施?这事情不简单啊
Shiweizhi
2022-03-12 11:09:22 +08:00
可能需要了解怎么写内核模块,然后把 Netfilter 相关的东西加进来,可能还需要写用户程序和内核模块交互

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/836555

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX