Cisco NAT --- 从内网用公网IP地址访问内网服务器

时间:2024-02-19 10:40:11

https://blog.csdn.net/delicioustian/article/details/49205889?locationNum=9

好吧,我承认这个标题挺难读 , 从一会儿内网一会儿公网一会儿又内网的。

但是这确实一个很实在的问题。如果你用的是ASA或其他防火墙,可以直接

跳过,这东西对防火墙来说实现起来太容易。我们的目标还是思科的路由器。

 

不过这个功能对于思科的路由器来说仅仅只是可以实现,效果不是太好,有

些副作用,比如效率问题,所以前些日子,南通的丁博士问我这个问题的时候,

我建议他修改网站代码,不要写死域名,仍然通过内网IP地址访问。

 

 

 

如图所示: 内网的一台电脑需要通过互联网的DNS访问内网的一台服务器.

当公司内部无DNS或PC的DNS设置不是公司内部的DNS服务器时,就无法

通过域名来访问这个服务器。

换句话说就是 192.168.1.100可以直接访问10.1.1.100,但192.168.1.100

无法访问218.2.2.2 。

 

为了达成通过192.168.1.100 直接访问218.2.2.2 , 我们得利用一点小技巧。

英文叫:NAT Hairpinning 或者 NAT loopback 或者 NAT on-a-stick.

有一个思科官方的文档可参考   http://www.cisco.com/c/en/us/support/docs/ip/network-address-translation-nat/6505-nat-on-stick.html

美食有舌尖上的中国,路由有NAT上的拐棍。。

其实现原理的确像一个拐棍一样: 包进入以后,从自己先转换成一个地址,

然后再从这个地址访问互联网地址,再通过自己拐回来。。

 

关心一下配置,R2 g0/1 为内网口  , g 0/0为外网口。为了实现内网用户上网

以及外网用户访问服务器,先在g0/0,g0/1上启用地址转换。

#

int g 0/0

ip add 218.2.2.2/30

ip nat enable  

int g 0/1

ip add 10.0.1.1/30

ip nat enable

ip add 4.4.4.1/24  #在内网口上加一个子地址

no ip redirects   #禁止路由器发送重定向包

#

#建一个NAT地支池,跟刚才加的子地址在同一个子网

ip nat pool stickpool 4.4.4.2 4.4.4.254 prefix-length 24

#定义一个ACL,抓出内网访问的设备地址

access-l 10 permit 192.168.1.0   0.0.0.255

#开始拐了。。

ip nat source list 10 pool stickpool overload

#定义一个ACL,允许外网用户访问内网的10.1.1.100

access-l 101 permit tcp any host 10.1.1.100 eq 80

#拐回去了。。
ip nat source static tcp 10.1.1.100 80 218.2.2.2 80 extendable

ip nat source list 101 int g 0/1 overload

 

大功告成,测试OK,内网用户也可以通过218.2.2.2:80访问了。

直接用外网DNS毫无问题。