专栏首页小手冰凉浅谈网络地址转换(NAT)

浅谈网络地址转换(NAT)

随着网络的发展,公网IP地址的需求与日俱增。为了缓解公网IP地址的不足,并且保护公司内部服务器的私网地址,可以使用NAT(网络地址转换)技术将私网地址转化成公网地址,以缓解IP地址的不足,并且隐藏内部服务器的私网地址。 NAT通过将内部服务器的私网IP地址转换成全球唯一的公网IP地址,是内部网络可以连接到互联网等外部网络上。 NAT的实现方式有三种: 静态NAT(static translation) 动态转换(dynamic translation) PAT(port-base address translation,基于端口的地址转换) 其中常用到的是静态转换和PAT,动态转换不太实用。因为动态转换的话,我们拥有的公网IP地址要和局域网要上网的ip地址一样多。这是不现实的。所以这里就不说动态ip了。 静态转换是一对一(一个公网IP地址对应一个私网IP地址)、一对多(一个公网IP地址对应多个私网IP地址)的转换,主要是用于我们内部需要让外网客户访问的服务器会做静态转换,简单的静态转换只能一对一,可以通过NAT端口映射来实现一对多的转换。 一对一转换的实现过程如下: Router(config)#ip nat inside source static 192.168.1.1 20.0.0.2 #将内网ip地址192.168.1.1在与外网通信时转换为20.0.0.2

Router(config)#in f0/0 #进入内部网络的接口 Router(config-if)#ip nat inside #在内部网络的端口启用NAT Router(config-if)#in f0/1 #进入连接外部网络的端口 Router(config-if)#ip nat outside #在连接外部网络的端口启动NAT(注意:和在内部网络的接口启用NAT的命令字有差别

经过以上配置,静态转换(一对一)就生效了。

接下来我们使用NAT端口映射,实现静态转换的一对多转换(跟一对一的转换差别不大,只是多定义了下端口号)。命令如下:

Router(config)#ip nat inside source static tcp 192.168.1.1 80 20.0.0.2 80 extendable #将内网ip地址为192.168.1.1的web服务器在与外网通信时转换为20.0.0.2

Router(config)#ip nat inside source static tcp 192.168.1.2 25 20.0.0.2 25 extendable #将内网ip地址为192.168.1.2的SMTP服务器在与外网通信时转换为20.0.0.2

以上两条配置成功后(同样需要分别在内部端口和外部端口启动NAT),当外网用户访问web服务器时,路由器会对应NAT转换条目,并查看端口号,然后把数据包传送给192.168.1.1的web服务器;当外网用户访问SMTP服务器时,路由器同样会查看NAT转换条目,并查看端口号,然后把数据包传送给192.168.1.2的SMTP服务器。这样就实现了基于NAT端口映射的一对多的静态转换。(当然,若有两台服务器都是相同服务的话,就不太适用了,如果更改服务默认的端口号,就会不利于用户的访问了。)

PAT

PAT可以实现一对多(一个公网IP地址对应多个私网IP地址)、直接复用路由器外部接口地址,两种实现方式。

一对多的实现命令如下(需要借助ACL控制列表):

Router(config)#access-list 1 permit 192.168.1.0 0.0.0.255 #定义ACL控制列表,允许192.168.1.0/24网段的流量通过。

Router(config)#ip nat pool 123 20.0.0.2 20.0.0.2 netmask 255.0.0.0 #定义合法的公网IP地址池,其中“123”为地址池的名字。可以自行定义。第一段ip为起始ip地址,第二段ip地址为结束ip地址,因为只用一个公网IP,所以起始和结束相同

Router(config)#ip nat inside source list 1 pool 123 overload #overload是启用端口复用方式,这条命令实现的是:以端口复用方式,将ACL 1 中的局部地址转换为123地址池中定义的全局IP地址。

接下来分别在内部端口和外部端口启用NAT即可生效。

直接复用路由器外部接口地址的实现过程如下:

