Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4968
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-25 10:03
文章分类
文章存档

2013年(6)

我的朋友

分类: 其他平台

2013-08-29 14:09:49

外网能正常访问

环境如下:

外网IP:218.94.2.137

局域网:A机器192.168.1.100  B机器192.168.1.101
A机器作为服务器,通过88端口提供了一个WEB服务,路由器上也设置了88端口映射到A这台机器。

B机器作为一般的内网客户端。

 

现在:

B上的浏览器通过外网IP访问A上的WEB服务 222.188.91.252:88,路由器通过端口映射转发给A服务器,这时候A服务器收到的IP包的源地址是192.168.1.101,他们采用的协议是TCP,TCP建立连接需要三次握手,这时候A服务器收到连接请求,回复一个应答包,目的IP是192.168.1.101,源IP是192.168.1.100,因为两个IP都是局域网的,所以路由器不经过封装,而是直接转发。

所以,B服务器收到的应答包源IP跟B服务器发送的请求包目的IP不一样,所以包被丢弃了。

A服务器一直等B机器再次应答,但B机器丢弃了那个包,所以一直等不到,结果连接失败了。

 

解决方案:
在网关服务器加条静态路由。
如:
网关服务器:192.168.0.1(交换机)
内部服务器:192.168.0.254(所要访问的web服务器)
外网IP:61.25.44.1
①给内部服务器添加一个跟外网一样的IP “61.25.44.1”
 内部服务器:192.168.0.254;61.25.44.1
②在网关服务器上添加一条静态路由
route ADD 61.25.44.1 MASK 255.255.255.255 192.168.0.254
不同的交换机在命令上有所不同,通过telnet命令进入路由器。

缺点:要是外网IP是动态的就每次改变IP都得重新设置一次。
不过也可以写个VBS脚本自动更改,我以前写过现在找不到了。
如果是用域名访问就更简单了,修改hosts记录就可以了。
hosts文件位于“C:\WINDOWS\system32\drivers\etc”
优点:只要修改一次
缺点:要是你有DNS服务器不是内部机器,就得修改每一台机的hosts记录才行
  • 本稿件为独家原创稿件,版权所有,引用或转载请注明出处。
  • 文章出处:
阅读(349) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~