首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >透明代理如何知道DNATed数据包的原始目标地址?

透明代理如何知道DNATed数据包的原始目标地址?
EN

Unix & Linux用户
提问于 2022-09-10 17:18:36
回答 1查看 194关注 0票数 0

我有两台机器:机器A和机器B。A机通过机器B的所有流量。在机器A上,我设置了这些iptable规则:

代码语言:javascript
运行
复制
iptables -t nat -A PREROUTING -i wlan0 -j DNAT --to-destination 172.16.250.128
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

其中,tun0是在其IP范围内包含ip地址172.16.250.128的接口。现在,在机器A上接收的所有数据包都被路由到机器B,而不改变端口。

在机器B上,我在端口8080上设置了透明代理(mitmproxy、burpsuite等)和iptables规则:

代码语言:javascript
运行
复制
iptables -t nat -A PREROUTING -i ens33 -p tcp -j REDIRECT --to-ports 8080

其中,ens33 (ip 172.16.250.128)是连接到机器A上的接口tun0的接口。上面的规则将所有tcp数据包从该接口重定向到端口8080 --透明代理侦听的端口。所有操作都很好,所有TCP数据包都是通过透明代理路由的。

但我不确定透明代理如何知道数据包的原始目的地(地址和端口)?我发现了一个问题:链接,它说iptables在修改目标之前保存了原始目的地。现在,我了解透明代理是如何知道原始端口的。但是目的地地址呢?由于目标地址是在机器A上修改的,我认为机器B和它的内部不应该知道原来的目的地地址,因为机器B没有修改它,对吗?但是,它仍然能够以某种方式获得发送到wlan0接口的数据包的原始目的地地址,该接口被路由到透明代理。我之所以知道,是因为透明的代理显然正确地将数据包路由到原始目的地(Internet上的目的地)。

机器B如何知道DNATed (修改的目的地)数据包的原始目的地?原始目的地是否也通过网络发送?我在wireshark没有看到它。1:透明短袜代理如何知道要使用哪个目标IP?

EN

回答 1

Unix & Linux用户

发布于 2022-09-10 17:40:15

您很想知道“透明代理在服务器B上如何知道数据包的原始目的地”。它不能,因为您在服务器A上重写了源(MASQUERADE)和目标(DNAT)。就服务器B而言,流量起源于服务器A,为服务器B寻址。

当通信量回复被发送回服务器A时,它知道如何撤消DNAT/伪装,以便将它们发送到原始的真实源。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/716832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档