iptables中的PREROUTING和FORWARD有什么区别?


16

我正在尝试了解该系统的工作方式,并且在了解使用NAT PREROUTING或过滤FORWARD之间的区别时遇到了问题。据我了解,PREROUTE可以将数据包发送到另一台服务器,而无需使用过滤器。如果NAT可以通过PREROUTE处理此问题,那么在过滤器中具有FORWARD规则的目的是什么?

Answers:


25

NAT表

该表仅应用于不同数据包上的NAT(网络地址转换)。换句话说,它仅应用于转换数据包的源字段或目标字段。

筛选表

过滤器表主要用于过滤数据包。我们可以匹配数据包并以我们想要的任何方式对其进行过滤。这是我们实际对数据包采取行动并查看其包含的内容并根据其内容进行DROP或/ ACCEPT的地方。当然,我们也可以事先进行过滤。但是,此特定表是设计过滤的地方。

表和链的遍历中,我们可以看到过滤器的FORWARD链仅由转发的数据包(来自网络并发往网络的数据包)遍历,即您的计算机像路由器一样工作,而nat的PREROUTING链则由转发的两个数据包遍历。数据包和目的地为本地主机的数据包。

您应该仅使用nat的PREROUTING来更改数据包的目标地址,而仅使用过滤器的FORWARD进行过滤(丢弃/接受数据包)。

如果我们在第一个路由决策中收到了一个不以本地机器本身为目的地的数据包,则它将通过FORWARD链进行路由。另一方面,如果该数据包指定用于本地计算机正在侦听的IP地址,则可以通过INPUT链将数据包发送到本地计算机。 在此处输入图片说明 数据包可能发往本地计算机,但是可以通过执行NAT在PREROUTING链中更改目标地址。由于这是在第一个路由决策之前发生的,因此将在此更改后查看数据包。因此,可以在完成路由决策之前更改路由。请注意,所有数据包都将通过此映像中的一条或另一条路径。如果您使用DNAT将数据包发回来自其的同一网络,则该数据包仍将通过链的其余部分传播,直到将其发回网络。


5

PREROUTING:此链用于在(PRE)发送任何数据包之前做出与路由相关的决定。始终记住,在PREROUTING/POSTROUTINGie NATACCEPT/DROP/REJECT中,默认FILTER表的etc目标将不起作用。该NAT表仅用于做出路由决策。PREROUTING在做出任何路由决策时(例如,在数据包开始遍历网络之前需要做出的决策),您应该使用。这是一个示例,我们将所有刚从端口80到达服务器的流量重定向到端口8080:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

FORWARD:顾名思义,FORWARD表链FILTER用于将数据包从源转发到目标,此处源和目标是两个不同的主机。因此,您可以想象FORWARD规则基本上是在服务器上使用的,其中一台主机通过服务器从另一台主机发送/接收流量。当从服务器生成数据包时,链OUTPUT即流量从其自身流出,而INPUT链则意味着数据包仅用于服务器本身。这是一个FORWARD链示例,其中在主机TCP接口上的端口80上接收的任何流量都将被接受并转发到:eth0192.168.0.4192.168.0.4

iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.0.4 -j ACCEPT

您对“主机”的使用似乎很奇怪。何时使用哪个表主要取决于程序包进入并打算退出的本地接口。
guntbert 2015年

哪一部分看起来很奇怪?我已经使用主机指示发送和接收方的概念..
heemayl

我谈论的是FORWARD段落:当通过一个接口进入的数据包发往另​​一个接口(而不是本地主机)时,将使用该表
guntbert 2015年

哦..ok ..我明白了....是的,我应该使用界面....只要使用主机就可以轻松描绘图片..当我站在电脑前时,我会改变这一点。
heemayl 2015年

@guntbert:直说吧。没有足够仔细地阅读您的最后评论。我认为您在FORWARD链的两个不同接口的上下文中弄错了。当数据包从局域网的一台主机传输到局域网的另一台主机时,数据包将仅通过单个接口,并且所使用的链路将是FORWARD严格的,尽管此处的服务器(介质)在严格意义上将不充当路由器而是可以认为是一个开关。
heemayl 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.