免费注册 查看新帖 |

Chinaunix

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

[网络管理] 请教,dnat没有生效,如何检查??? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-08-08 22:09 |只看该作者
回复 10# platinum


    汗,,,我再试试,为什么在宿主机上测试就不行???请老大解释下,,还是不太明白。。

论坛徽章:
0
12 [报告]
发表于 2010-08-08 22:10 |只看该作者
回复 10# platinum


    ps,机房要关门了,,,没法在线等了,我回去好好想想,有问题再问,谢谢老大!!

论坛徽章:
0
13 [报告]
发表于 2010-08-08 22:12 |只看该作者
回复  platinum


    汗,,,我再试试,为什么在宿主机上测试就不行???请老大解释下,,还是不太明 ...
chong232 发表于 2010-08-08 22:09


10 楼提到过,DNAT 匹配进来的数据
因为你是本机访问,所以数据包不是从外面进来的,所以不会被匹配

论坛徽章:
0
14 [报告]
发表于 2010-08-08 22:14 |只看该作者
回复 13# platinum


    哦,明白了,我刚刚从192.168.0.2里测试了下,还是不行,但是能看到已经匹配上了,所以我还得再想想脚本还不全面。。

论坛徽章:
0
15 [报告]
发表于 2010-08-09 10:34 |只看该作者
回复 13# platinum


    早上过来测试了下,从外面可以访问dnat后的内部服务器,确实是我测试思路有问题,又学到了点东西,多谢老大指出了!

 另外,在iptables只做了dnat的前提下,如果要从内部192.168.0.2去访问159.226.x.x:80,却访问不了,甚至在宿主机抓不到包,但查看iptables却发现
 有匹配发生,很奇怪,按老大说的,再做个SNAT (为什么要做???我觉得不用,因为从192.168.0.2出来的包,宿主机可以原路送回。。):

    iptables -t nat  -A POSTROUTING -s 192.168.0.2/32 -o eth0 -j MASQUERADE
  还是不行,虽然没用什么实际用处,但还是想知道为什么会是这样。。

论坛徽章:
0
16 [报告]
发表于 2010-08-09 10:41 |只看该作者
iptables -t nat  -A POSTROUTING -s 192.168.0.2/32 -o eth0 -j MASQUERADE
换成
iptables -t nat  -A POSTROUTING -s 192.168.0.2 -j MASQUERADE
应该就行了

原因是当 192.168.0.2 访问 159.x.x.x 时,实际相当于 192.168.0.1 在访问 192.168.0.2
如果不做 MASQUERADE,那么数据包虽然修改了目的地址但源地址不是 192.168.0.1
如果加了 -o eth0 的话这个数据不会被 MASQUERADE,因为不是从 eth0 出去的
我去掉 /32 的改动是为了简便,免得多此一举

论坛徽章:
0
17 [报告]
发表于 2010-08-09 11:08 |只看该作者
回复 16# platinum

都按老大说的改了,还是不行
  1. Chain PREROUTING (policy ACCEPT 129 packets, 20527 bytes)
  2. pkts bytes target     prot opt in     out     source               destination         
  3.     6   312 DNAT       tcp  --  *      *       0.0.0.0/0            159.226.x.x       tcp dpt:80 to:192.168.0.2

  4. Chain POSTROUTING (policy ACCEPT 79 packets, 6241 bytes)
  5. pkts bytes target     prot opt in     out     source               destination         
  6.    16   899 MASQUERADE  all  --  *      *       192.168.0.2          0.0.0.0/0   
复制代码
我在宿主和guest都捕捉了报文,发现报文从192.168.0.2到达宿主后,被处理成了
  192.168.0.1 -->  192.168.0.2后,就没有回应

论坛徽章:
0
18 [报告]
发表于 2010-08-09 11:13 |只看该作者
192.168.0.2 的默认网关是 192.168.0.1 吧?
如果是,那么换成 iptables -t nat  -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE 再试试

论坛徽章:
0
19 [报告]
发表于 2010-08-09 11:19 |只看该作者
回复 18# platinum


    还是不行,我发现一点,在宿主和guest的捕捉报文表明,三次握手没有实现,,只能抓到tcp报文,没有任何http的

论坛徽章:
0
20 [报告]
发表于 2010-08-09 11:25 |只看该作者
回复  platinum


    还是不行,我发现一点,在宿主和guest的捕捉报文表明,三次握手没有实现,,只能 ...
chong232 发表于 2010-08-09 11:19


我实验了,是可行的,我不知道你是怎么做的,不知道你的问题在哪里,但一定是你那里的问题而不是理论问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP