免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 12287 | 回复: 5

[网络管理] 关于iptables redirect的疑问 [复制链接]

论坛徽章:
0
发表于 2012-02-25 14:19 |显示全部楼层
iptables的redirect动作会不会覆盖数据包原来的目的地址和端口呢?

我的理解是会的。把原来的地址和端口改了,然后路由的时候就会转到新的地址上去。
比如经常用的squid透明代理,把原来发到某外网IP的80端口数据,目的地址改成本机,端口改成3128。这样路由的时候就不会发出去,而是发给本机。本机的http代理收到以后,从http头里面再读取出它本来要访问的网址,从本机发到目的地址去。
这样的话,这个redirect动作就只适用于除了ip包头有目的地址,数据包内部也包含了目的地址或网址的应用。否则代理收到包,包的目的地址已经改为本机,包里面也没有其它目的地址,叫这个代理把包发到哪里去呢?

但现在我看有些本地代理穿墙的软件,它们用的就是iptables的redirect。比如redsocks。它把本地的正常tcp包,通过iptables的redirect转到自己的本地监听端口上,再封装成socks数据包发给socks代理服务器。
这我就不太明白了,这个tcp被改了目的地址,本机把这个包封装了发到代理服务器上。代理服务器收到后,解开socks封装后,只能看到目的地址是一个本地地址吧。接下来该怎么发到本来的目的地址上去呢?

难道redirect没有改变原来的目的地址和端口?只是外面封装了一层ip包头?

iptables还有另外一个转发模块,tproxy。为什么不用这个呢?这个不会改变目的地址和端口,不是更好用一些吗?



哪位高手能够指教一下,谢谢!)

论坛徽章:
0
发表于 2012-02-26 18:49 |显示全部楼层
搜资料好累啊。
在这个页面http://www.gossamer-threads.com/ ... =post_view_threaded最下面一段找到这几句。
So, to sum it up, you probably don't want to use TPROXY instead of
REDIRECT. (Especially if you redirect TCP traffic only, where the
ip_conntrack provides a getsockopt() to get the original destination
address.)
意思是说REDIRECT使用了ip_conntrack模块,可以通过函数接口获取原来目的地址。
看来REDIRECT的确会更改目的地址,监听程序收到的包是没有原目的地址的。要想知道原来的目的地址怎么办呢?可以通过调用ip_conntrack的函数获取,原目的地址在内存中还是保留在了socket buffer里。但要通过编程去获取。

关于tproxy模块,它的效率比REDIRECT低。它没用使用连接状态,即ip_conntrack。它对每一个包都作标记。而REDIRECt只处理第一个包,以后的包只要状态表里能匹配到就直接放过了。

论坛徽章:
2
巨蟹座
日期:2014-03-09 21:37:25射手座
日期:2014-04-16 16:23:03
发表于 2012-02-28 00:28 |显示全部楼层
回复 1# kkkggg

难道redirect没有改变原来的目的地址和端口?只是外面封装了一层ip包头?
------------------------------------------------------------------

REDIRECT是改变了目的地址和端口号的,并在ip_conntrack表中留有转换记录,REDIRECT实际上也是一种特殊的NAT。并没有在外面封转一层IP包头。

论坛徽章:
0
发表于 2014-06-24 15:58 |显示全部楼层
谢谢楼主辛苦解答。。。正好碰到这问题,卡了一个星期了。。。

论坛徽章:
0
发表于 2018-06-21 15:46 |显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

数据风云,十年变迁
DTCC 第十届中国数据库技术大会已启航!

2019年5月8日~5月10日,由IT168旗下ITPUB企业社区平台主办的第十届中国数据库技术大会(DTCC2019),将在北京隆重召开。大会将邀请百余位行业专家,就热点技术话题进行分享,是广大数据领域从业人士的又一次年度盛会和交流平台。与SACC2018类似,本届大会将采用“3+2”模式:3天传统技术演讲+2天深度主题培训。大会不仅提供超100场的主题演讲,还会提供连续2天的深度课程培训,深化数据领域的项目落地实践方案。
DTCC2019,一场值得期待的数据技术盛会,殷切地希望您报名参与!

活动入口>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP