day19、1 - NAT

一、NAT概述

1.什么是NAT

  • Network Address Translations,网络地址转换。

2.为什么需要NAT

  • ipv4地址严重不够用了,A B C类可以使用,D组播,E科研。将IP地址分为了私网IP和公网IP,再利用NAT技术就可以很好的解决ipv4地址不够用的问题

  • IP地址分为公网IP和私网IP

    • 公网IP只能在公网上(互联网)使用
    • 私网IP只能在内网中使用
  • 注意:公网上不允许出现私有IP地址私网IP可以重复在不同的内网使用

  • 私有IP地址范围:
    1)10.0.0.0/8(10开头的)
    2)172.16.0.0/16 - 172.31.0.0/16(172.16开头的一直到172.31开头的)
    3)192.168.0.0/16(192.168开头的)

  • 生活常识:

    • 公司中:比如说A公司可以定义一组192.168开头的私网IP,B公司也可以定义相同的一组192.168开头的私网IP,校园里面同样如此。但是这些私网IP想上网则发帧(源IP为私网IP)到所在局域网中连接外网的路由器,然后路由器在将帧发到运营商提供的公网上的路由器,此时路由器会将源IP为私网IP的帧一律禁止通过。因为公网上是不允许出现私有IP地址的。那么我们就需要花钱去运营商那购买或租公网IP,不需要公司中的每一个私网IP地址都使用一个公网IP,购买一个公网IP配到公司的总出口上,那么当私有IP发来上网的帧,经过出口利用NAT技术转化为公网IP,发到公网中;当公网发来帧时再转化成相应的私网IP
    • 家里购买路由器时会购买带宽,其实大部分的钱是用来租公网IP的,少部分才是购买带宽。购买之后运营商就提供给你一个账号密码,登录后就会给路由器的端口分配一个公网IP,之后就可以使用此公网IP上网。且购买的公网的IP分为静态公网IP和动态公网IP:当家庭中使用动态公网IP,只要你把账号一下或者一断电,如果对门也使用的动态公网IP,那么你原先用的公网IP会被对门使用,所以动态公网IP可以被很多人重复利用;静态公网IP会很贵,那么运营商不会提供给你账号,而是在路由器端口上静态绑定一个公网地址,如果租期为一年,那么全世界在一年内,此IP只能你用。

3.NAT作用和配置

  • NAT主要实现公网和私网IP地址的转换,一般是路由器或者防火墙上来完成,不建议在三层交换机上配置!(三层交换机的路由器只是个路由引擎,路由功不及路由器,所以一般三层交换机上层会连接路由器,路由器提供NAT功能)

4.NAT分类

1)静态NAT:1对1映射(又称静态PAT,端口映射技术)

2)动态NAT

3)PAT(端口地址转换,Port Address Translations),PAT也称为端口复用技术

二、三类NAT介绍

0.NAT转换遵循的规则

  • NAT技术在处理不同流向的帧时遵循:内网到外网转化源IP,外网到内网转换目标IP。即需要定义内外网端口
  • 三类NAT转换的依据都是NAT地址转换表
  • 注意:只有内网的消息发送到外网时,才会动态在NAT地址转换表中形成条目;当外网发往内网时,只能根据NAT转换表中已经形成的条目实现公网IP和私网IP的转换

