我有一些“受信任的 IP”,我想允许它们以“最小的性能影响”完全访问我的机器。这 PREROUTING -t mangle
是数据包进入系统时要经过的第一个链。-j ACCEPT
在PREROUTING -t mangle
链中使用有效/允许吗?
我不确定这是否允许,因为 PREROUTING 链位于内部 ROUTING 之前(!!)。如果我在 PREROUTING 链中接受一个数据包,会发生什么情况?这个数据包是否仍然会被正确路由?还是 -j ACCEPT 会导致“绕过”路由?
答案1
不。你应该只在过滤器链中设置所有允许/拒绝。Mangle 旨在以某种方式更改数据包。
如果流量与一系列 IP 地址匹配,您可以使用 mangle 在流量上设置 fwmark,然后通过 fwmark 允许流量。
答案2
在 iptables 中,ACCEPT
基本上意味着“完成此链的处理,将数据包传递到下一个链”。
你不必须在 mangle 表中执行任何操作;路由将要无论你在那里做什么,都会发生这种情况。当然,只要你不丢弃数据包 :)
我认为以下页面将帮助您理解。它包含 2 个很好的图表,说明数据包如何遍历 netfilter/iptables 链。第一个更直观,第二个更规范(但遗憾的是过时了):
http://vinojdavis.blogspot.com/2010/04/packet-flow-diagrams.html