学习日志27-NAT(网络地址转换)

NAT(Network Address Translation)技术主要用于实现内部私有网络的主机访问外部网络。一方面缓解了IPv4公有地址短缺的问题;另一方面NAT技术让外网无法直接与使用私有地址的内网进行通信,提升内网的安全性。

  • 公有地址:由专门的机构管理、分配,需要申请,可以在Internet上直接通信的IP地址;公网设备没有私网路由。
  • 私有地址:组织和个人可以任意使用,无法在Internet上直接通信(无法和公网上的设备直接通信),只能在内网使用的IP地址。校园网、家庭网络、门店网络、办公区网络 -> 局域网。
  • A、B、C类地址中各预留了一些地址专门作为私有IP地址:
    • A类:10.0.0.0 ~ 10.255.255.255
    • B类:172.16.0.0 ~ 172.31.255.255
    • C类:192.168.0.0 ~ 192.168.255.255

NAT技术原理:

  • 对IP数据报文中的IP地址进行转换,是一种在现网中被广泛部署的奇数,一般在网络出口设备,路由器或防火墙上。
  • 在私有网络内部使用私有地址,出口设备部署NAT,对于"从内到外"的流量,网络设备通过NAT将数据包的源地址进行转换(转换成特定的公有地址),而对于"从外到内的"流量,则对数据包的目的地址进行转换。
  • 没有NAT技术,PC可以访问web服务器,但是不能回包。

静态NAT:

  • 每个私有地址都有一个与之对应并且固定的公有地址,私有和公有地址之间是1对1映射
  • 支持双向互访:私有地址访(源地址)问Internet经过出口设备NAT转换时,会被转换成对应的公有地址。同时,外部网络访问内部网络时,其报文中携带的公有地址(目的地址)也会被NAT设备转换成对应的私有地址。
  • 缺点:内部网络有多少台主机,就需要多少个公网地址,没有节省公有地址。即便内网主机长时间离线或者不发送数据时,与之对应的公有地址也处于使用状态,导致资源浪费。

练习1:

  • 配置各个接口的IP,再理解一遍,交换机的接口属于二层物理接口,不能配IP,设置逻辑接口(按照网段设置),再配IP。
  • 配置AR1的路由,网络小,静态路由即可 ,分别通向Server1和PC1的路由,保证回包的路线是通的。公司内部网络中LSW1和AR1、Server1、PC1是直连路由,不用再设置静态路由信息。
  • AR2(在公网内),不用设置通往PC1和Server1的路由信息,公网中没有去往私网的路由。
  • 配置静态NAT-一个IP地址只能给一个接口用
    • 1.先让出口设备能够访问公网(访问不了某个网段,排障-先查路由表,确认是否有通往这个网段的路由)配置缺省路由,可以访问公网路由。
      1. 配置NAT。
      • 公网IP地址段:100.1.1.1/30,掩码30位,可用地址是2个(2的平方-2个不可用的),互联网段,这样设置掩码长度,可以节省IP地址。
      • 在出口设备的连接公网的接口配置,出现错误,接口的IP地址重复使用了(原来的接口IP地址不能再用作设置静态NAT的IP地址了),把AR1g0接口所在的网段扩充,修改掩码位数(需要额外购买IP) 需要这样配置(公网IP和私网IP 1对1映照,接口用过的IP不能再用,需要扩充)
    • Server1不能访问Client 1,没有抓到一个数据包,LSW1没有通往公网的路由,需要给LSW配置缺省路由

动态NAT-在地址池中,私有地址和公有地址还是1对1映射,无法提高公有地址利用率:

  • 为了避免静态NAT带来的公有地址浪费,动态NAT提出了地址池(购买的公有IP地址):所有可用的公有地址组成地址池。
  • 当内部主机访问外部网络时临时分配(先到先得)一个地址池中未使用的地址,并将该地址标记为"In use" 。当该主机不再访问外部网络时回收分配的地址,重新标记为"Not Use"
  • 生成一个临时的NAT映射表
  • 地址池里有多少公有IP地址,在同一个时间段内,只有这么多设备能上网,有多余的设备,那就等着其他设备下线。

NAPT-大公司使用,一个公有IP不够用

  • Network Address and Port Translation 网络地址端口转换:从地址池中选择地址进行地址转换时不仅转换IP地址,同时也对端口号进行转换,从而实现公有地址与私有地址的1:n映射,可以有效提高公有地址利用率。
  • 动态NAT不会转换端口号 No-PAT(No-Port Address Translation, 非端口地址转换)。
  • 练习
      1. 让出口设备能够访问公网 ,配置缺省路由信息:
      1. 配置NAPT
      • 配置地址池,编号,起始IP地址,终止IP地址
      • 配置acl,匹配需要访问的公网的流量,匹配vlan10和vlan20访问公网的流量
      • 进入到AR1的g1接口(需要部署NAT的接口),调用acl。(注意:地址池的地址不能和接口的IP地址冲突,需要修改地址池的地址-购买新的公有地址) 先删掉之前的,在配置新的地址池(1个公有地址,起始IP和结束IP一样)
      • 进接口,调用nat,当g1接口接收到acl 2000匹配的流量时,把它转换成地址池的公网IP。

Easy IP-小公司使用(或自家使用的),不用单独购买公有IP,只需把部署NAT的设备的出接口的IP设置成公有IP。

  • 工作原理和NAPT相同,同时转换IP地址、传输层端口,区别在于Easy IP没有地址池的概念,使用接口地址作为NAT转换的公有地址
  • 适用于不具备固定公网IP地址的场景,如通过DHCP、PPPoE拨号获取地址的私有网络出口,可以直接使用获取到的动态地址进行转换。
  • 配置练习:不用建立地址池,直接调用acl

练习:vlan 10不可以访问公网,vlan 20可以访问公网

  • 在nat里,acl规则中,通过的流量默认是被拒绝,想要谁通过,就写此流量的规则就行。
  • 在AR1这里,vlan 10的流量不做地址转换,acl 2000 规则列表里没有允许vlan 10通过的流量,数据包可以传输到200.1.1.1,但是回包的时候,不做地址转换,走到AR2这里,路由表中没有目的地址10.0.10.0/24这个网段对应路由信息,丢包。

NAT Server,公网访问私网

  • 外网主机主动访问[公有地址:端口]实现对内网服务器的访问;
  • 指定[公有地址:端口]与[私有地址:端口]的一对一映射关系,将内网服务器映射到公网,当私有网络中的服务器需要对公网提供服务时使用
  • 目的地址的转换,通过NAT映射表(需要访问映射后的目的IP)
  • 练习:
    • 目前client 1不能访问server 1,需要在AR1上配置NAT Server。公网想要访问内网的server 1(10.0.10.1 端口号-web网的),目的IP做一个转换,访问当前接口的IP(端口号为10000,可以自己定,不容易被攻击) http服务是基于tcp协议的。
    • 两台服务器,可以用一个公有IP,设置不同的端口号

出现的问题:

在内部网络的出口设备配置缺省路由而不是某个具体的公网网段路由:

  • 因为互联网上的网络段(路由条目)数量庞大(超过100万条),并且动态变化,出口设备无法、也没有必要学习和管理所有具体公网网段的路由。
  • 普通的公司防火墙、路由器或企业级网关的内存和转发芯片容量有限,无法存储和高效处理如此海量的路由表。
  • 缺省路由(0.0.0.0/0)意味着"所有非本地的、未知目的的流量,统统发给指定的下一跳(通常是ISP提供的网关地址)"
  • 特定场景,配置指向公网具体网段的明细静态路由,为了实现路径控制或特殊访问:多出口负载均衡或主备备份=有两条ISP线路(联通、电信);访问对端专线网络-公司和另一个商业伙伴通过专线(MPLS/VPN)互联。

同一个网段的直连接口的子网掩码保持一致:

  • 测试PC1或Server1是否能和Client 1能通信时,因为设置静态路由的时候修改了AR1g1接口的子网掩码,来扩充公网IP和私网的IP对应,但是忘记修改了AR2的g0接口(和AR1的g1直连的接口)的子网掩码,导致测试一直不通,所以同在一个网络段的直连接口的子网掩码要一致。
相关推荐
安科士andxe4 小时前
深入解析|安科士1.25G CWDM SFP光模块核心技术,破解中长距离传输痛点
服务器·网络·5g
YJlio6 小时前
1.7 通过 Sysinternals Live 在线运行工具:不下载也能用的“云端工具箱”
c语言·网络·python·数码相机·ios·django·iphone
CTRA王大大7 小时前
【网络】FRP实战之frpc全套配置 - fnos飞牛os内网穿透(全网最通俗易懂)
网络
今天只学一颗糖7 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
testpassportcn7 小时前
AWS DOP-C02 認證完整解析|AWS DevOps Engineer Professional 考試
网络·学习·改行学it
通信大师8 小时前
深度解析PCC策略计费控制:核心网产品与应用价值
运维·服务器·网络·5g
Tony Bai9 小时前
告别 Flaky Tests:Go 官方拟引入 testing/nettest,重塑内存网络测试标准
开发语言·网络·后端·golang·php
消失的旧时光-194310 小时前
从 0 开始理解 RPC —— 后端工程师扫盲版
网络·网络协议·rpc
游乐码10 小时前
c#变长关键字和参数默认值
学习·c#
叫我龙翔11 小时前
【计网】从零开始掌握序列化 --- JSON实现协议 + 设计 传输\会话\应用 三层结构
服务器·网络·c++·json