1.静态NAT

  • 公司中给路由器配置静态NAT后,公司内部员工如何实现上网

    9F68C06C949CD9FE6788F118D447665C
  • 准备工作:静态NAT需要在公司总出口的路由器上手工配置NAT地址转换表,静态绑定私网与公网IP转换关系,且需要定义内外网端口内到外转化源IP,外到内转换目标IP

    即设置好NAT地址转换表,静态绑定一条192.168.1.1(私网IP) 与 100.1.1.1(公网IP)的转化关系,那么当有帧从内网到外网时,经过路由器连接外网的端口会利用静态NAT技术根据NAT地址转换表,转换源IP(私网地址—>公网地址);当有帧从外网到内网时,进过此端口会利用静态NAT技术根据NAT地址转换表,转换目标IP(公网地址—>私网地址)

  • 具体过程:

    • 现在公司内部员工PC配置的是私有IP如果192.168.1.1想上网访问百度的80端口,即访问百度网页,那么会发帧到网关,帧中源IP为192.168.1.1,目标IP为百度web服务器的IP200.1.1.1,经过路由器匹配路由表将帧运送到连接互联网的接口上,但是由于路由器上配置静态NAT,则会根据NAT地址转换表转换源IP(内到外),将192.1.1.1转换为100.1.1.1(运营商那购买的公司的公网IP),发送到互联网中,最终不断路由到达百度web服务器,收到的帧源IP为100.1.1.1(有点被欺骗的意思)不是192.168.1.1。
    • 百度服务器会包:目标IP为100.1.1.1,源IP为200.1.1.1。最后不断路由到达公司总出口的路由器外网接口,再次匹配NAT地址转换表转换目标IP(外到内),将100.1.1.1转换成192.168.1.1,再转发到达目标PC。

    注意:由于NAT技术的引入,互联网中与公司总出口路由器连接的第一台路由器实际是不需要配置公司内网私有IP的静态路由条目的,因为最终收到的公司内网所有PC发的帧都已经利用NAT转为100.1.1.1了

  • 缺点:如果192.168.1.2想上网就没有办法了,经过总出口路由器外接口,NAT地址转化表中没有对应的静态转化关系,所以不会进行私有共有IP地址的转换,那么到达互联网的第一台路由器时会将此帧干掉,因为公网中不允许出现私有IP地址。如果现在手动的再在NAT地址转换表中添加一条:192.168.1.2 – 100.1.1.1,那么到路由器收到从外网发到内网的包时,无法根据NAT地址转换表决定究竟替换哪一个与100.1.1.1对应的私网IP,因为有此时有两个私网IP与100.1.1.1对应。综上静态NAT不适用于公司

  • 静态NAT使用场景:

    • 先看一下3.PAT。如果使用PAT技术,公司内部有一台web服务器提供公司的宣传官网,互联网中的PC都能够访问此web服务器,但是如果我直接把私网地址IP192.168.1.3给互联网中的PC访问,那是绝对无法访问的。那么我们可以再购买一个公网地址100.1.1.2发布出去,让外网的人通过这个地址访问内网的web服务器,于是要依靠NAT地址转换表。那么此时遇到一个问题:由于只有内网的消息发送到外网时,才会动态在NAT地址转换表中形成条目。而web服务器一般是不需要上网的,也就是说web服务器不会向外网发帧,即不会在NAT地址转换表上形成192.168.1.3与100.1.1.2公私网地址转换的条目。
    • 所以解决这个问题,我们就可以手动的在NAT地址转换表中静态绑定一条:192.168.1.3 – 100.1.1.2;但是只绑定内外网IP转换关系的话,会有一个危险:外网的人可以通过100.1.1.2这个IP访问公司内部服务器的全部服务,即不止网页服务,所以如果不绑定端口号的话不安全。由于使用的是PAT,那么可以在在此条目后再静态绑定一个端口的转换关系。即完整条目为:192.168.1.3 – 100.1.1.2 80 – 80。再告诉大家使用100.1.1.2访问公司的宣传网页即可。
    • 如果此时公司中还要发布一台web服务器,如果还是用同一公网IP,那么必须绑定不同端口号,完整条目为:192.168.1.4 – 100.1.1.2 80 – 81。那么外网的PC可以通过http://100.1.1.2:81来访问第二台web服务器。这样会加大用户的记忆量,所以最好的办法就是再花点钱买另一个公网IP供第二台web服务器使用

    一个端口只能绑定一个IP地址,所以这个100.1.1.1绑定到外接口供公司内网员工上网使用;100.1.1.2不用绑定到接口,只是用来作用在NAT转换表中映射服务器的。这种不绑定到接口只用来映射服务器的IP称为虚拟公网IP地址(VIP)

