免费注册 查看新帖 |

Chinaunix

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

请教大家iptable 进出的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-26 17:15 |只看该作者 |倒序浏览
1 我的路由器不设置 default route。\r\n路由器中只有 eth0 和 拨号后的ppp0\r\n\r\n2 路由器是使用 PPP拨号,有一路连接。\r\n\r\n3 机器设置iptables,让所有来自 eth0的 tcp udp的数据重定向到 \r\n40030这个端口
  1. iptables -t nat -A PREROUTING -p tcp -s \\\r\n192.168.1.0/24 \\! -d 192.168.1.6-j \\\r\nREDIRECT --to-ports 40030
复制代码
。路由器中有个程序能够不用 default router帮助转发数据。(此程序向squid一样的功能,自己无需系统的route表)\r\n\r\n4 路由器又做了 NAT的规则,让 8080重定向到 192.168.1.37:8080\r\n
  1. iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE\r\niptables -A FORWARD --in-interface eth0 -j ACCEPT\r\necho 1> proc/sys/net/ipv4/ip_forward\r\niptables -t nat -A PREROUTING -p tcp -i ppp0 -d $ipaddr1 --dport 8080 -j DNAT --to-destination 192.168.1.37:8080
复制代码
\r\n\r\n\r\n5 外网给 路由器 PPP的IP地址发送了8080的请求,随后路由转发了这个请求,给了内网 192.168.1.37。然后1.37回答请求。(我使用tcpdump抓包,看到1.37发送给外网IP回应请求)\r\n\r\n问题:  路由器没有default route情况,是无法出去的,\r\n但是我在设置了所有来自 eth0 的 TCP AND UDP的 包全部重定向到 40030端口,为何 1.37不走40030端口?\r\n是因为 1.37接受到的 外网请求的数据做了什么吗?我的外网请求就是 一个 http的请求。

论坛徽章:
0
2 [报告]
发表于 2009-11-26 17:16 |只看该作者
谢谢各位,请给些提示。

论坛徽章:
0
3 [报告]
发表于 2009-11-26 17:31 |只看该作者
此案例是建立一个比较特殊的应用。\r\n\r\n路由器中的软件要配合 ISP上面一个 SERVER帮助转发数据.\r\n\r\n换句话说,挂在路由器后面的设备,如果访问 163.com,那么163看到的 ip地址不是 路由器 ppp的 IP地址,而是 ISP中托管 server的 IP地址。

论坛徽章:
0
4 [报告]
发表于 2009-11-27 11:44 |只看该作者
我个人的看法是\r\n\r\n因为192.168.1.37接到http请求后回应也是要通过路由器进行nat的,你的路由器必须把192.168.1.37转换成ppp的ip地址才能传回请求端\r\n\r\n另外,看样子你似乎只是把192.168.1.0/24网段对外网的访问请求端口重定向转发到isp的一台server上,由它来进行nat转换\r\n\r\n这样,http对外网请求的回应已经被转换成ppp的地址,不会通过路由器上的端口重定向,而路由器上又没有自己的默认路由\r\n\r\n会不会就是这个原因出的问题\r\n\r\n而且就算是回包数据没有通过路由器的nat转换就被重定向,isp的server则不可能对这个数据包作源地址转换,同样出不去\r\n\r\n不过我对两条规则哪个先起作用不是很清楚\n\n[ 本帖最后由 0ZXCVBNM0 于 2009-11-27 12:41 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-11-27 14:41 |只看该作者
首先感谢楼上的兄弟答复。\r\n\r\n是的,我尝试了下,在 做了 端口重定向后 (iptables -t nat -A PREROUTING -p tcp -s \\\r\n192.168.1.0/24 \\! -d 192.168.1.6-j \\\r\nREDIRECT --to-ports 4003),如果设置了 route add default ppp0\r\n数据就会通过 ppp1传输出去,和你的说法是一致的。\r\n\r\n然后我认为 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 是多余的,依旧不行。\r\n你说的 规则顺序问题我也尝试,依旧不行。\r\n\r\n看样子是必须从 问题出处着手了。呵呵。\r\n\r\n谁有好点的主意?代替 iptables -t nat -A PREROUTING -p tcp -i ppp0 -d $ipaddr1 --dport 8080 -j DNAT --to-destination 192.168.1.37:8080 这个命令做端口转发呢?\r\n\r\n谢谢各位了

论坛徽章:
0
6 [报告]
发表于 2009-11-27 16:07 |只看该作者
我想了下。\r\n\r\n能否让 路由器 重设 回流的数据?\r\n回去要经过 路由器代理端口 40030呢?

论坛徽章:
0
7 [报告]
发表于 2009-11-27 16:41 |只看该作者
ppp1?是否写错了?\r\n\r\n我又查了查资料\r\n\r\n数据包若匹配nat表中PREROUTING链的规则,那么是在路由之前便生效的\r\n\r\n而当系统决定了数据包路由之后才执行POSTROUTING链中的规则\r\n\r\n看来还是因为192.168.1.37的回包经过dnat转换后找不到路由\r\n\r\n取消端口重定向规则中对源地址的限制,试试这样是否可以?\r\n\r\n可否再多贴些iptables的相关配置呢?\n\n[ 本帖最后由 0ZXCVBNM0 于 2009-11-27 17:35 编辑 ]

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
8 [报告]
发表于 2009-11-28 20:59 |只看该作者
LZ 你做一下下面的这个测试,然后给我测试结果。\r\n\r\n从1.37主动发出来的TCP/UDP包能够重定向到40030端口呢?????

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
9 [报告]
发表于 2009-11-28 21:28 |只看该作者
先看一下8楼的问题。\r\n有一个特性我还不十分确定。

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
10 [报告]
发表于 2009-11-28 21:59 |只看该作者
给你个方法可以测试一下。\r\n\r\n这个机器配双网卡:\r\n譬如一块配置eth 0 192.168.1.5 另一块配置eth1 192.168.1.6 通过调整ARP地址表或路由表来让到1.37的路由走ETH1出去到达1.37。 而调整1.37的路由表或ARP表,是网关为1.5 ,从ETH0进来,这样的话就和IPTABLES SNAT的状态表不匹配了。在ETH0接口上做重定向,这样回包应该是能够重定向上来的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP