首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在REDIRECT之后从iptables检索原始目的地

是指在使用iptables进行网络地址转发时,可以通过一些技巧来获取原始目的地的信息。下面是一个完善且全面的答案:

在iptables中,REDIRECT是一种用于端口转发的操作。当网络数据包到达某个端口时,可以使用REDIRECT将其重定向到另一个端口。然而,由于重定向后,数据包的目的地地址会被修改,因此无法直接获取原始目的地的信息。

为了解决这个问题,可以使用一些技巧来检索原始目的地。其中一种方法是使用TPROXY目标。TPROXY目标是iptables的一个扩展模块,它可以在转发数据包时保留原始目的地地址。

具体操作步骤如下:

  1. 首先,确保系统已加载了TPROXY模块。可以使用以下命令来加载模块:modprobe xt_TPROXY
  2. 接下来,创建一个iptables规则,将需要重定向的数据包标记为一个特定的标签。例如,可以使用以下命令将目标端口为80的数据包标记为"REDIRECT_ME":iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1
  3. 然后,创建一个ip规则,将标记为"REDIRECT_ME"的数据包重定向到目标端口,并保留原始目的地地址。例如,可以使用以下命令将标记为1的数据包重定向到端口8080:ip rule add fwmark 1 lookup 100 ip route add local 0.0.0.0/0 dev lo table 100 iptables -t mangle -A PREROUTING -p tcp -m mark --mark 1 -j TPROXY --on-port 8080 --on-ip 127.0.0.1 --tproxy-mark 0x1/0x1
  4. 最后,可以在重定向的目标端口上监听并获取原始目的地地址。

这种方法可以在进行网络地址转发时,通过TPROXY目标来保留原始目的地地址,从而实现在REDIRECT之后检索原始目的地的需求。

推荐的腾讯云相关产品:腾讯云服务器(CVM)和腾讯云弹性公网IP(EIP)。

  • 腾讯云服务器(CVM):提供高性能、可扩展的云服务器实例,可满足各种计算需求。详情请参考:腾讯云服务器
  • 腾讯云弹性公网IP(EIP):提供灵活的公网IP资源,可用于将云服务器与公网连接。详情请参考:腾讯云弹性公网IP
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Envoy请求流程源码解析(一)|流量劫持

其中边车模式为通过 iptable 进行流量劫持 拦截模式 Istio 支持两种拦截模式: REDIRECT:使用iptablesREDIRECT目标来拦截入站请求,转给Envoy,Linux2.6.15...无论采用哪种透明劫持方案,均需要解决获取真实目的 IP / 端口的问题,使用 iptables 方案通过 getsockopt 方式获取,tproxy 可以直接读取目的地址。...关于为什么istio考虑inbound支持tproxy模式 如果我们是服务端,那么 SYN 包到达的时候, POSTROUTING 链的 NAT 表执行过之后(可能做 DNAT 或者 REDIRECT...当收到上游回包的时候,不会过 PREROUTING 的 NAT 表,而是直接根据 conntrack 复原为原始 IP 地址,然后直接 FORWARD->POSTROUTING(不会过 NAT 表)送回原始客户端...目前 Istio 使用 iptables 实现透明劫持,由于需要借助于 conntrack 模块实现连接跟踪,连接数较多的情况下,会造成较大的消耗,同时可能会造成 track 表满的情况,为了避免这个问题

1.4K20

Iptablesl nat转发规则

作出路由之前,对目的地址进行修改  POSTROUTING:SNAT、MASQUERADE (路由之后)只支持-o,不支持-i。...作出路由之后,对源地址进行修改  OUTPUT:DNAT 、REDIRECT   (本机)DNAT和REDIRECT规则用来处理来自NAT主机本身生成的出站数据包. 一、打开内核的路由功能。    ...所有eth0(外网卡)出来的数据包的源地址改成61.99.28.1(这里指定了一个网段,一般可以不指定)  [root@localhost]# iptables -t nat -A POSTROUTING...路由之前所有eth0(内网卡)进入的目的端口为53的数据包,都发送到1.2.3.4这台服务器解析。  ... 1.2.3.4:53 4)REDIRECT:重定向,这个squid透明代理时肯定要用到它  所有eth1进入的请求80和82端口的数据,被转发到80端口,由squid处理。

1.2K20
  • iptables关键学习总结

    -1.1.19.htm iptables匹配原则:序列号为1的开始匹配,直到匹配到第一条合适的规则并执行,后续规则即使能够匹配也不再执行 iptables规则顺序:将经常会被匹配到的规则放在表前面 报文传输顺序严格遵循下图...175.24.0.59 0.0.0.0/0    但如果规则如下明确表示拒绝175.24.0.59,则不会接收175.24.0.59的报文,注意新加的规则是原规则之后而不是之前 host...iptables 使用-i匹配报文是通过哪块网卡流入本机,使用-o来匹配报文哪个网口流出。...REDIRECT用于本机进行端口映射,只能用于nat表的PREROUTING、OUTPUT,如iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT...DNAT 是明确指定修改目的地址,而 REDIRECT 会把要转发的包的目的地址改写为入口接口的 IP 地址,即接收到的所有报文的目的地址都会被修改为入接口的IP,同时端口也会被修改。

    67910

    iptable端口重定向 MASQUERADE

    作出路由之前,对目的地址进行修改 POSTROUTING:SNAT、MASQUERADE (路由之后)只支持-o,不支持-i。...作出路由之后,对源地址进行修改 OUTPUT:DNAT 、REDIRECT (本机)DNAT和REDIRECT规则用来处理来自NAT主机本身生成的出站数据包. 一、打开内核的路由功能。...二、nat不同动作的配置 1)MASQUERADE:是动态分配ip时用的IP伪装:nat表的POSTROUTING链加入一条规则:所有ppp0口送出的包会被伪装(MASQUERADE) [root...路由之前所有eth0(内网卡)进入的目的端口为53的数据包,都发送到1.2.3.4这台服务器解析。...1.2.3.4:53 4)REDIRECT:重定向,这个squid透明代理时肯定要用到它 所有eth1进入的请求80和82端口的数据,被转发到80端口,由squid处理。

    10.9K41

    KubeCon 2021|使用 eBPF 代替 iptables 优化服务网格数据面性能

    iptables 将入流量重定向到 15006 端口,也就是 envoy 的 VirtualInboundListener,envoy 会根据请求的原始目的地址转发到应用程序的指定端口 Outbound...iptables 将出流量重定向到 15001 端口,也就是 envoy 的 VirtualOutboundListener,envoy 会根据请求的原始目的地址以及 Host URL 等信息路由到指定后端...对比 iptables 和 eBPF 对入流量的劫持,iptables 方案每个包都需要 conntrack 处理,而 eBPF 方案只有应用程序调用 bind 时执行一次,之后不会再执行,减少了性能开销...,同时将连接的原始目的地址保存在 sk_storage_map TCP 连接建立完成后,sockops 会读取 sk_storage_map 中的数据,并以四元组(源IP、目的IP、源端口、目的端口...)为 key 将原始目的地址保存在 origin_dst_map _getsockopt通过劫持 getsockopt 系统调用,读取 origin_dst_map 中的数据将原始目的地址返回给 envoy

    2.7K115

    Istio 中通过 iptables 做流量拦截

    首先要有一个支持透明代理的 proxy,处理被劫持的流量,能够获取到连接建立时的原来的目的地址。 k8s 中这个 proxy 采用 sidecar 的方式和要劫持流量的服务部署一个 Pod 中。...要实现零侵入,最好不修改服务的镜像, k8s 中可以采用 Init 容器的方式应用容器启动之前做 iptables 的修改。...通过 iptables 将流量转发给 proxy 后,proxy 需要能够获取到原来建立连接时的目的地址。... kubernetes 中一个 Pod 可以有多个容器,这多个容器可以共享网络,存储等资源,概念上将服务容器和 proxy 容器部署成一个 Pod,proxy 容器就相当于是 sidecar 容器。...,启动时会执行我们配置的 iptables 命令。

    1.2K30

    Istio服务网格细节剖析

    链上,目的地为 15090,15020,15021端口的流量除外,发送到以上两个端口的流量将返回 iptables 规则链的调用点,即 PREROUTING 链的后继 POSTROUTING。...为了避免流量该 Pod 中无限循环,所有到 istio-proxy 用户空间的流量都返回到它的调用点中的下一条规则,本例中即 OUTPUT 链,因为跳出 ISTIO_OUTPUT 规则之后就进入下一条链...,无需对流量进行处理);所有的非 istio-proxy 用户空间的目的地是 localhost 的流量就跳转到 ISTIO_REDIRECT。...的iptables规则可以发现,监听15006端口的envoy进程通过PREROUTING链上添加规则,同样将进入pod的入站流量做了拦截。...链上,目的地为 15090,15020,15021端口的流量除外,发送到以上两个端口的流量将返回 iptables 规则链的调用点,即 PREROUTING 链的后继 POSTROUTING。

    79310

    彻底弄懂Service Mesh透明代理 TPROXY

    现代微服务架构中, Service Mesh 作为基础设施层为服务间通信提供了强大支持,其中透明代理是一项关键技术,这篇文章做了一个比较细致的分析,彻底弄懂 TPROXY 透明代理/REDIRECT...此时我们来 A 容器中新增一条 iptables 规则,将非本地目的地址的 TCP 数据包通过 TPROXY 转发到本机监听的 15006 端口,同时对数据包打上 0x539 的标记(这个标记值你可以自己随意指定...我们 A 容器中抓包,发现与 172.100.1.2:8080 的三次握手有问题, lo 收到了 SYN 包,回复的 SYN + ACK 是 eth0 网卡,随后收到了 RST 包。...模式 相比于 TPROXY 复杂的 iptables 规则,REDIRECT 模式要简单得多。...使用 conntrack 获取原始目标端口 NAT 的功能实际上是通过 conntrack 实现的,我们可以通过 conntrack 来获取原始的目标端口。

    59610

    iptables防火墙原理知多少?

    表对应的内核模块为 iptable_nat,包含三个链: PREROUTING链:作用是包刚刚到达防火墙时改变它的目的地址 OUTPUT链:改变本地产生的包的目的地址 POSTROUTING链:包就要离开防火墙之前改变其源地址...raw表 是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理。匹配数据包时,raw表的规则要优先于其他表。...1.2 INPUT、FORWARD等规则链和规则 处理各种数据包时,根据防火墙规则的不同介入时机,iptables供涉及5种默认规则链,应用时间点的角度理解这些链: INPUT链:当接收到防火墙本机地址的数据包...进入路由层面的route之前,重新改写源地址,目标地址不变,并在本机建立NAT表项,当数据返回时,根据NAT表将目的地址数据改写为数据发送出去时候的源地址,并发送给主机。...和SNAT相反,IP包经过route之后、出本地的网络栈之前,重新修改目标地址,源地址不变,本机建立NAT表项,当数据返回时,根据NAT表将源地址修改为数据发送过来时的目标地址,并发给远程主机。

    1.3K60

    认真聊一次iptables和netfilter,简单过下istio route

    通过 --comment xxx 这个 option ,你可以添加最多 265 个字符的注释,前文介绍用 -A 命令追加规则到自定义链时, iptables -L -t filter 的输出里面你可以体验到这些注释的作用...nf_hook() 遍历完 OUTPUT 链之后,就调用 dst_output() 来送别网络包。...IP 和 dest Port 全部都改成 127.0.0.1:22 ,你很容易就猜到:接下来的路由选择这一步,协议栈会把修改过之后的流量通过 ② 送往本地进程。...我们先把它看作一个黑盒子,经过它之后,协议栈做了一个决定:去 39.156.66.10 的话,得接口 eth0 离开。...这一步做完后, ⓐ 开始的 OUTPUT 链遍历执行过程就结束了。那结束之后下一步协议栈要干什么呢? 跟着 ⓓ ⓔ ⓕ ⓖ ⓗ 走一遍,你会知道全部的答案。

    97741

    IPTABLES端口转发

    目标使用-j或者--jump选项指定,目标可以是用户定义的链(例如,如果条件匹配,则跳转到用户定义的链之后继续处理)、内置的特定目标或者是一个目标扩展,内置目标是ACCEPT、DROP、QUEUE和RETURN...,目标扩展是REJECT and LOG,如果目标是内置目标,数据包的命运会立刻被决定,并且在当前表的数据包的处理过程会停止,如果目标是用户定义的链,并且数据包成功穿过第二条链,目标将移动到原始链中的下一个规则...,可以进行更复杂的过滤 Traversing Chains 位于上方的流程图描述了在任何接口上收到的网络数据包是按照怎样的顺序穿过表的交通管制链的,第一个路由策略包括决定数据包的目的地是本地主机(数据包穿过...-t nat -A PREROUTING -p tcp --dport 4444 -j REDIRECT --to-ports 22 之后攻击者远程连接目标主机的4444端口的流量会被转发到22端口...--dport 4444 -j REDIRECT --to-ports 22 之后再本地访问4444端口,可以成功连接到本地SSH服务: 远程转发 DNAT模式是用来做目的网络地址转换,它也可以做某种类型地负载平衡

    1.6K10

    Linux内核转发技术

    事实上, 链路在内核中以钩子的形式存在, 每个结点给用户预留了回调函数来处理封包(即用前面提到的规则). ip封包外部进入后,所经过的链路如下图所示: iptables 网口接收到ip封包后, 首先经过...未开启内核转发的情况下, 目的地址不为本机的ip包都会丢弃掉, 若开启了转发则往右边路径将其网口转发出去. 图中每个链路点都能对ip包做相应的修改和过滤....在内核2.4.17之前只包含prerouting和output链路, 之后的版本中增加了input,forward和postrouting链路. raw: raw主要用来连接跟踪中配置notrack...我们浏览器中配置使用代理并指定地址和端口后, 上网冲浪的请求会经过代理服务器接收,然后根据需要会为我们去向目的网站请求内容, 或者从缓存中直接给我们返回内容....wlan0-ip]:3128 iptables -t nat -a PREROUTING -i wlan0 -p tcp --dport 80 -j redirect --to-port 3128 这样所有连接

    2.5K50

    iptables入门详解

    ​前言:事情是这样的,最近部门进行故障演练。攻方同学利用iptables制造了一个单机不能访问的故障,要求业务同学不知情的情况下尽快恢复业务。...iptables是Linux中比较底层的网络服务,它控制了Linux系统中的网络操作.centos中的firewalld和ubuntu中的ufw都是iptables之上构建的,当然他们简化了iptables...iptables是集成Linux内核中的包过滤防火墙系统。...数据包到达防火墙时,进行路由判断之前指定的规则;POSTROUTING(路由后过滤):在数据包离开防火墙时候进行路由判断之后执行的规则。...iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT--to-ports 80812.2、看个具体的例子下面提供一个iptables命令规则

    29110

    安全运维 | iptable使用详解

    iptables的前身叫ipfirewall(内核1.x时代),这是一个作者freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。...为什么已经进出的口设置了关卡之后还要在内部设置关卡呢?由于数据包尚未进行路由决策,还不知道数据要走向哪里,所以进出口是没办法实现数据过滤的。...address[/mask] :地址格式同上,但这里是指定地址为目的地址,按此进行过滤。 -i, --in-interface [!]...) POSTROUTING:SNAT,MASQUERADE 对源地址进行修改,支持-i选项(路由之后) OUTPUT:DNAT,REDIRECT 处理来自NAT主机本身生成的出站数据包(本机)...-t nat -A POSTROUTING -o ppp0 -j MASQUERADE 4.REDIRECT本机上进行端口映射,可以认为是DNAT的一种特殊情况(目标地址是本机) 访问本机21端口时

    2.2K40

    追查iptables规则失效原因

    今天在工作中用到了一条iptables规则,虽然明白这条规则的意思,但结合之前对iptables的理解,想不明白为什么会这么工作,后来仔细研读iptables的官方文档,终于字里行间找到原因了,这里记录下问题的追踪过程...现象 工作中用到了一条iptables规则,如下: $ iptables -t nat -I OUTPUT 1 -p tcp -j REDIRECT --to-port 9999 这条规则的意思是本机发出的数据包都重定向到本地的...如果一个原始链接是a->b,而后不管是显式的nat还是隐式的REDIRECT以及nat_ftp,将a->b改为了a->c,a->b还是可以得到的,内核正是a->b的流信息中取得了“要转换为a->c”这个信息的...到了这里我们就得分两种不同的情况进行讨论了,一种情况就是数据包要转发给其它主机,这时候它会依次经过: 进入 mangle 表的 FORWARD 链,这里也比较特殊,这是第一次路由决定之后进行最后的路由决定之前...另一种情况是,数据包就是发给本地主机的,那么它会依次穿过: 进入 mangle 表的 INPUT 链,这里是路由之后,交由本地主机之前,我们也可以进行一些相应的修改。

    3.6K10

    5分钟学SRE-Iptables

    命令选项 选项名 功能及特点 -A 指定链的末尾添加(--append)一条新的规则 -D 删除(--delete)指定链中的某一条规则,按规则序号或内容确定要删除的规则 -I 指定链中插入(--insert...REDIRECT  将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续比对其它规则。这个功能可以用来实作透明代理 或用来保护web 服务器。...例如: iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT--to-ports 8081 MASQUERADE 改写封包来源IP为防火墙的...-j REJECT iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT 说明:注意要把拒绝的放在前面不然就不起作用了 3,只允许管理员202.13.0.0...4,允许本机开放TCP端口20-1024提供的应用服务。

    31130

    NAT

    [jvvc2dyrhm.png] 简介 NAT 的全名是 Network Address Translation,字面上的意思是『網路位址的轉換』 NAT 原理 iptables 的角度看 NAT...简言之: PREROUTING(NAT)-> FORWARD(Filter) -> POSTROUTING(NAT) 修改源ip地址的目的一般都是为了让这个包能再回到自己这里,所以 iptables...修改目的ip地址的原因一般就是为了改变包发送的目的地,让包走出去,而不是留下来,所以 iptables 中,DNAT是入口,也即PREROUTING链中发挥作用,以便让包进入FORWARD表。...80 -j DNAT \ --to 172.31.0.23:80 port 重定向 -j REDIRECT --to-ports # 這個也挺常見的,基本上,就是進行本機上面...j REDIRECT --to-ports 8080 # 這玩意最容易在你使用了非正規的 port 來進行某些 well known 的協定, # 例如使用 8080 這個 port 來啟動 WWW ,

    2.6K20
    领券