NAT - 网络地址转换

NAT

我们知道,一般在公司内部都使用私有地址进行通信。但由于私有地址只能在局域网中传输,如果想要外网上传输就需要公有地址。通常来说采用如下的架构,在出口路由器上配置一个公有 IP 和 ISP 的入口相连。

NAT - 网络地址转换_第1张图片

如果公司内部的设备想要和外网进行通信,就通过 R1 将私有 IP 转换成公有 IP 进行访问。这个转换的技术就称为 NAT - 网络地址转换,让内部的网络共享一个或多个公网地址继续访问。

NAT 解决的问题:

  1. IPV4 地址不够的问题
  2. 私有地址不能在公网上传输的问题

NAT 类型

Static NAT:一对一地址转换,一个私有对一个公有

Dynamic NAT:多对多地址转换,一组私有对一组公有

PAT:多对一地址转换,一组私有对一个公有

NAT 通信过程

Local 地址:转换前的私有地址

Global 地址:转换后的公有地址

如果以出口路由器为视角,和内部相连的称为 Inside 区域,和 ISP 相连称为 Outside 区域。则目前看共有四个 IP:

类型 描述
Inside Local 内部转换前的私有地址
Outside Local 想要去往的公有地址
Inside Global 内部转换后的公有地址
Outside Global 想要去往的公有地址

初始方向:是将Inside Local 转换为 Inside Global 地址。

回来方向:将 Inside Global 装换为 Inside Local.

转换方式:

Inside Local -> Inside Global: 从内部到外部,

ip nat inside source 

Inside Global -> Inside Local: 从外部到内部,

ip nat inside destination 

Outside global -> Outside local: 一般用到同网段的合并

ip nat outside source 

入接口过程:

  1. 先检查 ACL
  2. 查路由表
  3. NAT 转换
  4. 查路由表(将 Outside Global 转换成 Outside Local,会有该步骤)

出接口过程:

  1. 先检查 ACL
  2. 查 NAT
  3. 查 路由表

NAT 的 Trade-off

优点:

  1. 保留了公网地址
  2. 保持了网络通信的一致性
  3. 提供了安全性(因为在公网视角,并不知道公司局域网内部的 NAT 转换前的地址)

缺点:

  1. 缺失了端到端的连接
  2. 端到端的跟踪丢失
  3. 隧道技术变得更难配置
  4. TCP 内部可能中断(校验和可能不通过)
  5. 降低设备性能

NAT 配置

配置流程:

  1. 确定 inside 和 outside
  2. 确定 inside local 地址
  3. 确定 outside global 地址
  4. 配置

NAT - 网络地址转换_第2张图片

实现效果:

R1 表示内网,有 192.168.1.0 和 2.0 网段,配置默认路由将其数据包发给 R2.

R2 上开启静态路由到 192.168.1.0 和 2.0 网段,模拟内网情况。另外开启 EIGRP 表示和外网通信,注意这里仅仅开始 e0/1 23.1.1.0 所在网络。

R3 表示外网,配置 3.3.3.0 和 23.1.1.0 网络,纳入 EIGRP.

目前看 R1 ping 3.3.3.3 网络并不能通信(因为在 R3 没有去往 192.168.1.0 和 2.0 的路由),但可在 R2 上配置 NAT 进行转换。

Static 配置:

# R1
interface Loopback0
 ip address 192.168.1.1 255.255.255.0
!
interface Loopback1
 ip address 192.168.2.1 255.255.255.0
!
interface Ethernet0/0
 ip address 12.1.1.1 255.255.255.0
# 默认路由
ip route 0.0.0.0 0.0.0.0 12.1.1.2

# R2 
# 给公网网段配置一个接口,用于 EIGRP 传递
interface Loopback0
 ip address 2.2.2.2 255.255.255.0
!
interface Ethernet0/0
 ip address 12.1.1.2 255.255.255.0
 ip nat inside
 !
interface Ethernet0/1
 ip address 23.1.1.1 255.255.255.0
 ip nat outside
!
router eigrp 100
 network 2.2.2.0 0.0.0.255
 network 23.1.1.0 0.0.0.255
!
ip nat inside source static 192.168.1.1 2.2.2.10
ip nat inside source static 192.168.2.1 2.2.2.20
ip route 192.168.1.0 255.255.255.0 12.1.1.1
ip route 192.168.2.0 255.255.255.0 12.1.1.1
!
Router#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
--- 2.2.2.10           192.168.1.1        ---                ---
--- 2.2.2.20           192.168.2.1        ---                ---

# R3
!
interface Loopback0
 ip address 3.3.3.3 255.255.255.0
!
interface Ethernet0/0
 ip address 23.1.1.2 255.255.255.0
!
router eigrp 100
 network 3.3.3.0 0.0.0.255
 network 23.1.1.0 0.0.0.255
!

Dynamic 配置:

# R2
!
interface Ethernet0/0
 ip address 12.1.1.2 255.255.255.0
 ip nat inside
 !
interface Ethernet0/1
 ip address 23.1.1.1 255.255.255.0
 ip nat outside
!
# 声明 local 范围
Router(config)#access-list 10 permit 192.168.1.0 0.0.0.255
Router(config)#access-list 10 permit 192.168.2.0 0.0.0.255
# 声明外网地址范围
Router(config)#ip nat pool dynamic 2.2.2.1 2.2.2.254 netmask 255.255.255.0
# 应用 nat
Router(config)#ip nat inside source list 10 pool dynamic
Router(config)#end
Router#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
icmp 2.2.2.1:14        192.168.1.1:14     3.3.3.3:14         3.3.3.3:14
--- 2.2.2.1            192.168.1.1        ---  

PAT 配置, 通过端口号区分:

# 声明 local 范围
Router(config)#access-list 10 permit 192.168.1.0 0.0.0.255
Router(config)#access-list 10 permit 192.168.2.0 0.0.0.255
# 应用 nat
Router(config)#ip nat inside source list 10 interface ethernet 0/1 overload

你可能感兴趣的:(NAT - 网络地址转换)