使用EVE-NG-锐捷实现NAT

一、NAT基础知识

NAT(Network Address Translation,网络地址转换)是一种在计算机网络中广泛使用的技术,以下是关于它的一些基础知识:

1.定义与作用

  • 定义:NAT 是一种将 IP 数据包中的 IP 地址转换为另一个 IP 地址的技术,一般用于实现私有网络与公共网络之间的通信。
  • 作用
    • 解决 IP 地址短缺问题:在私有网络中可以使用大量的私有 IP 地址,这些地址在内部网络中可以正常使用,但无法直接在互联网上路由。通过 NAT 技术,私有网络中的多个设备可以共享一个或少量的公网 IP 地址来访问互联网。
    • 增强网络安全性:NAT 可以隐藏内部网络的拓扑结构和设备信息,外部网络只能看到 NAT 设备的公网 IP 地址,而无法直接访问内部私有网络中的设备,从而在一定程度上提高了网络的安全性。
    • 一台服务器7x24小时开机,提供对外访问业务,需确保随时让别人访问到,随时处于安全状态
      一服务器有公网IP,可以在Internet上路由,可以随时随地被访问到服务器开放的一切服务,每一套系统默认情况下都会开启一些常见的服务端口,假设一台网站服务器,要仅对外开放网站服务(http服务,80端中)那么其他的端口默认也是开启的,如果直接把服务器放在公网上,那么其他端口上的服务如果存在漏洞,服务器很容易被攻击,如果用防火墙一个一个关闭端口,会很麻烦,这时使用NAT静态转换技术就可以把服务器保护在内网中,使用NAT针对内网服务器IP的某一个端口服务,将其映射到公网IP上的某一个端上,别人再访问
      服务器公网1P时是映射的某一项服务,如果访问其他没有映射的端口服务则会失败。

2.工作原理

  • 基本原理:当内部网络中的设备发送数据包到外部网络时,NAT 设备会修改数据包的源 IP 地址,将其替换为 NAT 设备的公网 IP 地址,同时记录下这个转换关系。当外部网络的回应数据包返回时,NAT 设备再根据记录的转换关系,将目标 IP 地址转换回内部设备的私有 IP 地址,从而实现通信。
  • 转换类型
    • 静态 NAT:静态地将一个私有 IP 地址映射到一个公网 IP 地址,一对一的关系,常用于需要外部网络直接访问内部特定服务器的场景。
    • 动态 NAT:从一个公网 IP 地址池中动态地为内部设备分配公网 IP 地址,当内部设备需要访问外部网络时,NAT 设备从地址池中选取一个未被使用的公网 IP 地址进行映射,使用完毕后再释放回地址池,多用于服务企业日常上网。
    • 网络地址端口转换(NAPT):也称为 PAT,它不仅转换 IP 地址,还转换端口号。可以使多个内部设备通过同一个公网 IP 地址的不同端口号来与外部网络进行通信,实现了多个私有 IP 地址到一个公网 IP 地址的多对一映射,是目前应用最广泛的 NAT 方式。

3.NAT 的配置

  • 配置要点
    • 定义内部和外部接口:在 NAT 设备上,需要明确指定哪些接口连接到内部网络,哪些接口连接到外部网络。
    • 配置地址转换规则:根据实际需求,配置静态 NAT、动态 NAT 或 NAPT 的转换规则,包括指定内部网络的 IP 地址范围、公网 IP 地址或地址池等参数。
  • 示例:以锐捷路由器为例,配置动态 NAT 时,首先需要定义访问控制列表(ACL)来指定允许进行地址转换的内部网络地址范围,然后创建 NAT 地址池,最后将 ACL 和地址池关联起来,应用到相应的接口上。

4.NAT 的优缺点

  • 优点
    • 有效利用 IP 地址:通过地址转换,使多个内部设备能够共享公网 IP 地址,大大节省了公网 IP 地址资源。
    • 增强网络安全:隐藏内部网络结构,减少了外部网络对内部网络的直接攻击面,一定程度上提高了网络的安全性。
    • 便于网络管理:内部网络可以使用私有 IP 地址进行规划和管理,无需为每个设备分配公网 IP 地址,简化了网络配置和管理工作。
  • 缺点
    • 增加网络延迟:由于 NAT 设备需要对数据包的 IP 地址和端口号进行转换处理,会增加一定的处理时间,导致网络延迟略有增加。
    • 影响某些应用程序的正常运行:一些基于端到端 IP 通信的应用程序,如某些 P2P 应用、IPsec VPN 等,可能会因为 NAT 的地址转换而出现兼容性问题,导致无法正常工作。

7.静态 NAT 配置

静态 NAT 是将一个私有 IP 地址静态地映射到一个公网 IP 地址,常用于需要外部网络直接访问内部特定服务器的场景。

! 进入全局配置模式
Router# configure terminal

! 定义内部服务器的私有IP地址和对应的公网IP地址映射
Router(config)# ip nat inside source static 192.168.1.100 203.0.113.1

! 指定连接内部网络的接口
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip nat inside
Router(config-if)# exit

! 指定连接外部网络的接口
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip nat outside
Router(config-if)# exit

! 保存配置
Router(config)# end
Router# write memory

上述配置中,将内部服务器的私有 IP 地址192.168.1.100静态映射到公网 IP 地址203.0.113.1,并指定了内部和外部接口。

8.动态 NAT 配置

动态 NAT 是从一个公网 IP 地址池中动态地为内部设备分配公网 IP 地址。

! 进入全局配置模式
Router# configure terminal

! 定义访问控制列表(ACL),允许内部网络的特定IP地址进行NAT转换
Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255

! 创建NAT地址池
Router(config)# ip nat pool mypool 203.0.113.10 203.0.113.20 netmask 255.255.255.0

! 配置动态NAT转换规则,将ACL匹配的内部IP地址映射到地址池中的公网IP地址
Router(config)# ip nat inside source list 1 pool mypool

! 指定连接内部网络的接口
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip nat inside
Router(config-if)# exit

! 指定连接外部网络的接口
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip nat outside
Router(config-if)# exit

! 保存配置
Router(config)# end
Router# write memory

此配置中,允许内部网络192.168.1.0/24的设备使用地址池mypool中的公网 IP 地址进行访问。

9.网络地址端口转换(NAPT)配置

NAPT 是最常用的 NAT 方式,它可以使多个内部设备通过同一个公网 IP 地址的不同端口号来与外部网络进行通信。

! 进入全局配置模式
Router# configure terminal

! 定义访问控制列表(ACL),允许内部网络的特定IP地址进行NAT转换
Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255

! 配置NAPT转换规则,将ACL匹配的内部IP地址映射到外部接口的公网IP地址
Router(config)# ip nat inside source list 1 interface GigabitEthernet0/1 overload

! 指定连接内部网络的接口
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip nat inside
Router(config-if)# exit

! 指定连接外部网络的接口
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip nat outside
Router(config-if)# exit

! 保存配置
Router(config)# end
Router# write memory

上述配置中,overload关键字表示使用端口地址转换,内部网络192.168.1.0/24的设备通过外部接口GigabitEthernet0/1的公网 IP 地址访问外部网络。

查看配置文件(startup-config):①cd nvram: ②dir

查看保存的配置:show startup-config

10.补充

  • 查看配置文件(startup-config):①cd nvram: ②dir
  • 查看保存的配置:show startup-config
  • PC直接与公网服务器通信:PC ping8.8.8.8
  • 发包:源IP:192.168.1.10 目的IP:8.8.8.8
  • 回包:源IP:8.8.8.8 目的IP:192.168.1.10
  • 如果不做任何配置;服务器不能与PC相直接通信,公网不转发内网数据,不为内网做路由(除非专线服务)因此需在GW处做NAT转换源IP.将源IP转成出接口IP(将192、168.1.10转202.1.1.2)
  • NAT非常消耗内存,数据量越大转换条且就越多占用GW内存越大,解决此问题可以设置两个网关
  • 解决内部服务IP不够用的问题,一个公网最多65535个端口,每多一个公网IP就多65535个端口可建一个连继的公网地址池,将内网NAT到地址池内

二、项目实例

1.静态NAT

(1)静态NAT实验一

  • 项目拓扑
  • 项目实现

ISP配置

进入特权模式
enable

进入全局模式
configure terminal 

更改名称为ISP
hostname ISP

进入g0/0接口
interface g0/0

将g0/0接口IP地址配置为202.1.1.1/24
ip address 202.1.1.1 255.255.255.0

退出到上一级
exit

退出到上一级
exit

使用telnet远程连接到202.1.1.2
telnet 202.1.1.2

开启NAT前:

开启NAT后:

GW配置

进入特权模式
enable

进入全局模式
configure terminal

更改名称为GW
hostname GW

进入g0/1接口
interface g0/1

将g0/1接口IP地址配置为202.1.1.2/24
ip address 202.1.1.2 255.255.255.0

退出到上一级
exit

进入g0/0接口
interface g0/0

将g0/0接口IP地址配置为192.168.1.1/24
ip address 192.168.1.1 255.255.255.0

退出到上一级
exit

开启telnet远程登陆,同一时间最多5个人同时登录
line vty 0 4

设置密码为1234
password 1234

开启认证
login

退出到上一级
exit

进入g0/1外网接口
interface g0/1

将g0/1接口标识为nat的出接口(ip nat outside(常用于连接外部的运营商接口)
ip nat outside

退出到上一级
exit

进入g0/0内网接口
interface g0/0

将g0/0接口标识为nat的入接口(ip nat inside(常用于连接内部的局域网接口)
ip nat inside

退出到上一级
exit

创建NAT映射,将内网的192.168.1.10端口23,映射到公网的202.1.1.2端口23上(因为telnet基于TCP所以使用的是TCP协议)
ip nat inside source static tcp 192.168.1.10 23 202.1.1.2 23

server配置

进入特权模式
enable

进入全局模式
configure terminal 

更改名称为server
hostname server

进入g0/1接口
interface g0/1

将g0/1接口IP地址配置为192.168.1.10/24
ip address 192.168.1.10 255.255.255.0

退出到上一级
exit

关闭路由器路由功能
no ip routing

是
yes

设置网关地址为192.168.1.1
ip default-gateway 192.168.1.1

开启telnet远程登陆,同一时间最多5个人同时登录
line vty 0 4

设置密码为1234
password 1234

开启认证
login

(2)静态NAT实验二

  • 项目拓扑
  • 项目实现

ISP配置

进入特权模式
enable

进入全局模式
configure terminal 

更改名称为ISP
hostname ISP

进入g0/0接口
interface g0/0

将g0/0接口IP地址配置为202.1.1.1/24
ip address 202.1.1.1 255.255.255.0

退出到上一级
exit

退出到上一级
exit

使用telnet远程连接到202.1.1.2
telnet 202.1.1.2

GW配置

进入特权模式
enable

进入全局模式
configure terminal

更改名称为GW
hostname GW

进入g0/1接口
interface g0/1

将g0/1接口IP地址配置为202.1.1.2/24
ip address 202.1.1.2 255.255.255.0

退出到上一级
exit

进入g0/0接口
interface g0/0

将g0/0接口IP地址配置为192.168.1.1/24
ip address 192.168.1.1 255.255.255.0

退出到上一级
exit

开启telnet远程登陆,同一时间最多5个人同时登录
line vty 0 4

设置密码为1234
password 1234

开启认证
login

退出到上一级
exit

进入g0/1外网接口
interface g0/1

将g0/1接口标识为nat的出接口(ip nat outside(常用于连接外部的运营商接口)
ip nat outside

退出到上一级
exit

进入g0/0内网接口
interface g0/0

将g0/0接口标识为nat的入接口(ip nat inside(常用于连接内部的局域网接口)
ip nat inside

退出到上一级
exit

创建NAT映射,将内网的192.168.1.10端口23,映射到公网的202.1.1.2端口8888上
ip nat inside source static tcp 192.168.1.10 23 202.1.1.2 8888

开启NAT前:

开启NAT后:

server配置

进入特权模式
enable

进入全局模式
configure terminal 

更改名称为server
hostname server

进入g0/1接口
interface g0/1

将g0/1接口IP地址配置为192.168.1.10/24
ip address 192.168.1.10 255.255.255.0

退出到上一级
exit

关闭路由器路由功能
no ip routing

是
yes

设置网关地址为192.168.1.1
ip default-gateway 192.168.1.1

开启telnet远程登陆,同一时间最多5个人同时登录
line vty 0 4

设置密码为1234
password 1234

开启认证
login

2.动态NAT

(1)动态NAT实验一

  • 项目拓扑
  • 项目实现

ISP配置

进入特权模式
enable

进入全局模式
configure terminal 

更改名称为ISP
hostname ISP

进入g0/0接口
interface g0/0

将g0/0接口IP地址配置为202.1.1.1/24
ip address 202.1.1.1 255.255.255.0

退出到上一级
exit

进入环回接口0
interface loopback 0

将环回接口0的IP设置为8.8.8.8/24
ip address 8.8.8.8 255.255.255.0

退出到上一级
exit

显示接口信息
show ip interface brief 

GW配置

进入特权模式
enable

进入全局模式
configure terminal 

更改名称为GW
hostname GW

进入g0/1接口
interface g0/1

将g0/1接口IP地址配置为202.1.1.2/24
ip address 202.1.1.2 255.255.255.0

退出到上一级
exit

进入g0/0接口
interface g0/0

将g0/0接口IP地址配置为192.168.1.1/24
ip address 192.168.1.1 255.255.255.0

退出到上一级
exit

设置默认路由               下一跳地址
ip route 0.0.0.0 0.0.0.0 202.1.1.1

创建标准ACL1,允许192.168.1.0网段的数据通过
access-list 1 permit 192.168.1.0 0.0.0.255

进入g0/1外网接口
interface g0/1

将g0/1接口标识为nat的出接口(ip nat outside(常用于连接外部的运营商接口)
ip nat outside

退出到上一级
exit

进入g0/0内网接口
interface g0/0

将g0/0接口标识为nat的入接口(ip nat inside(常用于连接内部的局域网接口)
ip nat inside

退出到上一级
exit

创建NAT映射
将ACL1匹配的条目映射到interface g0/1接口上,使用端口复用
ip nat inside source list 1 interface g0/1 overload 

退出到上一级
exit

显示NAT表信息
show ip nat translations 

显示正在运行的配置
show run

显示接口信息
show ip interface brief 

PC配置

进入特权模式
enable

进入全局模式
configure terminal

更改名称为PC
hostname PC

进入g0/1接口
interface g0/1

将g0/1接口IP地址配置为192.168.1.10/24
ip address 192.168.1.10 255.255.255.0

退出到上一级
exit

关闭里路由功能
no ip routing

是
yes

将PC网关设置为192.168.1.1
ip default-gateway 192.168.1.1

退出到上一级
exit

显示接口信息
show ip interface brief 

查看是否可与8.8.8.8通信
ping 8.8.8.8

(2)动态NAT实验二

  • 项目拓扑
  • 项目实现

ISP配置

进入特权模式
enable

进入全局模式
configure terminal 

更改名称为ISP
hostname ISP

进入g0/0接口
interface g0/0

将g0/0接口IP地址配置为202.1.1.1/24
ip address 202.1.1.1 255.255.255.0

退出到上一级
exit

进入环回接口0
interface loopback 0

将环回接口0的IP设置为8.8.8.8/24
ip address 8.8.8.8 255.255.255.0

退出到上一级
exit

显示接口信息
show ip interface brief 

GW配置

进入特权模式
enable

进入全局模式
configure terminal 

更改名称为GW
hostname GW

进入g0/1接口
interface g0/1

将g0/1接口IP地址配置为202.1.1.2/24
ip address 202.1.1.2 255.255.255.0

退出到上一级
exit

进入g0/0接口
interface g0/0

将g0/0接口IP地址配置为192.168.1.1/24
ip address 192.168.1.1 255.255.255.0

退出到上一级
exit

设置默认路由               下一跳地址
ip route 0.0.0.0 0.0.0.0 202.1.1.1

创建标准ACL1,允许192.168.1.0网段的数据通过
access-list 1 permit 192.168.1.0 0.0.0.255

进入g0/1外网接口
interface g0/1

将g0/1接口标识为nat的出接口(ip nat outside(常用于连接外部的运营商接口)
ip nat outside

退出到上一级
exit

进入g0/0内网接口
interface g0/0

将g0/0接口标识为nat的入接口(ip nat inside(常用于连接内部的局域网接口)
ip nat inside

退出到上一级
exit

创建NAT地址池,名字为NAT,地址包含202.1.1.2到202.1.1.4子网掩码255.255.255.0
ip nat pool NAT 202.1.1.2 202.1.1.4 netmask 255.255.255.0

创建NAT映射
将ACL1匹配的条目映射到NAT地址池中,使用端口复用(当拥有多个公网IP时使用)
ip nat inside source list 1 pool NAT overload 

退出到上一级
exit

显示NAT表信息
show ip nat translations 

显示正在运行的配置
show run

显示接口信息
show ip interface brief 

PC配置

进入特权模式
enable

进入全局模式
configure terminal

更改名称为PC
hostname PC

进入g0/1接口
interface g0/1

将g0/1接口IP地址配置为192.168.1.10/24
ip address 192.168.1.10 255.255.255.0

退出到上一级
exit

关闭里路由功能
no ip routing

是
yes

将PC网关设置为192.168.1.1
ip default-gateway 192.168.1.1

退出到上一级
exit

显示接口信息
show ip interface brief 

查看是否可与8.8.8.8通信
ping 8.8.8.8
相关推荐
wang09078 分钟前
常用网络工具分析(ping,tcpdump等)
网络·tcpdump
真正的醒悟36 分钟前
H3C交换机&路由器&防火墙FTP/TFTP服务器搭建。
服务器·网络·智能路由器
春生黎至10051 小时前
路由基本配置
网络·智能路由器
你好呀我是裤裤1 小时前
Linux基础开发工具的使用(apt、vim、gcc、g++、gdb、make、makefile)
linux·运维·vim
望获linux1 小时前
如何在望获实时 Linux & 京博航友善 NanoPC-T6 上部署 Docker
linux·运维·服务器·docker·eureka·开源软件
wangchen_01 小时前
linux编译器和自动化构建工具(gcc与Makeile)
linux·运维·服务器
DC_BLOG1 小时前
Linux-Ansible命令
linux·运维·服务器·ansible
人工干智能1 小时前
科普:“docker”与“docker compose”
运维·docker·容器
suenpeng2 小时前
安全运维,等保测试常见解决问题。
linux·运维·安全
神马都会亿点点的毛毛张2 小时前
【Docker教程】万字长文详解Docker命令
java·运维·后端·docker·容器