免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 16668 | 回复: 5
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(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
2 [报告]
发表于 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
3 [报告]
发表于 2012-02-28 00:28 |只看该作者
回复 1# kkkggg

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

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

论坛徽章:
0
4 [报告]
发表于 2014-06-24 15:58 |只看该作者
谢谢楼主辛苦解答。。。正好碰到这问题,卡了一个星期了。。。

论坛徽章:
0
5 [报告]
发表于 2018-06-21 15:46 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP