logo资料库

NAT实现外网对内网服务器的访问.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
NAT实现外网对内网服务器的访问
NAT 实现外网对内网服务器的访问 时间:2010-03-09 21:03 来源:未知 作者:admin 点击: 217 次 这两天,我们要做第二个综合实验了,要在小型的企业网络里面用 NAT 实现一系列的 功能。其中有一项是给企业内部网的 Web Server 和 FTP Server 转换两个比较固定的地址,以实 现外网对内外服务器的访问,从而实现企业对外发布信息。但是,一般的网友说的都是没有考虑 这两天,我们要做第二个综合实验了,要在小型的企业网络里面用 NAT 实现一系列的功能。 其中有一项是给企业内部网的 Web Server 和 FTP Server 转换两个比较固定的地址,以实现外网 对内外服务器的访问,从而实现企业对外发布信息。但是,一般的网友说的都是没有考虑这种情 况的配置,至少把一个地址或者几个地址转换成了一大堆内网地址,以解决地址不足的问题,但 是如果有一个或者 Server 需要允许外网对他们进行访问的,那该怎么做呢?我在网上找了好久, 最后还去了 Cisco 官网和锐捷的论坛,终于找到了解决的办法。这是最全的。 一、NAT 简介: NAT(Network Address Translation)网络地址转换。 最早出现在思科 11.2 IOS 中,定义在 RFC1631 和 RFC3022 中。NAT 最主 要的作用是为了缓解 IPv4 地址空间的不足。 同时也带来了一些问题,如每个数 据包到达路由器后都要进行包头的转换操作,所以增加了延迟;DNS 区域传送, BOOTP/DHCP 等协议不可穿越 NAT 路由器; 改动了源 IP,失去了跟踪到端 IP 流 量的能力,所以使责任不明确了。 但是利还是要大于弊的,不然也不会学习它 了!最新的 CCNA640-802 学习指南中依然有专门的一章来讲解 NAT,它的重要性 可见一斑。 二、NAT 术语: 比较难理解,所以这里用最明了的语言总结如下 内部本地地址( inside local address ):局域网内部主机的地址, 通常是 RFC1918 地址空间中的地址,称为私有地址。(待转换的地址) 内部全局地址(inside global address):内部本地地址被 NAT 路由器 转换后的地址,通常是一个可路由的公网地址。 外部全局地址(outside global address):是与内部主机通信的目标 主机的地址,通常是一个可路由的公网地址。 外部本地地址(outside local address):是目标主机可路由的公网地 址被转换之后的地址,通常是 RFC1918 地址空间中的地址。 三、NAT 配置详解: 静态 NAT:将一个私有地址和一个公网地址一对一映射的配置方法,这种方式不 能节省 IP,通常只为需要向外网提供服务的内网服务器配置。
如图所示: PC1 地址:192.168.0.2/24 PC2 地址:192.168.0.3/24 R1 E0/0 地址:192.168.0.1/24 R1 S0/0 地址:202.106.0.1/24 R2 S0/0 地址:202.106.0.2/24 R2 E0/0 地址:202.106.1.1/24 PC3 地址:202.106.1.2/24 (模拟公网服务器) 各接口地址按上面配置好之后,在 R1 和 R2 上配置路由(注意不要为 192.168.0.0 网络增加路由项,因为私有网络不可以出现在公网路由表中,不然 也不叫私有地址了) 路由配置好之后在 R1 上可以 ping 通 PC3,但是 PC1 只能 ping 到 R1 的 S0/0,再向前就 ping 不通了。因为没有 192.168.0.0 网络的路由表项,所以被 丢弃了!下面在 R1 上配置静态 NAT 让 PC1 可以和 PC3 通信。 Router(config)#int fa0/0 Router(config-if)#ip nat inside //将该接口标记为内部接口 Router(config-if)#int s0 Router(config-if)#ip nat outside //将该接口标记为外部接口 Router(config-if)#exit Router(config)#ip nat inside source static 192.168.0.2 202.106.0.3 // 将来自标记为内部接口的地址做为转换源,将 192.168.0.2 一对一的转换成 202.106.0.3 2、动态 NAT: 现在 PC1 就可以和 PC3 通信了。但是 PC2 不能,因为 R1 并没有为 PC2 提供 地址转换。当然我们可以在 R1 上像给 PC1 做静态转换一样也给 PC2 做一个,可 如果我们有 100 台机器工作量就太大了。下面在 R1 上再继续配置:
Router(config)#access-list 10 permit 192.168.0.0 0.0.0.255 //定义标准 访问控制列表 10 只允许定义的地址能够被转换 Router(config)#ip nat pool out 202.106.0.4 202.106.0.24 netmask 255.255.255.0 //定义名称为 out 的地址池。 Router(config)#ip nat inside source list 10 pool out //将访问控制列表 定义的地址和地址池关联这样就有前 21 个内部主机能够得到公网地址。 现在 PC2 也可以和 PC3 通信了。这就是动态 NAT,这种方式也不能节约 IP 地址。 有一百台主机就要 100 个公网 IP,不常用。 3、PAT(Port Address Translation)端口地址转换:用一个或多个公网 IP 为 多个私有地址提供转换,能够节省大量 IP 地址,这种方式在现实网络环境中最 常用。 Router(config)#ip nat inside source list 10 pool out overload // 只需要在动态 NAT 的基础上多出一个“overload”就可以让上面的 21 个公网地 址反复使用。 如果我们只有一个公网地址且已经分配给了 R1 的 S0/0 口,可以使用下 面的命令来对这仅有的一个公网地址反复利用或叫超载。 Router(config)#ip nat inside source list 10 interface serial 0 overload //就是在 R1 上不设置地址池,因为只有一个公网地址,而只对 S0/0 接口的地址 超载。 注意:一条 NAT 转换条目要占用 160 字节内存,因此 NAT 的转换数目受路由器的 内存限制。 4、配置端口映射:看配置就明白了 还是上面的图和 IP,看下面的配置 Router(config)#int fa0/0 Router(config-if)#ip nat inside //将该接口标记为内部接口 Router(config-if)#int s0 Router(config-if)#ip nat outside //将该接口标记为外部接口 Router(config-if)#exit Router(config)#ip nat inside source static tcp 192.168.0.2 80 202.106.0.3 80 //将 192.168.0.2 的 80 端口一对一的转换成 202.106.0.3 的 80 端口,也就 外网用户在浏览器里输入 202.106.0.3 时,会打开 192.168.0.2 上的 WWW 服务。 这里公网地址也 可以改成 interface Serial1/0 80,如下: Router(config)#ip nat inside source static tcp 192.168.0.3 21 interface Serial1/0 21 //如果只有一个公网地址还可以这样来转换。这样外网访问的不 同服务就会定向到不同的内网服务器。 5、配置 TCP 负载平衡:还是上图 IP 也不变,假如 PC1 和 PC2 提供的是相同的 WWW 服务,为了实现负载平衡可以做如下配置: Router(config)#ip nat pool www 192.168.0.2 192.168.0.3 netmask 255.255.255.0 type rotary //配置地址池 www 并设成旋转。 Router(config)#access-list 10 permit 202.106.0.3 Router(config)#ip nat inside destination list 10 pool www //这样当外网
主机访问 202.106.0.3 的时候路由器会自动定向到 192.168.0.2 再有请求就定向 到 192.168.0.3 如果地址池里还有 别的地址会依次循环,实现负载平衡的目的。 注意,地址有了,网络中还要有对应的主机存在,否则会使对方第一次连接失败。 (责任编辑:admin)
分享到:
收藏