我们是如何上网的?——NAT

为了更好地理解NAT技术,首先普及一些前提的知识:

IPv4地址私有和公有:

私有地址:标识本地唯一,即你主机所在的内网唯一性,且不可以在因
特网中参与通信。也就是说你主机的IP地址可能会和别人的内网中主机
地址一样。无需付费就可以在内网中使用。

私有地址有以下这些:
A:10.0.0.0/8
B: 172.16.0.0/16-172.31.0.0/16
C: 192.168.0.0/24-192.168.255.0/24
不妨查看一下自己主机的IP是不是属于以上内容呢:
方法Win+R打开运行 ,输入cmd, 在打开的界面输入ifconfig

公有地址: 标识全球唯一性。在因特网中公有地址只有唯一的一个;由
Inter NIC(Internet Network Information Center 因特网信息中心)负责。
这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访
问因特网。

DNS的作用:一般访问网站是否能成功,要看是否能成功解析到此域名
所对应的IP地址,此时要用到DNS服务器。做域名和IP地址间解析的服
务器叫DNS服务器。什么情况下需要配DNS?通过域名有访问网站需求
时需要用配DNS。
DNS 也不是必配参数。什么时候配DNS?通过域名来访问网站的时候,
也就是说有域名解析需求的时候。比如访问百度可以直接用你本地对应
的百度IP进行访问,但是IP地址不便于记忆,所以我们经常用百度网址
进行访问。(每个主机所处的网络位置不同所以访问百度时候百度IP也
不同,这是因为百度的服务器不可能只有那么一台,为了更好地服务百
度在各地都有服务器所以你访问百度的IP也就不同了。)你可以直接用
命令ping www.baidu.com查看你本地对应的百度IP。

例如查看我主机到百度的IP方法:
在这里插入图片描述

还有最后记住一点:
当内网访问外网使用缺省+NAT:

缺省路由可以让内网的路由出去到外网,但是单单出去是不可以的,通信时
双向的所以要让路由回到内网就要用NAT回来。

接下来是NAT的详细内容:

NAT中文名称:网络地址转换

原理:数据包在内网与外网间互相通信时,对数据包IP地址进行转换
从而达到与外网通信的目的。(内网表示的是你主机所在的网络环境
,外网表示互联网)

注意:由内网访问外网修改源IP地址;由外网访问内网修改目的IP地址。

分类:NAT分为一对一(静态),一对多(动态又叫PAT),多对多(可以静
态可以动态)。

具体用配置实现NAT技术:
模拟实验拓扑环境如下图:
在这里插入图片描述

思路:先创建VLAN,并按照实验要求把接口划入VLAN,然后交换机和路由器之间
做trunk;然后做路由,配置接口ip地址,最后用路由协议将R1和R0建立通信;PC2
和PC3由DHCP技术获取IP地址,当然路由器R1要做子接口技术。最好在路由器连接
交换机的接口做被动接口,来优化路由。

注意:得到网络拓扑之后第一时间不是直接配置,而是要实现想到该如何部署,如何策划不可以一头扎进配置中。而忘了理论知识去死学网络。

配置内容:
路由器SW1
1.创建VLAN

Switch(config)#vlan 2

Switch(config-vlan)#vlan 3

2.接口划入VLAN

Switch(config)#inter f0/23
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 2

Switch(config-if)#inter f0/24
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 3

3.与路由器建立trunk干道

Switch(config-if)#inter f0/1
Switch(config-if)#switchport mode trunk

路由部分:
按照实验拓扑为路由器接口分配地址:
路由器配置ip就不在叙述,我们现在为PC分配ip地址
PC0和PC1直接用静态的方式分配地址分别为192.168.1.2/24、
192.168.1.3/24各自网关指向192.168.1.1/24

重点是PC2和PC3的ip地址:
1.在R1做子接口并分配地址:

