免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: skylove
打印 上一主题 下一主题

[网络管理] 如何用iptables将透明代理请求重定向另一主机?【已解决】 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2006-03-01 17:39 |只看该作者
原帖由 q1208c 于 2006-3-1 17:37 发表

别忘了是本机的. 还是prerouting.

如果一个数据包最后 NF_DROP 或者 NF_ACCEPT 后,他就会脱离这个“框架”,因此你在 PREROUTING 做过一次明确处理后,后面的规则不会再继续匹配到他,因为他已经被“生效”了

论坛徽章:
0
42 [报告]
发表于 2006-03-01 17:40 |只看该作者
根据 tingyu 先生的意见,我大致上明白思路了

首先
1.client -->nat 连接,需要DNAT 到 proxy ,并同时修改snat为 nat 机器;
2. proxy 处理需求,将结果反馈给nat 机;(这里不能直接转给client的原因是,client根本没有朝proxy发起过tcp连接的记忆)
3.nat 机再转交给client端...

大致应该这样才对...也就是说dnat和snat得同时修改...呵呵

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
43 [报告]
发表于 2006-03-01 17:41 |只看该作者
原帖由 platinum 于 2006-3-1 17:39 发表

如果一个数据包最后 NF_DROP 或者 NF_ACCEPT 后,他就会脱离这个“框架”,因此你在 PREROUTING 做过一次明确处理后,后面的规则不会再继续匹配到他,因为他已经被“生效”了


难道不是这样么?

192.168.1.1:80 -- > redirect 192.168.1.1:3128
192.168.1.1:3128 --> redirect(dnat) 192.168.1.2: 3128

论坛徽章:
0
44 [报告]
发表于 2006-03-01 17:41 |只看该作者
原帖由 platinum 于 2006-3-1 17:39 发表

如果一个数据包最后 NF_DROP 或者 NF_ACCEPT 后,他就会脱离这个“框架”,因此你在 PREROUTING 做过一次明确处理后,后面的规则不会再继续匹配到他,因为他已经被“生效”了



这个... snat是在路由后处理,dnat是在路由前处理的,所以都会执行到的...

论坛徽章:
0
45 [报告]
发表于 2006-03-01 17:43 |只看该作者
http://bbs.chinaunix.net/viewthr ... p;highlight=skylove

突然发现自己在2003年12月就遇到过同样问题并且解决掉了... 汗... 真是越老越不中用了.

论坛徽章:
0
46 [报告]
发表于 2006-03-01 17:45 |只看该作者
原帖由 skylove 于 2006-3-1 17:41 发表



这个... snat是在路由后处理,dnat是在路由前处理的,所以都会执行到的...

q1208c 的意思是
192.168.1.1:80 -- > redirect 192.168.1.1:3128
192.168.1.1:3128 --> redirect(dnat) 192.168.1.2: 3128

两个都是 REDIRECT,REDIRECT 是 PREROUTING 链特有的东西

论坛徽章:
0
47 [报告]
发表于 2006-03-01 17:46 |只看该作者
skylove 兄,我在 22 楼所说的那些你能否理解?

论坛徽章:
0
48 [报告]
发表于 2006-03-01 17:47 |只看该作者
这样redirect 2次不划算的,事实上dnat是没有任何问题的,不是转指不成功

论坛徽章:
0
49 [报告]
发表于 2006-03-01 17:53 |只看该作者
原帖由 skylove 于 2006-3-1 17:47 发表
这样redirect 2次不划算的,事实上dnat是没有任何问题的,不是转指不成功

晕,你和 q1208c 都没明白我的意思,只要数据包被处理过(target),都会逃出 netfilter 匹配框架
我来举例说明好了
[root@PT_LINUX root]# iptables -t nat -I PREROUTING -s 61.48.85.30 -p tcp --dport 80 -j REDIRECT --to 23
[root@PT_LINUX root]# iptables -t nat -I PREROUTING 2 -s 61.48.85.30 -p tcp --dport 23 -j REDIRECT --to 21

加入了两条规则,从我的 IP 过来的,访问 TCP/80 的,先转到 TCP/23,再转到 TCP/21
[root@PT_LINUX root]# iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 778K packets, 80M bytes)
pkts bytes target     prot opt in     out     source               destination
    0     0 REDIRECT   tcp  --  *      *       61.48.85.30          0.0.0.0/0           tcp dpt:80 redir ports 23
    0     0 REDIRECT   tcp  --  *      *       61.48.85.30          0.0.0.0/0           tcp dpt:23 redir ports 21
    0     0 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:26881 to:172.17.39.3
    0     0 DNAT       udp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           udp dpt:26881 to:172.17.39.3
    0     0 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:36881 to:172.17.39.3
    0     0 DNAT       udp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           udp dpt:36881 to:172.17.39.3
    0     0 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8881 to:172.25.39.2
    0     0 DNAT       udp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           udp dpt:8881 to:172.25.39.2

Chain POSTROUTING (policy ACCEPT 179K packets, 7202K bytes)
pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  *      ppp0    172.17.39.0/24       0.0.0.0/0
   50  3200 MASQUERADE  all  --  *      ppp0    172.25.39.0/24       0.0.0.0/0

Chain OUTPUT (policy ACCEPT 2449 packets, 132K bytes)
pkts bytes target     prot opt in     out     source               destination

按照你们的理论我 telnet IP 80 后,应该无相应才对(因为我有 telnet 服务,没有 ftp 服务),应该两条策略都匹配到数据
[root@PT_LINUX root]# iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 778K packets, 80M bytes)
pkts bytes target     prot opt in     out     source               destination
    1    48 REDIRECT   tcp  --  *      *       61.48.85.30          0.0.0.0/0           tcp dpt:80 redir ports 23
    0     0 REDIRECT   tcp  --  *      *       61.48.85.30          0.0.0.0/0           tcp dpt:23 redir ports 21
    0     0 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:26881 to:172.17.39.3
    0     0 DNAT       udp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           udp dpt:26881 to:172.17.39.3
    0     0 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:36881 to:172.17.39.3
    0     0 DNAT       udp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           udp dpt:36881 to:172.17.39.3
    0     0 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8881 to:172.25.39.2
    0     0 DNAT       udp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           udp dpt:8881 to:172.25.39.2

Chain POSTROUTING (policy ACCEPT 179K packets, 7202K bytes)
pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  *      ppp0    172.17.39.0/24       0.0.0.0/0
   68  4352 MASQUERADE  all  --  *      ppp0    172.25.39.0/24       0.0.0.0/0

Chain OUTPUT (policy ACCEPT 2451 packets, 133K bytes)
pkts bytes target     prot opt in     out     source               destination
[root@PT_LINUX root]#

而实际呢?我 telnet IP 80 后,出现了登录界面,而且第二条策略没有匹配到任何东西,不知我这样说你们能明白了吗?
这个问题我在 34 楼和 41 楼的时候都已经说过


[ 本帖最后由 platinum 于 2006-3-1 18:32 编辑 ]

论坛徽章:
0
50 [报告]
发表于 2006-03-01 17:54 |只看该作者
原帖由 platinum 于 2006-3-1 17:46 发表
skylove 兄,我在 22 楼所说的那些你能否理解?


谢谢指教,明白.

一开始被自己搞糊涂了,因为我在用直接公网上的proxy的时候,可以直接一句dnat --to 搞定,忘记了这是因为nat 由于本身就默认有一句snat语句,所以也对http请求做了隐性的snat处理. 之后在内网时候,由于默认的出口snat语句肯定不会作用于此,所以自然调试不通.

自己被自己给搞糊涂了,该打
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP