如何在 iptables/netfilter 中解包隧道数据包并处理隧道数据包

如何在 iptables/netfilter 中解包隧道数据包并处理隧道数据包

我有一个关于 Linux netfilter/iptables 交互的具体问题。假设我有一个 IP 数据包 P1 位于另一个 IP 数据包 P2 中(也就是说,P1 是通过隧道传输的)。

现在的问题是:是否可以检查“外部”数据包 P2 的特定头字段(例如 MAC 源地址),然后根据某个 iptables 链将“内部”数据包 P1 发送到某个 iptables 链?检查的领域?

举个小例子:假设我在 FORWARD 表中有 3 个链,C1 到 C3。现在,如果 P2 的 MAC 源地址值为 17,我想将“内部”数据包 P1 发送到 C1。如果MAC源地址是28,我想将P1发送到C2。否则,我想将 P2 发送到 C3。

我绝对不确定是否可以在 iptables 中这样做。也许这也可以通过将一些 C 代码挂钩到特定的 netfilter 挂钩来实现。

我知道这是某种奇怪的用例,但我只是很好奇。

提前致谢!

相关内容