Router(config)#inter f0/1
Router(config-if)#no shutdown
Router(config-if)#inter f0/1.1
Router(config-subif)#encapsulation dot1Q 2                   //修改接口封装模式,并表示为VLAN2的地址,dot1Q后边跟VLAN号
Router(config-subif)#ip add 192.168.2.1 255.255.255.128      //分配地址

Router(config-subif)#inter f0/1.2
Router(config-subif)#encapsulation dot1Q 3
Router(config-subif)#ip add 192.168.2.129 255.255.255.128

2.在R1做DHCP为PC2和PC3分配地址

ip dhcp pool vlan2                    //全剧模式下命令,vlan2为地址池名称
network 192.168.2.0 255.255.255.128   //分配ip地址池塘
default-router 192.168.2.1            //指定默认网关
dns-server 8.8.8.8                    //指定dns地址

ip dhcp pool vlan3
network 192.168.2.128 255.255.255.128
default-router 192.168.2.129
dns-server 8.8.8.8

3.让内网之间可以通信
在R0和R1之间启用动态路由协议eigrp;
然后为了减少路由条目数量在内网边界路由器接口R1的f0/0汇总

Router(config-if)#inter f0/0
Router(config-if)#ip summary-address eigrp 100 192.168.2.0 255.255.255.0

4.内网路由器与交换机接口处做被动接口

Router(config-if)#router eigrp 100
Router(config-router)#passive-interface f0/1.1     //子接口一定要跟详细的接口号
Router(config-router)#passive-interface f0/1.2

5.在内网与外网边界做缺省为内网访问外网的第一条件

