免费注册 查看新帖 |

Chinaunix

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

DNAT的连接问题,初始连接SYN总是超时?讨论一下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-17 09:24 |只看该作者 |倒序浏览
os: redhat AS 3  kernel:2.4.21
gw1: 192.168.0.2


gw2:192.168.0.207 redhat 8.0 kernel: 2.4

gw2是4M光纤上网,只是做了如下配置:
  1. iptables -t nat -A POSTROUTING -s 0/0 -j MASQUERADE
复制代码


gw1上是2M光线上网,做了tc,ipp2p,time等相关设置
dnat部分

  1. iptables -t nat -A PREROUTING -d 218.249.xx.xx -p tcp  -m time --timestart 9:00 --timestop 23:59 --days Mon,Tue,Wed,Thu,Fri --dpor
  2. t 19022 -j DNAT --to 192.168.0.207:22

  3. iptables -t nat -A POSTROUTING -d 192.168.0.207 -p tcp --dport 22 -j SNAT --to 192.168.0.2:19022
复制代码


DNAT说明:
由于服务器对IP做了访问限制。从外面访问的用户需要登陆gw1来访问内网,通过dnat把19022转发到内网的gw2上。然后在gw2上做回指gw2的路由
  1. [root@mnc-y root]# route -n
  2. Kernel IP routing table
  3. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
  4. 192.168.0.2     192.168.0.2     255.255.255.255 UGH   0      0        0 eth0
复制代码


这样就形成了外网用户通过DNAT来访问gw1,然后转发到gw2上。gw2在通过自己的默认网关访问公司在IDC的服务器。

问题出来了:
1.当第一次连接的时候非常的快。但一旦断了连接在重新连接。就会提示连接超时!-----------------------------------------------------------------------------------------------------------------
问题分析:
1。通过在gw1上抓包来看
  1. [root@gateway shell]# tcpdump -i eth1 -vv -nn port 19022
  2. tcpdump: listening on eth1
  3. 09:05:26.297887 210.82.61.xx.3566 > 218.249.xx.xx.19022: S [tcp sum ok] 3706006814:3706006814(0) win 16384 <mss 1460,nop,nop,sackOK> (DF) (ttl 114, id 28066, len 48)
  4. 09:05:29.212386 210.82.61.xx.3566 > 218.249.xx.xx.19022: S [tcp sum ok] 3706006814:3706006814(0) win 16384 <mss 1460,nop,nop,sackOK> (DF) (ttl 114, id 28073, len 48)
  5. 09:05:35.247140 210.82.61.xx.3566 > 218.249.xx.xx.19022: S [tcp sum ok] 3706006814:3706006814(0) win 16384 <mss 1460,nop,nop,sackOK> (DF) (ttl 114, id 28080, len 48)
复制代码

发现只有SYN的请求数据包,没有ack的返回包。
2。ping 218.249.xx.xx
  1. C:\Documents and Settings\WangSP>ping 218.249.xx.xx

  2. Pinging 218.249.109.132 with 32 bytes of data:

  3. Reply from 218.249.xx1xx: bytes=32 time=1317ms TTL=48
  4. Reply from 218.249.1xx.xx: bytes=32 time=1056ms TTL=48
  5. Reply from 218.249.xx.xx: bytes=32 time=1167ms TTL=48
  6. Reply from 218.249.xx.xx: bytes=32 time=1004ms TTL=48

  7. Ping statistics for 218.249.xx.xx:
  8.     Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
  9. Approximate round trip times in milli-seconds:
  10.     Minimum = 1004ms, Maximum = 1317ms, Average = 1136ms
复制代码

虽然延时有点大,但也不会出现这样的问题

3.在gw1上发现一条策略
  1. iptables -A INPUT -i eth1 -p tcp --syn -m connlimit --connlimit-above 25 -j DROP
复制代码

对外网的初始华连接限制在25以内。注销掉看看,可是问题依旧。


请各位老师讨论一下吧。指点迷津!

论坛徽章:
0
2 [报告]
发表于 2006-11-17 09:51 |只看该作者
  1. [root@mnc-y root]# route -n
  2. Kernel IP routing table
  3. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
  4. 192.168.0.2     192.168.0.2     255.255.255.255 UGH   0      0        0 eth0
复制代码


这个加的没有用吧?

数据包走到GW1的时候

目的地址切换成GW2的22PORT,同时源地址也切换成本相192.168.0.2的地址

GE2接到数据后,目的地址是192.168.0.2了,但是你在GW2上做了一个SNAT,这个时候会切换成哪个IP呢?

而且我猜你的网络只能猜到GW1是两块网卡,GW2也是两块网卡

[ 本帖最后由 河里的鱼 于 2006-11-17 09:55 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-11-17 10:19 |只看该作者
原帖由 河里的鱼 于 2006-11-17 09:51 发表
[code][root@mnc-y root]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.2     192.168.0.2     255.255.255.255 UGH   0    ...


如果你不加这条路由 的话,他就会返回包给自己的默认网关的。。。。
由于他做MASQ,所以他的默认网关是下一跳路由地址。。。
所以必须要加的才能返回到gw1啊。。。

论坛徽章:
0
4 [报告]
发表于 2006-11-17 10:21 |只看该作者
原帖由 webyuhang 于 2006-11-17 10:19 发表


如果你不加这条路由 的话,他就会返回包给自己的默认网关的。。。。
由于他做MASQ,所以他的默认网关是下一跳路由地址。。。
所以必须要加的才能返回到gw1啊。。。


都在同一个网段,而且有ROUTE为什么会送到默认网关呢?

而且做了MASQ,SNAT出去的源地址是哪个啊?这个不太清楚

论坛徽章:
0
5 [报告]
发表于 2006-11-17 10:57 |只看该作者
我上传一下 结构图你就明白了。。

{3FC140C7-8D33-4D26-BC82-A2D71B7A731F}0.jpg (85.16 KB, 下载次数: 93)

{3FC140C7-8D33-4D26-BC82-A2D71B7A731F}0.jpg

论坛徽章:
0
6 [报告]
发表于 2006-11-17 11:02 |只看该作者
啊,还是不明白

在GW1上和GW2上的这两个地址(192.168.0.2和192.168.0.207)是不是不能直接进行通讯?

还有两个机器都是双网卡吗?

论坛徽章:
0
7 [报告]
发表于 2006-11-17 11:17 |只看该作者
原帖由 河里的鱼 于 2006-11-17 11:02 发表
啊,还是不明白

在GW1上和GW2上的这两个地址(192.168.0.2和192.168.0.207)是不是不能直接进行通讯?

还有两个机器都是双网卡吗?


gw1:
eth1:192.168.0.2
etho(wan):210.132.xx.xx

gw2:

eth1:192.168.0.207
eth0: 221.210.xx.xx

论坛徽章:
0
8 [报告]
发表于 2006-11-17 11:31 |只看该作者
如果那个gw1和gw2的192.168.0.2 192.168.0.207能互相通讯,那么加的那个路由就是多此一举

还有,MAS的话,那个包过来,在回去的时候被SNAT成221.210这个源地址了吧

论坛徽章:
0
9 [报告]
发表于 2006-11-17 13:46 |只看该作者
原帖由 河里的鱼 于 2006-11-17 11:31 发表
如果那个gw1和gw2的192.168.0.2 192.168.0.207能互相通讯,那么加的那个路由就是多此一举

还有,MAS的话,那个包过来,在回去的时候被SNAT成221.210这个源地址了吧


不加路由回包他会发给自己的默认网关吧!
跟是不是一个段没有关系的。

哥们,还是帮忙看一下是什么问题。会导致这个样子~

论坛徽章:
0
10 [报告]
发表于 2006-11-17 14:01 |只看该作者
原帖由 webyuhang 于 2006-11-17 13:46 发表


不加路由回包他会发给自己的默认网关吧!
跟是不是一个段没有关系的。

哥们,还是帮忙看一下是什么问题。会导致这个样子~



唉,我说得很清楚了吧,我还没有搞懂你的结构图

先不说ROUTE的问题,那个SNAT的地址是多少啊?SNAT后是哪个地址啊?

[ 本帖最后由 河里的鱼 于 2006-11-17 14:12 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP