NAT(网络地址转换)

发布时间:2024年01月16日

NAT(Network Address Translation)

  • 当今的互联网是由一个个小的自治系统组成,一个家庭,一个企业就是一个小的自治系统
  • 自治系统内部有着众多的设备需要IP地址联网,每个地址都需要去IANA申请明显做不到,所以就会使用私有IP地址进行分配
  • 私有IP地址无法做到互联网通信,在内网之中就需要一个默认网关来代替大家请求互联网数据
  • NAT网络地址转化技术能够将数据包中的IP地址进行转换

NAT优缺点

优点缺点
节省IP地址空间增加转发延迟
解决IP地址重叠问题丧失端到端的寻址能力
增加网络的连入Internet的弹性某些应用不支持NAT
网络变更的时候减少IP重编地址带来的麻烦需要一定的内存空间支持动态存储NAT表项
对外隐藏内部地址,增加网络安全性需要耗费一定CPU内存资源进行NAT操作

NAT术语

术语英文解释
内部本地inside local转换之前源地址
外部本地outside local转换之前目的地址
内部全局inside global转换之后源地址
外部全局outside global转换之后目的地址
  • inside表示源地址,outside表示目的地址
  • local表示转换之前,global表示转换之后

静态NAT

  • 一对一映射,为每个内部的地址指定一个公网IP地址
  • 这种方法主要用在内网中存在需要对公网提供服务的服务器常见,类似的例子由WEB服务器、邮件服务器、FTP服务器

在这里插入图片描述

  • 地址配置
R1(config)#int e0/0
R1(config-if)#ip add 192.168.13.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int e0/1
R1(config-if)#ip add 100.12.12.1 255.255.255.0	#模拟外网IP
R1(config-if)#no sh
R2(config)#int e0/0
R2(config-if)#no sh
R2(config-if)#ip add 100.12.12.2 255.255.255.0
R2(config)#int lo0
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R3(config)#int e0/0
R3(config-if)#no sh
R3(config-if)#ip add 192.168.13.3 255.255.255.0
  • 在R1,R3上添加一条默认路由指向运营商
R1(config)#ip route 0.0.0.0 0.0.0.0 100.12.12.2
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.13.1
  • 在R1上做静态nat地址转换,我们找运营商获得一个权限的公网IP地址,假设是100.12.12.3,然后将其对应的分配给192.168.13.3,那么R3在上网的时候就可以用公网IP地址对外了
R1(config)#int e0/0
R1(config-if)#ip nat inside
R1(config-if)#int e0/1
R1(config-if)#ip nat outside
R1(config)#ip nat inside source static 192.168.13.3 100.12.12.3
  • 在R3上验证外网
R3#ping 2.2.2.2

PAT(端口地址转换)

  • 正常情况下我们家用宽带,或者仅仅只是有上网需求的情况下,没必要为每个设备都申请一个公网IP(也做不到)
  • 在数据通信的时候只是需要一个端口号用于接收和发送数据即可,而一个IP地址可以有65535个端口号,所以将端口号轮流着分配给内网设备即可
    在这里插入图片描述
  • 配置IP地址
R1(config)#int e0/0
R1(config-if)#ip add 192.168.134.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int e0/1
R1(config-if)#ip add 100.12.12.1 255.255.255.0
R1(config-if)#no sh

R2(config)#int e0/0
R2(config-if)#ip add 100.12.12.2 255.255.255.0
R2(config-if)#no sh

R3(config)#int e0/0
R3(config-if)#ip add 192.168.134.3 255.255.255.0
R3(config-if)#no sh

R4(config)#int e0/0
R4(config-if)#ip add 192.168.134.4 255.255.255.0
R4(config-if)#no sh
  • 给R1,R3,R4添加默认路由
R1(config)#ip route 0.0.0.0 0.0.0.0 100.12.12.2
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.134.1
R4(config)#ip route 0.0.0.0 0.0.0.0 192.168.134.1
  • 在R1上进行配置pat
R1(config)#int e0/0
R1(config-if)#ip nat inside
R1(config-if)#int e0/1
R1(config-if)#ip nat outside
R1(config)#access-list 1 permit 192.168.134.0 /24
R1(config)#ip nat inside source list 1 int e0/1 overload
  • 测试网络连通
R3#ping 100.12.12.2
R4#ping 100.12.12.2

端口映射

  • NAT会导致只能内网主动访问外网,而互联网没法主动访问内部网络,这样虽然保护了内部网络,但是却丢失了端到端通信的过程
  • 端口映射可以将公网IP地址的端口对应到内网某个IP的端口号,从而让内网的设备也可以对外发布服务
  • 端口映射可以让内网多个IP地址共用一个公网IP,可以节约很多成本

在这里插入图片描述

  • 做端口映射
R1(config)#ip nat inside source static tcp 192.168.134.3 23 int e0/1 23
把R3地址23端口映射到R1的e0/1上的23端口了
  • 开启R3的telnet服务
R3(config)#line vty 0 4
R3(config)#pass cisco
R3(config)#login
R3(config)#tran in telnet
  • 在R2上尝试telnetn R1的公网地址
R2#telnet 100.12.12.1
  • 查看一下端口映射关系
R1#show ip nat br

负载均衡

  • NAT也支持对公网IP地址的请求,分发给内部的设备来进行处理
  • R1,R3,R4是内网,内网的设备要求能访问外网
  • R2是外网,外网的设备能访问内网的服务
    在这里插入图片描述
  • 开启R3,R4telnet服务
R3(config)#line vty 0 4
R3(config)#pass cisco
R3(config)#login
R3(config)#tran in telnet

R4(config)#line vty 0 4
R4(config)#pass cisco
R4(config)#login
R4(config)#tran in telnet
  • 通过nat做负载均衡
R1(config)#access-list 2 permit 100.12.12.1
R1(config)#ip nat pool telnetservers 192.168.134.3 192.168.134.4 netmask 255.255.255.0 type rotary	#轮询
R1(config)#ip nat inside destination list 2 pool telnetservers
  • 在外网telnet R1的公网地址验证负载均衡是否成功
R2#telnetn 100.12.12.1
文章来源:https://blog.csdn.net/dreamnn/article/details/135561548
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。