Router(config-router)#inter f0/0                  //为内网下放缺省
Router(config-if)#ip summary-address eigrp 100 0.0.0.0 0.0.0.0
Router(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2  //指向外网

最后就是NAT路由了,下面介绍详细的NAT配置;
1.NAT配置必须在内网网边界路由器上定义让路由器知道内部接口和外部接口(必须配置)

Router(config)#inter f0/0
Router(config-if)#ip nat inside

Router(config-if)#inter f0/1.1
Router(config-subif)#ip nat inside

Router(config-subif)#inter f0/1.2
Router(config-subif)#ip nat inside

Router(config-subif)#inter f1/0
Router(config-if)#ip nat outside

一对一(静态NAT):固定的将一个ip地址转换为另外一个ip地址
例如让PC0可以访问PC4

Router(config)#ip nat inside source static 192.168.1.2 12.1.1.1   //内网某ip(内网本地)转为内网全局ip

查看结果:
在这里插入图片描述
不妨试试其他的PC访问PC4

一对多: 将多个ip地址转换为一个ip地址(端口地址转换,用端口号标识区分源ip地址)
例如让内网所有主机可以访问因特网

Router(config)#access-list 1 permit 192.168.1.0 0.0.0.255    //用ACL抓取感兴趣的流量
Router(config)#access-list 1 permit 192.168.2.0 0.0.0.255
Router(config)#ip nat inside source list 1 interface f1/0 overload  //调用ACL执行NAT

当一对多内网主机数量过于庞大超过2^16=65535的时候,就会造成网络的拥塞,卡顿。所以产生了多对多的NAT。

多对多:将多个内部本地ip转换为多个内部全局ip地址

多对多又分为静态和动态

当然做多对多NAT的时候首先得申请多个连续的公有ip地址
配置如下:
1.抓取感兴趣流量

Router(config)#access-list 2 permit 192.168.0.0 0.0.255.255    //抓取内部本地地址
Router(config)#ip nat pool tomato 12.1.1.3 12.1.1.5 netmask 255.255.255.0  //定义池塘内内部全局地址起始到末段地址

2.静态:最先到达边界路由器的几个私有地址,将和池塘内的公有地址形成一对一的静态关系;池塘内有几个公有ip内网就只能有几个通往外网。
调用:

Router(config)#ip nat inside source list 2 pool tomato   //没有overload

3.动态:所有的私有地址与池塘内的所有公有地址实现端口映射的关系,动态可以达到所有内网都可以访问外部地址的目的
调用:

Router(config)#ip nat inside source list 2 pool tomato overload  //添加了overload

现实环境中一对多和多对多的用处比较多,但是也不要忽略一对一的实用性,接下来讲解一对一在工程中的使用情况:(前提是内网用一对多NAT可以与外网通信)

比如在NAT(一)局域网(内网)之中(模拟为一个公司),我们公司要搭建一个网站来完成一些工作,当然我们内网是完全可以访问这个服务器的。我们还想让外界也可以访问我们公司的网站。但是我们购买的内部全局ip只有一个,很明显不够用,那么现在我们就要去购买另外一个公有地址,这个地址当做浮动IP来用。浮动IP并不会被配置在路由器接口上。我们可以把这个浮动IP看做公司的服务器与外界通信的一个跳板。

例如内网服务器IP地址为192.168.1.10/24,我们购买的公有地址为12.1.1.4/24
配置如下:

Router(config)#ip nat inside source static 192.168.1.10 12.1.1.4

现在公司网站就可以被所有人访问了。当然访问的是你购买的浮动IP。
在这里插入图片描述
我将服务器界面修改为了Welcome to Tomatoblog。以上说明我们服务器成功被访问。
有人好奇为什么我用IP访问不用网址,用网址就用到了DNS服务器的功能。(下面会讲解)

我们初步得到一对一的用处:
用于外网直接访问内网某台设备;

上面的那种做法要重新购买一个公有IP地址,如果公司规模很小的话就没必要浪费资源;
那怎么实现服务器被别人访问呢?

接下来引入一对一另外一个重要的 知识点—端口映射:

Router(config)#ip nat inside source static tcp 192.168.1.10 80 12.1.1.1 80

以上命令是外网访问12.1.1.1端口为80时,地址被固定转换为192.168.1.10且端口为80
这就是端口映射。我们看一下没有浮动IP之后用端口映射的结果:
在这里插入图片描述

这个使用方法也是可以被使用在各种服务端FTP,HTTPS,SMTP等等。

当然我们如果要继续增加一个网站的时候我们可以用12.1.1.1/24的另外的端口;你使用http服务你做NAT的时候服务器内网ip必须使用相对应的端口地址。比如你错误的配置为了23号,本来23号端口被用来做Telnet登录操的,但是你如果占用之后服务器就会无法别访问。当然12.1.1.1的23端口是可以使用的。

Router(config)#ip nat inside source static tcp 192.168.1.20 23 12.1.1.1 23     //错误的配置,错误使用了内网本地23号端口;

我们访问以下看结果:
在这里插入图片描述
可以观察到无法访问服务器;就是因为我们使用错了http的端口。

端口号可以百度看看目前tcp端口号分布和udp端口的分布。

当我们用端口80时:

Router(config)#ip nat inside source static tcp 192.168.1.20 80 12.1.1.1 23

就可以成功的访问。

现在我们为了实现用网址访问公司内部的服务器,我们 购买一台DNS服务器;
现在拓扑图如下:
在这里插入图片描述

DNS服务器购买之后可以选购自己的域名了,这个域名可以解析你得网站IP地址;
从而达到所有人访问网址访问你服务器的功能。比如我们右边DNS服务器的域名
为:www.tomatoblog.com; 然后添加解析地址为12.1.1.1/24并将PC4的DNS服务
指向DNS服务器的IP地址。当然我们购买DNS服务器之后,服务商会将我们的DNS
服务器发放到因特网中。然后我们现在访问网址www.tomatoblog.com
在这里插入图片描述
这就是DNS服务器的作用,我们现实中用到的网址访问网页就是用这种方法达到的。

猜你喜欢

转载自blog.csdn.net/tomatolee221/article/details/83028252