QWa*_*ade 16 routing proxy iptables
好吧,可能是因为我很密集,或者可能只是没有找到合适的来源,但我不明白为什么这些 IPTABLES 设置中的一个会比另一个更好。
这是我的设置:
我有一个用作透明代理和路由器的盒子。它上面有两个接口,ETH0和ETH1,地址方案如下:
ETH0 = DHCP ETH1 = 192.168.5.1/24 为 192.168.5.0/24 网络的 DHCP 服务在 LAN 后面的客户端
我安装了 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
Run Code Online (Sandbox Code Playgroud)
此配置工作正常,流量来回流动没有问题。我在 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
Run Code Online (Sandbox Code Playgroud)
同样,此配置也有效,并从日志记录的角度为我提供了所需的一切......
哪个是正确的,或者可能比另一个更正确?
感谢您花时间阅读到这里...
War*_*ner 18
REDIRECT
更改目标 IP 地址以发送到机器本身。换句话说,本地生成的数据包被映射到 127.0.0.1 地址。它用于重定向本地数据包。如果您只想重定向本地机器上服务之间的流量,这将是一个不错的选择。
DNAT
是实际的网络地址转换。如果您希望以本地系统外部为目的地的数据包更改目的地,则这是两者中更好的选择,因为REDIRECT
不起作用。
小智 13
REDIRECT
正如 Warner@ 所回答的那样,确实会更改目标 IP 地址以发送到机器本身。但我想说这个答案并不完全正确,或者有点误导。
REDIRECT
不仅仅是用于重定向本地数据包。实际上DNAT
,要使用的目标 IP 地址是隐式的,如果是本地数据包则为 127.0.0.1,否则为机器接口的 IP 地址,在 OP 的情况下为 192.168.5.1。
所以在这个问题中,无论最终目的地是什么,数据包都应该首先到达代理,所以REDIRECT
非常适合。
由于REDIRECT
您不需要指定 IP 地址,它只会选择正确的 IP 地址,因此它具有以下优势DNAT
:
如果机器的 IP 地址因任何原因发生变化,您不需要修改规则,尤其是DNAT
不适用于 DHCP 控制的接口。
您可以为多个系统(例如多个代理实例)编写和维护相同的规则,而不会因为特定的 IP 地址而保留略有不同的版本。
归档时间: |
|
查看次数: |
49957 次 |
最近记录: |