Router(config)#access-list 2 permit 192.168.2.0 0.0.0.255 #定义ACL控制列表,允许192.168.2.0/24网段的流量通过

由于直接使用外部接口地址,因此不用定义IP地址池。

Router(config)#ip nat inside source list 2 in f0/1 overload #在全局配置模式,设置复用动态IP地址转换,在内部的ACL 2 的地址与路由器上与外网连接的接口合法公网IP地址之间建立地址转换。

以上就是几种常用的地址转换方式。在配置完成后可以在特权模式下执行:Router#debug ip nat命令后,让内网和外网通信,来查看调试信息,以便验证地址转换是否达到了我们所要实现的要求,若要关闭此功能,输入Router#no debug ip nat 即可。也可执行Router#show ip nat translations来查看转换条目;执行:Router#clear ip nat translations *删除除静态转换条目以外的所有条目。

NAT的故障排查思路

若遇到NAT故障,基本上可以归于两类:配置错误和没有正确理解NAT的工作方式。 一般可以通过Router#i show run来查看配置,以便检查以下几个方面是否存在问题: 1、是否设置了ACL,阻塞了进行过NAT或没有进行过NAT的流量; 2、定义需要进行NAT的ACL是,漏掉了需要进行地址转换的网络; 3、在NAT语句中漏掉了overload关键字。为了建立PAT,在NAT配置命令的最后,必须使用overload关键字,漏掉这个关键字,将会导致无法进行PAT,最终将会导致只有数目有限的主机可以访问公用网或互联网,而不是期望中的所有主机。 4、不对称路由导致NAT失败,就是在外部端口(outside)和内部端口(inside)配置反了; 5、NAT地址池和静态NAT表项中有重叠地址。要确保NAT地址池中的IP地址也不能用于静态NAT,这很重要。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Cisco ASA 应用NAT

    ASA上的NAT有动态NAT、动态PAT、静态NAT和静态PAT四种类型。 动态NAT的配置: 指定需要进行地址转换的网段: asa(config)# nat ...

    小手冰凉
  • Apache服务的安装及工作模式介绍

    我们都知道Linux上常见的web服务器有:apache、nginx、tomcat!

    小手冰凉
  • server 2016 DHCP自动分配地址

    3、确定DHCP服务器不应向客户机分发所有ip地址,要保留一些固定ip给打印服务器等使用

    小手冰凉
  • WebRTC,P2P技术,IPv6的一些思考

    不过放心,这篇文章不会只告诉你p2p”是什么“,也不会仅仅告诉你”为什么“,而要深刻探讨它的设计”是否合理“。

    Jean
  • 网络基础三 ARP 地址分类 NAT技术

    第1章 OSI回顾 1.1 TCP/IP协议族组成 应用层 主机到主机层 互联网层 网络接入层 1.2 总结应用层掌握的协议与端口号对应关系     http...

    惨绿少年
  • 如何绕过Windows 10的CFG机制

    前言 本文来源于我在2016年7月的研究结论,由于各种原因现在才能发布。2016年6月,Theori曾发表了一篇关于MS16-063中修补了的IE漏洞分析,文中...

    FB客服
  • 收获单季最大营收,“半死不活”特斯拉再续命一秒?

    与此前华尔街分析师的报告中所呈现的糟糕数据不同,“命悬一线”的特斯拉从悬崖边上撤回了一步。

    AI科技大本营
  • 论普通函数和箭头函数的区别以及箭头函数的注意事项、不适用场景

    箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程...

    OBKoro1
  • 关于IP地址的一些相关知识点

    IP地址是一个32位二进制数(但是用十进制描述)的地址,由4个8位字段组成,每个字段之间用点号隔开,用于标识TCP/IP宿主机。

    宸寰客
  • 网络基础知识“大”科普,别错过重点哦!

    网络是整个IT的基础,而TCP/IP协议毫无疑问是互联网的基础协议,没有它就根本不可能设备互联及互联网的访问,任何和互联网有关的操作都离不开TCP/IP协议。不...

    SDNLAB

扫码关注云+社区

领取腾讯云代金券