Dnat VS Redirect VS Tproxy

2020-02-15  本文已影响0人  clive0x

最近在看Envoy文档,看到Tproxy不认识,找资料记录一下:

Dnat:通过iptable nat表变更目标IP和PORT,需要修改数据包,走IPTABLE需要过内核。

Redirect:特殊的Dnat,只变更目标端口,这种场景下只有两台机器通讯。

TPROXY:开启TCP/IP IP_TRANSPARENT标志,数据在两个SOCKTS间复制,proxy服务器连接如下:

proxy_ip:proxy_port                                 downstream_ip:downstream_port (pid=xxx,fd=5)

downstream_ip:downstream_port            upstream_ip:upstream_port(pid=xxx,fd=6)

关键在与upstream host连接时,使用downstream ip and port,just like proxy (envoy) not exits.

这种场景不走kernel,不需要开启ip_forward,不需要开启connection_tracking。

Envoy文档提及SO_ORIGINAL_DST TCP/IP SO OPTIONS,这个参数只能用于DNAT及其变种REDIRECT模式,不能用于TPROXY模式。用于获取需要重定向的目标地址。

source http://gsoc-blog.ecklm.com/iptables-redirect-vs.-dnat-vs.-tproxy/

上一篇下一篇

猜你喜欢

热点阅读