2.动态NAT

  • 如果路由器使用动态NAT技术,是如何显示上网的

    D35C17EA6E841584B094B5EF8B5A134A
  • 原理:

    • 动态NAT转换地址也要根据NAT地址转换表,但不同于静态NAT的是,不需要手动静态绑定对应关系了。而是依据动态NAT映射,动态的在NAT地址转换表是生成私网IP和公网IP的转换关系。动态NAT映射中有内部地址池和外部池,内部地址池中存放公司内部员工PC的私网IP,外部池中存放购买的公网IP,内部地址池与外部池中的地址就是一种公网和私网地址的对应关系。
    • 当内网中192.168.1.1帧需要上网,经过公司总出口路由器外接口,会根据动态NAT映射,在内部地址池中找到192.168.1.1,映射外部池中的100.1.1.1,动态的在NAT地址转换表中生成一条条目:192.168.1.1 – 100.1.1.1,但是注意一旦外部池中的公网地址被使用–在NAT地址转换表中生成了与某个私网IP对应转换关系,那么此时如果另一个私网IP192.168.1.2想上网根据内部地址池找映射的外部池中的公网地址时会找不到,因为动态NAT外部池中的一个公网地址只能在一段时间内被一个私网IP映射。因此NAT地址转换表中此时只会动态形成一个条目,路由器外接口会根据NAT地址转换表,将源IP192.168.1.1(私网地址)转换为100.1.1.1(公网地址),接着转发到互联网。
    • 收到回包时同样根据NAT地址转换表,将目标IP100.1.1.1转换成192.168.1.1。如果总出口路由器没有收到192.168.1.1上网的帧,那么在24小时之后,NAT地址转换表的对应的条目会消失,外部池中又会出现100.1.1.1供使用,此时如果内网员工PC都想上网,谁先到先抢到100.1.1.1,动态形成NAT地址转换表条目,谁就可以上网,而剩下的人只能等待
  • 缺点:虽然不用手工静态绑定,但是还能不能实现同时让所有员工上网,一次只能一个IP上网。动态NAT已经被淘汰

3.PAT

  • 如果路由器使用动态NAT技术,那么如何实现同时让所有员工能上网

    0453CF5AA4CC3B4E26B8E2E14EF25933
  • 准备工作:在动态NAT的基础上只需要给动态NAT映射添加overload,使动态NAT映射实现复用即可

  • 过程:

    • 192.168.1.1想上网会将帧发送给网关,上网要打开浏览器,那么浏览器会随机的生成一个源端口号假设为5000,接着封装目标端口为80,源IP为192.168.1.1,目标IP为200.1.1.1。那么网关收到帧后根据路由表转发到自己的外接口,准备发送到互联网去,此时总出口的路由器外接口发送前会获取源IP为192.168.1.1,匹配内部地址池,匹配到再使用外部池中与之映射的公网IP10.1.1.1,(注意由于添加了overload复用,则就算此私网地址使用了外部池中的一个公网地址,当其他私网地址上网还可以使用同一个公网地址!)那么会动态在NAT地址转换表中生成一个条目:192.168.1.1–100.1.1.1,不光如此还会将帧中的源端口5000取出来,再由路由器生成一个的端口假设为1,添加到此条目后面表示一种端口的对应转换关系。那么在NAT地址转换表中就动态形成了一条完整的条目为:192.168.1.1 – 100.1.1.1 – 5000 – 1。接着将帧转发到互联网,最终百度web服务器收到包,源IP为100.1.1.1 ,源端口为1。
    • 于是百度服务器向100.1.1.1回包,包中的目标端口为1,所以当公司总出口路由器外接口收到帧后会查看NAT地址转换表中的记录,根据目标端口1与源端口5000的转换关系,将帧的目标端口1替换成5000。由于目标端口为1就已经确定了是哪一条条目,于是便将目标IP100.1.1.1转换成192.168.1.1。那么将帧(源IP为200.1.1.1,目标IP为192.168.1.1,源端口80,目标端口5000)发给对应的PC。
    • 当其他PC192.168.1.2在同一时段想上网,也可以根据动态NAT映射在NAT地址转换表中形成条目,如果192.168.1.2使用浏览器生成的随机端口恰好也为5000(一般都是随机的)也没关系,因为路由器会新生成一个端口假设为2与192.168.1.2发来的上网的帧中5000端口号形成对应转换关系。综上又会在NAT地址转换表中动态形成新的条目:192.168.1.2 100.1.1.1 5000 2,将要192.2上网的帧源IP替换成100.1.1.1,源端口替换成2。则最终收到回包时,可以根据目标端口为2正确找到此条目,并将帧的目标IP换成192.168.1.2,目标端口替换成5000,发给192.168.1.2PC。
  • 优点:现在100.1.1.1IP只是作为一个内网所有PC的身份而已,不具体到某个PC,而真正区分内网具体的PC,是依靠端口号,即实现了同时让所有员工上网

三、NAT相关命令

1.定义内外网端口

  • 定义内网端口(路由器连接内网的端口)

    int f0/0
    ip nat inside
    exit
    
  • 定义外网端口(路由器连接外网的端口)

    int f0/1
    ip nat outside
    exit
    

定义好内外网端口后:内网到外网转化源IP,外网到内网转换目标IP

2.配置PAT

1)定义内部地址池
  • 命令含义:access-list 1表示创建一个内部地址池容器,permit使用来做匹配的,将后面满足条件的IP存放到1池子中;也可以创建扩展ACL或者以命名的方式创建,要根据匹配的情况选择要创建哪一种ACL表来匹配内部地址池中应该存什么条件的地址

    conf t
    access-lsit 1 permit 192.168.0.0 0.0.255.255
    access-list 100 deny ip 192.168.1.0 0.0.0.255 172.168.1.0 0.0.0.255 #扩展ACL也可以,但是注意命名是什么,后面做PAT动态映射要注意是映射哪一张ACL表!
    

    会发现和ACL命令很像,但是注意一下区别:

    对于ACL来说此命令是用来过滤的,最终要应用到接口上;而对于PAT内部地址池来说是用来做匹配的,只是在PAT动态映射中使用

    无需定义外部地址池:因为外部地址池中只会存在一个公网IP,这个公网IP已经绑定在分隔内外网的路由器上的外网端口上了

2)做PAT动态映射(内到外)
  • 给IP做一个NAT,凡是从内网来的就将源IP与内部地址池表做匹配,匹配到就允许转换为公网IP,还添加端口复用技术

    conf t
    ip nat inside source list 1 int f0/1 overload
    

3.配置静态端口转换

  • 配置此命令可以解决上述外部访问内部服务器的问题

    conf t
    ip nat inside source static tcp/udp 192.168.1.3 80 100.1.1.2 80
    

    static是静态,将100.1.1.2 80端口转换成192.168.1.3 80端口;tcp/udp的选择在于内部服务器对外开放的服务依赖于哪一个协议

4.查看NAT相关信息

  • 不要忘了只要没有专门用来查看某配置的命令,一律在running-config中查看

    do show running-config
    

四、路由器加入NAT技术的路由原理

1.内网到外网

1)路由部分
  • 当路由器内网接口收到内网发来的帧后,先判断帧头中的目标MAC地址是否是自己,不是则丢弃,如果是则对帧进行解封装,露出报文,将报文路由到路由器内部,路由器根据路由表决定将报文从哪个接口路由出去,没有匹配到则丢弃,匹配到后将报文路由到相应的外网接口
2)NAT转换部分
  • 根据NAT地址转换表对报文中的源IP进行IP地址转换,再将报文TTL值-1、封装好帧头帧尾转发出去;如果未在NAT地址表中匹配到,则将报文TTL值-1,再封装好后转发出去

2.外网到内网

1)NAT转换部分
  • 当路由器外网接口收到帧后,先判断帧头目标MAC地址是否是自己,不是则丢弃,如果是则对帧进行解封装露出报文,根据NAT地址转换表,对报文中的目标IP进行IP地址转换。转换完后再将报文路由到路由器内部
2)路由部分
  • 路由器根据已经转换完的报文中的目标IP匹配路由表,无匹配则丢弃,匹配成功,则决定将报文从哪个接口路又出去,之后将报文路由到内网接口,封装好后转发出去

地址转换都是在路由器的外网接口上完成的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值