免费注册 查看新帖 |

Chinaunix

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

NAT后无法在内网通过外部IP访问内部服务的问题的详细说明(原创) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-23 08:09 |只看该作者 |倒序浏览
最近,到处看到有人问这个问题,怎么以前没人问,现在这么多人问呢?前两天我还在华为的论坛上仔细的说了这个问题,现在复制到这边来。希望能帮助大家理解这个问题。
     这是个理论问题,我们先从NAT讲起:NAT有两种基本类型,一种是SNAT(Source NAT),一种是DNAT(Dest. NAT).SNAT即源NAT是改变数据包的IP层中的源IP地址,一般是用来将不合法的IP外出请求转换成合法的IP的外出请求,就是普通的用一个或者几个合法IP来带动一整个非法IP段接入。 DNAT即目的NAT,就是改变数据包的目标IP地址,使得能对数据包重新定向,可以用做负载均衡或者用于将外部的服务请求重定向到内网的非法IP的服务器上。
      好了,罗嗦了一通,大致就是这样了。 那么之所以会出现无法在DNAT的内部网络通过DNAT服务的外部IP地址来访问的情况,是因为,如果服务从内部请求,那么经过DNAT转换后,将目标IP改写成内网的IP地址,譬如172.16.10.254,而请求的机器的IP是 172.16.10.100,数据包被网关172.16.10.1顺利的重定向到172.16.10.254的服务端口,然后,192.16.10.254根据请求发送回应给目的IP地址,就是172.16.10.100,但是,问题出现了,因为172.16.10.100请求的地址是外部IP 假设是221.232.34.56,所以他等待着221.232.34.56的回应,而172.16.10.254的回应请求被看做是非法的,被丢弃了。这就是问题的所在了。
      呵呵,写的有点混乱,不好意思。不知道大家明白没有.那么如何解决这个问题,我说个用iptables实现的例子,
    #我们先把发向外网IP221.232.34.56 80号端口的数据重定向到172.16.10.254 理论上来讲,如果只要从外网访问,这就完成了。
    iptables -t nat -A PREROUTING -p tcp -d 221.232.34.56 --dport 80 -j DNAT --to-destination 172.16.10.254
    #解决内网通过外网IP访问的情况
    iptables -t nat -A POSTROUTING -p tcp -d 172.16.10.254 --dport 80 -j SNAT --to-source 172.16.10.1
    我们将内网的请求强行送回到网关172.16.10.1,依靠网关在内核建立的状态表再转发到真实的请求地址172.16.10.100.
    当然,这并不是最好的解决方法,最好的解决方法是将服务器放在另外一个网段,也就是说所谓的DMZ(解除武装区),这样就不会出现上面所说的问题了。
    如果大家还不清楚,给个参考文档:
    http://iptables-tutorial.frozentux.net/iptables-tutorial.html#DNATTARGET
   
     就先说到这里了,我要去上班了。

论坛徽章:
0
2 [报告]
发表于 2004-07-24 13:33 |只看该作者

NAT后无法在内网通过外部IP访问内部服务的问题的详细说明(原创)

居然一个人都没回复的,难道这个问题不具备普遍性?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-07-26 08:08 |只看该作者

NAT后无法在内网通过外部IP访问内部服务的问题的详细说明(原创)

good

论坛徽章:
0
4 [报告]
发表于 2004-07-26 08:54 |只看该作者

NAT后无法在内网通过外部IP访问内部服务的问题的详细说明(原创)

这个DNAT(又叫端口映射),这个问题网上的问法基本就是“为什么内网不可以访问自己网关上的端口映射,即外面正常转入数据了。为什么内部不给反向转回?”

实际上用
iptables -t nat -A PREROUTING -p tcp -d wan_ip --dport 80 -j DNAT --to lan_ip:80
就可以很好解决了

如果基于网络设备,比如ethx,的DNAT就存在上面的问题了

至于freebsd的ipfilter,ipfw
openbsd的packet filter,都存在这个问题,不过都可以通过重定向来源数据到本地回环然后解决

论坛徽章:
0
5 [报告]
发表于 2004-07-26 09:47 |只看该作者

NAT后无法在内网通过外部IP访问内部服务的问题的详细说明(原创)

如果防火墙PIX没有DMZ(两个端口),如何解决这个问题呢?

论坛徽章:
0
6 [报告]
发表于 2004-07-26 11:12 |只看该作者

NAT后无法在内网通过外部IP访问内部服务的问题的详细说明(原创)

好贴!!

论坛徽章:
0
7 [报告]
发表于 2004-07-26 13:07 |只看该作者

NAT后无法在内网通过外部IP访问内部服务的问题的详细说明(原创)

把服务器裸到外网上。。。不过防火墙上该走桥方式的嘛。。。

论坛徽章:
0
8 [报告]
发表于 2004-07-26 16:50 |只看该作者

NAT后无法在内网通过外部IP访问内部服务的问题的详细说明(原创)

防火墙不一定就支持混合模式哦。

论坛徽章:
0
9 [报告]
发表于 2004-07-27 14:29 |只看该作者

NAT后无法在内网通过外部IP访问内部服务的问题的详细说明(原创)

以前这样的问题比较多见。现在感觉好久没有遇到这样的问题了。现在大多数的防火墙都能够实现这样的访问。具体各个厂家的解决方法可能不同。Check Point防火墙是把请求访问的数据包的源地址更改为防火墙的外部公有的IP地址,这样内部的服务器返回的数据包会先传到防火墙外部的公有IP地址后再传递到内部的请求计算机。至于其他防火墙是不是这样就没有留意。

论坛徽章:
0
10 [报告]
发表于 2004-07-27 16:11 |只看该作者

NAT后无法在内网通过外部IP访问内部服务的问题的详细说明(原创)

有防火墙的话做一个端口映射就什么都解决了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP