10 NAT网络地址转换

广域网技术

上面聊的内容都是内网的一些配置,但内网终将要访问外网的,我们需要怎么处理呢?一般使用HDLC(高级数据链路控制协议)或者PPP(点对点协议)。

使用PPP安全接入Internet

PPP(Point-to-Point Protocol 的缩写)点到点协议,提供在点到点链路上传输、封装网络层数据包的数据链路层协议。

PPP 协议支持同步、异步线路,能够提供验证,可以验证对端设备的合法性,在一定程度上保证链路的安全;支持网络层地址协调,支持 IP 地址的远程分配,能满足拨号线路的需求,无重传机制,网络开销小,并且易于扩展。

会话建立流程为:

其中PAP和CHAP是两种认证协议

1.PAP:密码认证协议

2.CHAP:竞争握手认证协议

PPP+PAP的配置方案如下:

  1. PAP设置用户名、密码和服务类型

    [RT1]local-user name
    [RT1-user-name]password { cipher | simple } 密码
    [RT1-user-name]service-type ppp

  2. 封装PPP协议

    [RT1-S1/0]link-protocol PPP

  3. 配置认证方式

    [RT1-s1/0]ppp authentication-mode { pap | chap }

  4. 被认证端详主认证端发送认证信息

    [RT2-S1/0]ppp pap local-user name password { cipher | simple } 密码

实战

我们先配置一下PC的IP和路由器的接口IP,现在PC1是ping不同PC2的。

复制代码
[RT1]int g0/0
[RT1-GigabitEthernet0/0]ip add 10.110.10.1 24
[RT1-GigabitEthernet0/0]quit
[RT1]int s1/0
[RT1-Serial1/0]ip add 211.16.12.1 24
[RT1-Serial1/0]quit

[RT2]int g0/0
[RT2-GigabitEthernet0/0]ip addr 211.16.3.1 24
[RT2-GigabitEthernet0/0]quit
[RT2]int s1/0
[RT2-Serial1/0]ip addr 211.16.12.2 24
[RT2-Serial1/0]quit

路由器配置OSPF

复制代码
[RT1]router id 1.1.1.1
[RT1]ospf 1
[RT1-ospf-1]area 0
[RT1-ospf-1-area-0.0.0.0]network 10.110.10.0 0.0.0.255
[RT1-ospf-1-area-0.0.0.0]network 211.16.12.0 0.0.0.255
[RT1-ospf-1-area-0.0.0.0]quit

[RT2]router id 2.2.2.2
[RT2]ospf 1
[RT2-ospf-1]area 0
[RT2-ospf-1-area-0.0.0.0]network 211.16.12.0 0.0.0.255
[RT2-ospf-1-area-0.0.0.0]%Dec 23 21:18:42:480 2023 RT2 OSPF/5/OSPF_NBR_CHG: OSPF 1 Neighbor 211.16.12.1(Serial1/0) changed from LOADING to FULL.

[RT2-ospf-1-area-0.0.0.0]network 211.16.3.0 0.0.0.255
[RT2-ospf-1-area-0.0.0.0]quit

现在PC1能够Ping通PC2,主要是因为路由表里有数据了。

复制代码
[RT1]dis ip routing-table

Destinations : 15       Routes : 15

Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0
10.110.10.0/24     Direct  0   0           10.110.10.1     GE0/0
10.110.10.1/32     Direct  0   0           127.0.0.1       InLoop0
10.110.10.255/32   Direct  0   0           10.110.10.1     GE0/0
127.0.0.0/8        Direct  0   0           127.0.0.1       InLoop0
127.0.0.1/32       Direct  0   0           127.0.0.1       InLoop0
127.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0
211.16.3.0/24      O_INTRA 10  1563        211.16.12.2     Ser1/0
211.16.12.0/24     Direct  0   0           211.16.12.1     Ser1/0
211.16.12.1/32     Direct  0   0           127.0.0.1       InLoop0
211.16.12.2/32     Direct  0   0           211.16.12.2     Ser1/0
211.16.12.255/32   Direct  0   0           211.16.12.1     Ser1/0
224.0.0.0/4        Direct  0   0           0.0.0.0         NULL0
224.0.0.0/24       Direct  0   0           0.0.0.0         NULL0
255.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

配置PAP

复制代码
[RT2]local-user RT1 class network
New local user added.
[RT2-luser-network-RT1]password simple 1234Abcd1234
[RT2-luser-network-RT1]service-type ppp

配置PPP协议

复制代码
[RT2-Serial1/0]link-protocol ppp
[RT2-Serial1/0]ppp authentication-mode pap
[RT2-Serial1/0]quit

被验证方配置

复制代码
[RT1-Serial1/0]link-protocol ppp
[RT1-Serial1/0]ppp pap local-user RT1 password simple 1234Abcd1234

NAT

概述

NAT是一种将私有地址转换成公有地址的技术,它实现了私有网络中主机可以通过共享少量公有地址访问Internet。

从内部网络到外部网络的实现流程为:

请求从外部网络返回到内部网络的实现流程为:

当然,上面的实现只是其中一种,但核心过程都差不多。NAT的实现方式有

  • Basic NAT:一对一转换,一个内部IP对应一个外部IP
  • NAPT(网络地址端口转换):一对多转换,一个外部IP可对应多个内部IP
  • NAT Server(内部服务器):内部提供服务供外网访问

Basic NAT

Basic NAT实现一对一的转换,同时访问外网的主机数受地址池中共有地址数限制。

假设只允许市场部访问外网。

配置方案一般分为如下几步:

1.配置ACL,哪些私有地址可以访问外网

复制代码
[RT1]acl number 2000
[RT1-acl-basic-2000]rule permit source 10.110.10.0 0.0.0.255
[RT1-acl-basic-2000]rule deny source any

