【发布时间】:2015-01-08 15:05:14
【问题描述】:
我刚刚阅读了in these answers 关于在 linux 中开发数据包过滤器的两个选项。
第一个是使用 iptables 和 netfilter,可能与 NFQUEUE 和 libnetfilter_queue 库一起使用。
第二个是使用 BPF(伯克利数据包过滤器),快速阅读它似乎具有类似的过滤功能。
那么,这些替代方案中的哪一个是创建数据包过滤器的更好方法?有什么区别?我的软件将作为网关代理或“中间人”运行,它应该从一台计算机接收数据包(目标地址到另一台计算机,而不是过滤器的本地地址),并在一段时间后将其发送出去过滤。
非常感谢!
【问题讨论】:
-
我可能会选择 netfilter/iptables,因为从架构的角度来看,我认为它比 B/PF 更好。举个例子,我喜欢 netfilter 上带有 {PRE|POST}ROUTING 链的翻译顺序,因为它们不会与防火墙链/规则冲突,而 BFP 的相反,这种顺序很奇怪。
-
谢谢。顺便说一句,如果我想发布一个“开箱即用”的软件(不需要像设置防火墙规则这样的操作系统配置,而只是一种简单的安装),使用 bpf 不是更好吗?但是,我需要更多关于差异的信息,因为这不是主要考虑因素
-
也许,它更简单,但这并不总是好的。
-
顺便说一句,BPF 中的开发也很简单还是只是架构?
标签: linux iptables netfilter bpf