IPTABLES中DNAT和REDIRECT之间的区别


14

好的,可能是因为我很忙,或者可能只是找不到正确的来源,但我不明白为什么这些IPTABLES设置之一会比另一个更好。

这是我的设置:

我有一个盒子充当透明代理和路由器或排序。它具有两个接口,ETH0和ETH1,以及以下地址方案:

ETH0 = DHCP ETH1 = 192.168.5.1/24为LAN中位于其后的客户端的192.168.5.0/24网络提供DHCP服务

我已安装privoxy,并在端口8080上侦听作为透明代理。我通过此设置完成的工作是,能够以最少的配置将此盒子放入现有网络,并将客户端附加到代理。

这是我的原始IPTABLES文件

*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT

此配置工作正常,流量来回毫无问题。我在privoxy日志文件中获得了原始客户端的IP地址,生活很顺利。

当我开始查看其他人的配置并看到他们使用DNAT而不是REDIRECT时,我感到困惑。我试图理解一个人的真正好处。这是一个示例配置:

*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to 192.168.5.1:8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT

同样,此配置也可以使用,并且从日志记录的角度来看,它满足了我的所有需求...

哪个是对的,或者比另一个更对?

感谢您抽出宝贵的时间阅读本文...

Answers:


14

REDIRECT更改目标IP地址以发送到机器本身。换句话说,本地生成的数据包将映射到127.0.0.1地址。用于重定向本地数据包。如果您只想在本地计算机上的服务之间重定向流量,这将是一个不错的选择。

DNAT是实际的网络地址转换。如果您希望更改发往本地系统之外的数据包的目标,则最好选择两者,因为REDIRECT这是行不通的。


好的,如果我有一个客户端坐在代理后面,例如在192.168.5.234上说,并且我想通过192.168.5.1上的代理“处理”其HTTP请求,则建议我应该将DNAT出站端口80流量发送到192.168 .5.1:8080。我可以买,但是为什么?一旦流量通过默认的Internet网关离开代理的ETH0后,如何处理流量,这与它有关吗?我需要做这个,否则我的头会爆炸
QWade 2010年

2
当数据包通过防火墙时,DNAT更改地址,以便其到达所需的主机,反之,则似乎是来自防火墙。DNAT几乎永远不会应用于出站流量,这是由MASQUERADE规则处理的。如果privproxy在另一台主机上,则DNAT将是适当的,但该主机除外。
BillThor

比尔,谢谢。那就是我的爬行动物大脑去的地方,但是进行验证总是很高兴。因此,如果我从192.168.5.234 发送去往google.com的数据包,并且将其默认gw设置为192.168.5.1(代理上的eth1),则应将该数据包“重定向”到代理上的端口8080,并让privoxy执行其余的部分。这样做的原因是因为privoxy位于192.168.5.1而不是另一个主机上。我在抽我不该抽的东西吗?
QWade 2010年

9

REDIRECT确实更改了要发送到机器本身的目标IP地址,由Warner @回答。但是我会说答案并不完全正确,或者有些误导。

REDIRECT不仅用于重定向本地数据包。真的DNAT,要使用的目标IP地址是隐式的;如果是本地数据包,则为127.0.0.1;否则为机器接口的IP地址;对于OP,则为192.168.5.1。

因此,在这个问题中,无论最终目的地是什么,数据包都应首先到达代理,因此 REDIRECT非常适合。

由于REDIRECT不需要指定IP地址,因此只需使用正确的IP地址,它具有以下优点DNAT

  • 如果计算机的IP地址由于任何原因而更改,则无需修改规则,尤其是 DNAT不适用于DHCP控制的接口。

  • 您可以为多个系统(例如,多个代理实例)编写和维护相同的规则,而不必因为特定的IP地址而保留略有不同的版本。


有点像小插曲/化妆舞会。
Jichao

@Hod,我听说REDIRECT是DNAT的特例,但是我使用REDIRECT,并且TOR知道数据包的实际目的地,因此我得出结论:iphdr和tcphdr结构的daddr和dport完好无损,并且该数据包只是通过以下方式返回到REDIRECT目的地:核心。DNAT实际上会修改结构。我错了吗?
威克
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.