原因-路由回流
当用路由器防火墙等设备将内网服务器发布到公网上,供外网用户访问的过程中出现的一种现象,就是你发现web服务器已经成功发布了,外网用户能够成功访问,但内网用户确无法访问到web服务器,这就是路由回流。造成路由回流的原因主要是出口设备路由器或者是防火墙做了NAT/PAT(也被称作源地址转换)和端口映射(也被称为目标地址转换)造成的。
组网图
- 内网用户与服务器不同网段
- 内网用户与服务器相同网段
解决方案
内部NAT方案
内网用户与服务器不同网段
E0/0和E0/2都需要做nat server
int e0/0
nat server protocol tcp global 202.103.1.1 www inside 192.168.2.2 www
int e0/2
nat server protocol tcp global 202.103.1.1 www inside 192.168.2.2 www
nat dns-map www.abc.com 202.103.1.1 tcp #若通过域名访问添加此配置
内网用户与服务器相同网段
acl number 3001
rule 0 permit ip source 192.168.1.0 0.0.0.255
int e0/2
ip add 202.103.1.1 255.255.255.0
nat server protocol tcp global 202.103.1.1 www inside 192.168.1.254 www
nat outbound 3001
int e0/0
ip add 192.168.1.1 255.255.255.0
nat server protocol tcp global 202.103.1.1 www inside 192.168.1.254 www
nat outbound 3001 #必须添加这条
nat dns-map www.abc.com 202.103.1.1 tcp #若通过域名访问添加此配置
内网DNS方案
在内网配置一台DNS服务器,内网的所有客户端的DNS的IP都填写这台内网的DNS服务器的IP地址,还需要在内网DNS服务器上配置转发器,转发器中填写公网上的运营商DNS服务器的IP地址就可以解决访问其他网站的问题了。
防火墙DNS Mapping方案
注意不是所有的防火墙都支持路由回流,配置域名+外网IP+内网IP即可。
路由器DNS Mapping方案
[R1] nat dns-map www.abc.com 192.168.1.100 80 tcp
其他方案
如果内网需要使用域名访问的用户不多,则可以在内网机器上的C:\Windows\System32\drivers\etc\hosts
添加以一行记录,192.168.1.100 www.abc.com
,这样就可以了。
小结
上述几种解决方案中,内网DNS解决方案最符合一般人的习惯,安装配置也是最简单的,但是需要一台DNS服务器。
内部NAT解决方案在企业级的路由器或者防火墙上很容实现,但是难度比内网DNS方案略大。
防火墙DNS Mapping和路由器DNS Mapping需要防火墙和路由器支持,目前大多数防火墙和路由器支持,但是购买前请咨询厂商。