使用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
相关推荐
少妇的美梦16 小时前
logstash教程
运维
chen94516 小时前
k8s集群部署vector日志采集器
运维
chen94517 小时前
aws ec2部署harbor,使用s3存储
运维
白帽黑客沐瑶21 小时前
【网络安全就业】信息安全专业的就业前景(非常详细)零基础入门到精通,收藏这篇就够了
网络·安全·web安全·计算机·程序员·编程·网络安全就业
東雪蓮☆1 天前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs
qq_264220891 天前
LVS负载均衡群集和LVS+Keepalived群集
运维·负载均衡·lvs
树码小子1 天前
Java网络编程:(socket API编程:TCP协议的 socket API -- 回显程序的服务器端程序的编写)
java·网络·tcp/ip
乌萨奇也要立志学C++1 天前
【Linux】进程概念(二):进程查看与 fork 初探
linux·运维·服务器
雨落Liy1 天前
Nginx 从入门到进阶:反向代理、负载均衡与高性能实战指南
运维·nginx·负载均衡
Yyyy4821 天前
Nginx负载均衡集群实验步骤
运维·nginx·负载均衡