论坛风格切换切换到宽版
  • 1086阅读
  • 4回复

[问题求助]关于DNAT后,内网用户无法通过域名访问服务器的解决 [复制链接]

上一主题 下一主题
离线17772.
 
发帖
2092
C币
-60655
威望
392
贡献值
1
银元
-3
铜钱
4723
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
N久前写的.,最近看到又有讨论DNAT的 ,.做个参考。.



看到论坛内很多弟兄做了DNAT,外网正常访问,.内网却无法访问.现将原因总结如.下:外贸
设网络结构如下:

外.网某机器为W1,路由器为R1,内网服务器为S1,内网某机器为C1,设服务.为80             汽车
地址分布如下:
R1:外(e.th0):192.16.8.0.5 内(eth1):192.168.1.254             汽车
S1:192.168.1.5
C1:192.168.1.8

原因如下:
外网为什么能成功:
当W1以某IP端口80访问.R1的外网地址192.168.0.5时,数据包到达192.168.0.5的接口eth0,ROS根据DNAT规则做了到S1 192.168.1.5.的转发,S1 192.1.68.1.5收到来自某IP的包后S1会发出正确的相应,此响应的目的IP为W1的IP,根据默.认网关(R1的eth1)192.168.1.254规则把回应包发到R1,因为R1先前DNAT的关系(有DNA.T的记录),R1回做一个反方向的NA.T转发,从而数据包能够正确的到达W1,因此能够正确通信。教育
内网为什么不能成功:
1、        DNAT规则是.针对eth0口配置.的:    外汇
设R1的DNAT规则:iptables –t nat –A PREROUTING –i eth0 –p tcp –m tcp –d 192.168.0.5 –dpo.rt 80 –j DNAT –-to.-destinstion 19.2.168.1.5.
当C1以192.168.0.5为目的IP访问80服务的时候,数据包从192.168.1.254口传入,R1根据路由规则,会把目的192.168.0.5的地址.直接.送到上层接口,而不会经过R1为eth0接口配置的DNAT规则,那么此时192.168.0.5开了80服.务了吗?很显然没有,因此无法访问.。.

2、        DN.AT的规则是全局的:电脑
设R1的.DNAT规则:iptables –t nat –A PREROUT.ING –p tc.p –m tcp –d 192.168.0.5 –dport 80 –j DNAT –-to-destinstion 192.168.1.5<性病>
当C1以192..168.0.5为目的IP访问80服务的时候,数据包从192.168..1.254口传入,R1根据DNAT规则会把此数据包DNAT到正确的S1服务器192.168.1..5,当S1收到包的时候S1会根据自己的路由表不经过R1的转发而会直接把数据发到C1,因为C.1和S1是在同一个网络,这时候C1回收到S1的回应,按说此时应该能正常通信。但不幸的是.我们忽略了源IP的问题。C1是把数据包发给的是R1的外网IP 19.2.168.0.5,而收到的IP的源地址却是S1的IP192.168.1..5,虽然数据包的除IP外所有的都是正确的,但C1仍然不会接受,会把这个包丢弃的。因此通信还是无法进行。.

解决办法:
1、        从DNS入手,在内网设置.自己的DNS,或者编辑client的hosts表把S1的地址不要解析成外网的IP,这样就变成内网的通信,还.不占用RO.S的带宽。这是我首推的方法。(广告)
2、        如果一.定要走ROS,首先你要为每个可能进入的接口配置相应的DNAT策略,当然使用我.上面举例的全.局策略就完全可以的,那么我们下面应该如何设置呢?又有两种情况:              乙肝
1)        如果可以把服务器放到一个单独的网段请你及时这样做。因为这样.可以避免攻.击,便于控制等等好处N多了。麻烦就是需要ROS多加一个网卡当然如果你配置多地址的话,网卡都可以省了.,不过这么省不太好吧。当然还需要配置正确的SNAT。(广告)
2)        有些人说我就.不能放.到单独的网段,那我也有办法,这是我最不赞成的方法,就是请你删掉S1上到192.168.1.0网络的路由表项目,这样会强制S1到C1的数据包走R1,这样R1就可以实施相.反的转换,当然也就可以正常通信了。电脑
rou.te del –net 192.168.1.0 .netmask 255.255.255.0 gw * dev eth1          婚庆


以上是我对所谓的回.流问题的个人见解.。你看后有3种情况:--------------彩票
1、 .       写的不好没法看,或我都知道了不用看,请别拿石头丢我,我很脆弱。不.过有错误尽管提,我很虚心。--- 印刷
2、        .和你想.的差不多,那恭喜你,我先写出来了。电脑
3、        看不懂。没法子,我.语文很差,.逻辑很差,英文很差。你将就将就吧。[成人用品]

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线njbenben.
发帖
1976
C币
-198903
威望
358
贡献值
1
银元
-2
铜钱
4361
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
太复杂了

第一种解决方案:
iptables -t nat -I PREROUTING -d 192.168.0.5 -p tcp --dport 80 -j DNAT --to 192.168.1.5
若 192.168.0.5 是 ADSL 自动分配的 IP 地址,则用 shell 自动每分钟分析一次外网 IP,发现变动后自动更新 rule

第二种解决方案:
iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -d 192.168.1.5 -p tcp --dport 80 -j SNAT --to 192.168.1.254
针对内网路由后的 IP 做特殊的源地址转换

离线qwer20.
发帖
2210
C币
-60177
威望
375
贡献值
1
银元
-3
铜钱
4907
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
是不是有的路由内置就支持回流的?不用设置
我家里的D-LINK DI-504设置完虚似服务器,内网就可以直接通过域名访问内网服务器
而公司的TP-Link TD-W8910G 却不行,因为不支持端口回流吗?

离线jiji134.
发帖
2135
C币
-236194
威望
372
贡献值
1
银元
-3
铜钱
4705
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
有些路由器你做过DNAT后自动就有了DNS-MAP。刚发现H3C的有这个功能。

离线douxp.
发帖
2188
C币
-193049
威望
401
贡献值
1
银元
0
铜钱
4922
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
在cisco pix 中version 7.0 以上叫dns-doctor
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个