首页 新闻 会员 周边

UDP 疑问

2
悬赏园豆:100 [已解决问题] 解决于 2010-08-17 09:32

小弟才疏学浅,有个关于UDP的问题想请教请教各位高人。

网络布局图片说明

如上图所示,这是一个十分普通的网络,首先分析分析问题:

用户A到用户F均是外网用户,我们不认识的人。在公司内部,架设了一个中心VPN,然后下来是分为内部网和DMZ区域。中心VPN的IP假设是:192.168.180.2,DMZ区域的服务器A的IP是:192.168.180.3,服务器B的IP是:192.168.180.4,共用的网关是:192.168.180.1。

接下来,问题来了,我做了一个UDP的程序,服务器端架设在服务器A上面,然后把客户端给了外网的某个用户,就假如说是用户C吧,然后用户C请求我们服务器A的地址:192.168.180.3,端口是1234。由于服务器A在DMZ区域,他是暴露在公网上的,在公网上的IP就是192.168.180.3(不知道DMZ是否出去之后IP会变么?),用户C也访问到了,服务器端程序上显示用户C已经登录,但是服务器端回传数据到用户C的时候,用户C始终收不到数据,不知道这是为什么了。。。回传的时候,传的IP和端口就是用户C发过来的时候的IP和端口。

刚刚又测试一次,公网对公网可以,但是服务器到路由器下面的电脑,或者服务器到VPN下面的电脑就回传不过去数据了,所以问题可能出现在服务器端获取的客户端IP上,不知道有没有哪位高人可以指点指点,关于服务器端获取的客户端的公网IP应该怎么样获取?

问题补充: 现在已经好了,但是又有另外一个问题,用户C,用户A之间要进行互相之间的点对点的访问,不需要通过服务器中转,通过的是UDP打洞实现的。 打洞的具体流程是: 用户A向服务器A发送要求和用户C通话,同时发送一个空包到用户C,打通到用户C的洞。 然后服务器A发送一个打洞通知到用户C,要求用户C打通到用户A的洞。 用户C接受到打洞通知,发送一个空包到用户A,打通与A的洞,然后发送一个打洞成功的消息到服务器A。 然后服务器A发送一个打洞成功的消息给用户A。 这样子的打洞流程不知可否? 服务器A获取的端口是客户A和客户C的客户端程序生成的端口,现在问题就是在服务器A怎么去获取客户A和客户C通过路由器出来之后的端口呢?这个端口是否和客户端生成的端口是一样的呢?
iceknp的主页 iceknp | 初学一级 | 园豆:87
提问于:2010-08-09 10:10
< >
分享
最佳答案
0

客户端使用 netstat 查看下客户端c和服务器a(192.168.180.3 1234)建立连接的ip地址和端口是什么.

收获园豆:40
Launcher | 高人七级 |园豆:45045 | 2010-08-09 10:31
嗯,这个工具非常好用,谢谢。
iceknp | 园豆:87 (初学一级) | 2010-08-09 14:22
关于UDP穿透,你可以参看类似的文章: http://blog.csdn.net/xwchen/archive/2008/02/15/2097772.aspx
Launcher | 园豆:45045 (高人七级) | 2010-08-09 15:25
其他回答(2)
0

看了你的问题我也觉得很困惑

显示C登陆了,表示已收到数据,但不能回传。。。

但是DMZ在公网上的IP绝对不会是192.168.180.3,这个是内网IP,外网访问DMZ时会转换。

我想了想,问题可能在DMZ的访问规则,一般应该会加一条不能访问内网,为了安全,在应用VPN时,可以认为A-F他们都属于内网的主机,但DMZ不能访问内网,也许这就是问题的所在。

http://baike.soso.com/v666720.htm?pid=baike.box

收获园豆:30
dnteye | 园豆:308 (菜鸟二级) | 2010-08-09 10:31
谢谢!
支持(0) 反对(0) iceknp | 园豆:87 (初学一级) | 2010-08-09 14:21
0

DMZ 出去之后IP 应该不会变的,本身就相当局域网,你用的VPN工具有没有其他限制?

收获园豆:30
winzheng | 园豆:8797 (大侠五级) | 2010-08-09 13:31
没有做其他限制,现在就是服务器A怎么去获取客户C和客户A通过路由出来之后的端口号了,还有这个端口和在各自客户端生成的端口是否是一样的呢?
支持(0) 反对(0) iceknp | 园豆:87 (初学一级) | 2010-08-09 14:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册