2.配置可使用的公网地址

复制代码
nat address-group pool-index start-addr end-addr

[RT1]nat address-group pool1 211.35.77.1 211.35.77.5

3.在出口将ACL与地址池关联

复制代码
nat outbound acl-number address-group pool-index no-pat

[RT1]interface S0/1/0
[RT1-Serial0/1/0]nat outbound 2000 address-group pool1 no-pat

4.查看效果

复制代码
display nat session

NAPT

Basic NAT因为是一对一转换,所以同一时刻访问外网的主机数有限。

而NAPT借助端口复用技术,通过对数据包的 IP 地址、协议类型和传输层端口号同时进行转换,极大地提高了公有 IP 地址的利用效率。

下图比较清晰的展示了NAPT的实现原理,10.0.0.1的请求经过转换后的信息。

在配置上和Basic NAT没有太大区别,出口配置的时候,不填写no-pat

复制代码
nat outbound acl-number address-group pool-index 

[RT1]interface S0/1/0
[RT1-Serial0/1/0]nat outbound 2000 address-group pool1

Easy IP - NAPT特例

在实际应用中,常用的拨号接入的上网方式,公网 IP 地址是运营商动态分配的,无法提前获知,又该如何使用 NAPT 进行转换?解决这个问题,要引入 Easy IP 特性。Easy IP 直接使用与公网连接的接口 IP 地址作为转换后的地址。本质上省掉了"配置可使用的公网地址"这步。

1.配置允许NAT转换的内网地址段

复制代码
[RT1]acl number 2000
[RT1-acl-basic-2000]rule permit source 10.110.10.0 0.0.0.255

2.在出接口S0/1/0上做Easy IP

复制代码
[RT1]interface S0/1/0
[RT1-Serial0/1/0]ip address 211.35.77.1 255.255.255.0
[RT1-Serial0/1/0]nat outbound 2000

3.查看

复制代码
[RT1]display nat bound

NAT Server

NAT Server是解决外网主机首先发起链接,如何进行地址转换的问题。它能将私有地址和端口静态的映射为公网地址和端口,供公网用户访问服务器。

配置过程

1.接口视图下配置内部服务器

复制代码
interface interface-type interface-number
nat server protocol pro-type global golbal-address [global-port] inside local-address [local-port]

//举例,202.38.1.1为对外提供服务的IP地址
nat server protocol tcp global 202.38.1.1 80 inside 10.110.10.1 www

2.查看配置

复制代码
display nat server

实战

这次主要配置NAPT,我们在刚配置的架构图上做修改。

复制代码
[RT2]undo ospf
[RT1]undo ospf
[RT1]ip route-static 0.0.0.0 0.0.0.0 s1/0

[RT1]acl number 2000
[RT1-acl-ipv4-basic-2000]rule permit source 10.110.10.0 0.0.0.255
[RT1-acl-ipv4-basic-2000]quit


[RT1]nat address-group 1
[RT1-address-group-1]address 211.16.12.10 211.16.12.20
[RT1-address-group-1]quit

[RT1]int s1/0
[RT1-Serial1/0]nat outbou
[RT1-Serial1/0]nat outbound 2000 address-group 1
[RT1-Serial1/0]quit

查看效果

复制代码
[RT1-Serial1/0]dis nat session brief
Slot 0:
Protocol   Source IP/port         Destination IP/port    Global IP/port
ICMP       10.110.10.2/207        211.16.3.2/2048        211.16.12.11/0

Total sessions found: 1

总结

总算能上网了,但是吧,感觉哪里不太对,还是得真的申请一个固定IP,然后用真机测试一下。后面会把防火墙的配置再学习一下,然后以小公司的网络配置设计一个架构图,用真机进行配置。另外也会把交换机、路由器常用的命令梳理好,方便自己也方便大家查找。

最后

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

我的个人博客为:https://shidawuhen.github.io/

往期文章回顾:

  1. 设计模式
  2. 招聘
  3. 思考
  4. 存储
  5. 算法系列
  6. 读书笔记
  7. 小工具
  8. 架构
  9. 网络
  10. Go语言
相关推荐
星恒讯工业路由器几秒前
房车旅居不“断网”:移动生活如何实现全程在线?
网络·物联网·生活·工业路由器·车载工业路由器·房车通信·双卡备份
非凡ghost1 小时前
AI修图不“造假“,摄影师的出片效率加速器
服务器·前端·人工智能·电脑
和裕1 小时前
光伏储能定制加强型瓦楞纸箱:降低组件运输隐裂率与售后损耗的核心价值
大数据·运维·网络·人工智能·算法
Ruiery1 小时前
Linux 6.6内核 PCIe 深度解析(十):PCIe Port Driver(portdrv)— 一个物理 Port,拆出五个逻辑服务
linux·运维·服务器
乐维_lwops2 小时前
网管系统:流量分析如何用“五元组”+“TOPN”透视网络异常?
网络·流量分析·网管系统
Multipath7122 小时前
乾元通基于原生UDP时隙感知的多链路聚合方案
网络·网络协议·5g·安全·udp·智能路由器·实时音视频
天天喝旺仔2 小时前
Python asyncio 异步编程实战:用协程与事件循环构建高性能网络服务
服务器·网络·python·性能优化·fastapi
明航咨询-陈老师2 小时前
ITSS 运行维护服务能力成熟度:2026 新版标准落地后的量化证据链与运维项目投标资质门槛
网络·itss
PHP实战开发录2 小时前
PHP权限系统设计为什么越改越复杂
系统架构·php·开发
运维行者_2 小时前
ISP 企业级带宽计费怎么做?网络流量计费的 6 大核心能力
运维·服务器·网络·数据库·支持向量机·接口隔离原则