NAT网络地址转换理论+实验

NAT网络地址转换

NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的隐患,隐藏并保护网络内部的计算机。
1.宽带分享:这是 NAT 主机的最大功能。
2.安全防护:NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全了,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC

创新互联公司主要从事成都网站制作、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务王屋,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

1、NAT的工作原理

Network Address Translation ,网络地址转换

2、NAT实现方式

(1)静态转换 (Statin Translation)
(2)动态转换 ( Dynamic Translation)
(3)端口多路复用(Port Address Translation,PAT)

3、NAT的优缺点

1、NAT的优点

(1)节省公有合法的IP地址
(2)处理地址重叠
(3)增强灵活性
(4)安全性

2、NAT的缺点

(1)延迟增大
(2)配置和维护更复杂
(3)不支持某些应用,可以通过静态NAT映射来避免

NAT的术语于转换表

NAT网络地址转换理论+实验
NAT地址转换一种伪装,确保了地址的安全
如图:
PC1第一件事情发出请求,先查询路由表,然后才会根据NAT表转换成公网地址,去访问外部网。源IP,目的IP,这时候外部的源IP就变成了公网地址。
PC2第一件事情给出回应,先查询NAT转换表,再查询路由表发送数据包。
回应时两个接口如果先查询路由表,就没法去找到,一个接口是1.0一个是125.0
内部:
源IP:内部局部地址
目的IP:外部局部地址
外部:
源IP:内部全局地址
目的IP:外部全局地址

4、NAT的转换条目

(1)简单转换条目(根据IP地址)
(2)扩展转换条目(根据IP地址和 端口)

5、NAT的工作过程

NAT网络地址转换理论+实验

1:自己主机的地址10.1.1.1
2.根据NAT转换表,需要自己手动配置,TCP协议,内部用局部IP地址,内部用全局IP地址,外部用全局IP地址
3.目的IP地址
4.访问外部网
5.目的IP地址和源IP地址

6、PAT的工作过程

NAT网络地址转换理论+实验

PAT是多个私网地址转换成一个公网地址,多了端口,端口可以自己设定

7、静态NAT地址实验图

NAT网络地址转换理论+实验

sw1:关闭路由功能,设置速率和全双工
R3:给接口配IP,配置默认路由
f0/0:12.0.0.2/24
f0/1:13.0.0.1/24
R2:给接口配IP,配置默认路由回去,配置静态NAT地址转换,应用于接口
f0/0:12.0.0.1/24
f0/1:192.168.100.1/24
PC1:192.168.100.10/24
PC2:192.168.100.20/24

7.1、给交换机配置速率,全双工,关闭路由功能

sw1#conf t
sw1(config)#no ip routing  //关闭路由功能
sw1(config)#int f1/0
sw1(config-if)#speed 100  //速率100
sw1(config-if)#dup full    //全双工模式
sw1(config-if)#ex

7.2、给路由器R3接口配置d地址,配置默认路由

R3#conf t
R3(config)#int f0/0
R3(config-if)#ip add 12.0.0.2 255.255.255.0  //配置地址
R3(config-if)#no shut   //开启地址接口
R3(config-if)#int f0/1
R3(config-if)#ip add 13.0.0.1 255.255.255.0
R3(config-if)#no shut
R3(config-if)#do show ip route  //查看路由表条目
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     12.0.0.0/24 is subnetted, 1 subnets
C       12.0.0.0 is directly connected, FastEthernet0/0
     13.0.0.0/24 is subnetted, 1 subnets
C       13.0.0.0 is directly connected, FastEthernet0/1
R3(config-if)#ex     
R3(config)#ip route 0.0.0.0 0.0.0.0 12.0.0.1  //配置默认路由
R3(config)# 

7.3、给R2接口配IP,配置默认路由回去

R2#conf t
R2(config)#int f0/0
R2(config-if)#ip add 192.168.100.1 255.255.255.0  //配置地址
R2(config-if)#no shut
R2(config-if)#int f0/1
R2(config-if)#ip add 12.0.0.1 255.255.255.0   //配置地址
R2(config-if)#no shut
R2(config-if)#ex
R2(config)#ip route 0.0.0.0 0.0.0.0 12.0.0.2
R2(config)#

7.4、给每个主机配置地址

PC1> ip 192.168.100.10 192.168.100.1
Checking for duplicate address...
PC1 : 192.168.100.10 255.255.255.0 gateway 192.168.100.1

PC2> ip 192.168.100.20 192.168.100.1
Checking for duplicate address...
PC1 : 192.168.100.20 255.255.255.0 gateway 192.168.100.1

PC3> ip 13.0.0.13 13.0.0.1
Checking for duplicate address...
PC1 : 13.0.0.13 255.255.255.0 gateway 13.0.0.1

7.5、给R2配置静态NAT地址转换,应用于接口

R2#conf t
R2(config)#ip nat inside source static 192.168.100.10 12.0.0.10
//设置静态NAT地址内部网转换成外部网
R2(config)#ip nat inside source static 192.168.100.20 12.0.0.20
R2(config)#int f0/0
R2(config-if)#ip nat inside  //给F0/0接口设置内部
R2(config-if)#int f0/1
R2(config-if)#ip nat outside //给F0/1接口设置外部
R2(config-if)#end
R2#debug ip nat  //查看NAT地址转换状态
IP NAT debugging is on

8、静态NAT映射

NAT端口映射协议(英语:NAT Port Mapping Protocol,缩写NAT-PMP)是一个能自动创建网络地址转换(NAT)设置和端口映射配置而无需用户介入的网络协议。该协议能自动测定NAT网关的外部IPv4地址,并为应用程序提供与对等端交流通信的方法。NAT-PMP于2005年由苹果公司推出,为更常见的ISO标准互联网网关设备协议(被许多NAT路由器实现)的一个替代品。该协议由互联网工程任务组(IETF)在RFC 6886中发布。 NAT-PMP使用用户数据报协议(UDP),在5351端口运行。该协议没有内置的身份验证机制,因为转发一个端口通常不允许任何活动,也不能用STUN方法实现。NAT-PMP相比STUN的好处是它不需要STUN服务器,并且NAT-PMP映射有一个已知的过期时间,应用可以避免低效地发送保活数据包。 NAT-PMP是端口控制协议(PCP)的前身。

8.1实验图

在广域网上想访问私网地址必须要有映射地址

实验目的让外部网的主机能访问linux的WEB服务

NAT网络地址转换理论+实验

8.2、到linux服务器当中安装HTTPD服务并写一个网页,自测一下

[root@localhost ~]# yum install httpd -y  //安装HTTPD服务
[root@localhost ~]# vim /var/www/html/index.html  //代站点底下创建文件和内容

this is web NAT

[root@localhost ~]# systemctl start httpd //开启HTTPD服务 [root@localhost ~]# systemctl stop firewalld.service //关闭防火墙 [root@localhost ~]# setenforce 0 //开启增强功能

NAT网络地址转换理论+实验

8.3、linux服务器绑定网卡,并设置固定IP

NAT网络地址转换理论+实验

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static  //设置静态
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=849aa04e-1874-490f-8cb0-b2fde4b9a6f8
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.100   //IP地址
NETMASK=255.255.255.0   //子网掩码
GATEWAY=192.168.100.1   //网关
[root@localhost ~]# systemctl restart network  //重启网络服务
[root@localhost ~]# ifconfig
ens33: flags=4163  mtu 1500
        inet 192.168.100.100  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::e3c7:14af:6e4d:7216  prefixlen 64  scopeid 0x20
        ether 00:0c:29:c9:dd:05  txqueuelen 1000  (Ethernet)
        RX packets 4309  bytes 4579244 (4.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1123  bytes 96283 (94.0 KiB)         

8.4、到win10当中绑定网卡

NAT网络地址转换理论+实验

8.5、到GNS3配置R1路由器,给接口配置地址

R1#conf t
R1(config)#int f0/0
R1(config-if)#ip add 192.168.100.1 255.255.255.0 
R1(config-if)#no shut
R1(config-if)#int f0/1
R1(config-if)#ip add 12.0.0.1 255.255.255.0
R1(config-if)#no shut

8.6、回到WIN10设置地址

NAT网络地址转换理论+实验
NAT网络地址转换理论+实验

8.7、回到GNS3开始配置端口映射

映射什么意思?就是外部网想要访问你的私网地址必须要映射,不然不安全。

R1#conf t
R1(config)#ip nat inside source static tcp 192.168.100.100 80 12.0.0.100 8080 extendable         
 //内部端口启用NAT,tcp协议,IP地址加端口,映射外部网地址加端口,后面一定要加个扩展extendable
 on Interface NVI0, changed state to up
R1(config)#int f0/0
R1(config-if)#ip nat inside  //设置为内部
R1(config-if)#int f0/1
R1(config-if)#ip nat outside  //设置为外部
R1(config-if)#end
R1#debug ip nat   //测试启动端口映射
IP NAT debugging is on

8.8、我们回到外部网中的一台主机去访问一下。 http://12.0.0.100:8080/ 一定要加8080端口,这是映射的

NAT网络地址转换理论+实验

9、动态NAT地址转换

动态NAT是指将内部网络的私有IP地址转换为公用IP地址时,IP地址对是不确定的,是随机的,所有被授权访问Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。

动态NAT实验图

实验目的让内部的私有网转换成多个公网之一

NAT网络地址转换理论+实验

9.1、二层交换机关闭路由功能,设置速率和全双工模式

sw#conf t
sw(config)#no ip routing
sw(config)#int f1/0
sw(config-if)#speed 100
sw(config-if)#dup full
sw(config-if)#ex

9.2、给R1路由器接口设置地址,动态NAT

R1#conf t
R1(config)#int f0/0
R1(config-if)#ip add 192.168.100.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#int f0/1
R1(config-if)#ip add 12.0.0.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#ex
R1(config)#access-list 1 permit 192.168.100.0 0.0.0.255
//定义内部允许的网段,后面要加反码
R1(config)#ip nat pool test 12.0.0.10 12.0.0.100 netmask 255.255.255.0
//定义外部转换的地址段落,地址范围,起始地址和结束地址和子网掩码
R1(config)#ip nat inside source list 1 pool test //引用内部的网段,转换成外部网的地址池
R1(config)#int f0/0
R1(config-if)#ip nat inside  //定义内部网
R1(config-if)#int f0/1
R1(config-if)#ip nat outside //定义外部网
R1(config-if)#end         
R1#debug ip nat  //测试启用NAT
IP NAT debugging is on

9.3、给每台主机配置IP地址

PC1> ip 192.168.100.10 192.168.100.1
Checking for duplicate address...
PC1 : 192.168.100.10 255.255.255.0 gateway 192.168.100.1
PC2> ip 192.168.100.20 192.168.100.1
Checking for duplicate address...
PC1 : 192.168.100.20 255.255.255.0 gateway 192.168.100.1
PC3> ip 12.0.0.12 12.0.0.1
Checking for duplicate address...
PC1 : 12.0.0.12 255.255.255.0 gateway 12.0.0.1

9.4、PC1和PC2主机去测试内部网转换成外部网是不是有多个公网地址

PC1> ping 12.0.0.12
84 bytes from 12.0.0.12 icmp_seq=1 ttl=63 time=20.944 ms
84 bytes from 12.0.0.12 icmp_seq=2 ttl=63 time=18.950 ms
84 bytes from 12.0.0.12 icmp_seq=3 ttl=63 time=15.957 ms
84 bytes from 12.0.0.12 icmp_seq=4 ttl=63 time=22.452 ms
84 bytes from 12.0.0.12 icmp_seq=5 ttl=63 time=19.952 ms
*Mar  1 00:19:47.327: NAT: expiring 12.0.0.11 (192.168.100.20) icmp 34108 (34108)
R1#
*Mar  1 00:19:47.463: NAT*: s=192.168.100.20->12.0.0.11, d=12.0.0.12 [15552]
*Mar  1 00:19:47.471: NAT*: s=12.0.0.12, d=12.0.0.11->192.168.100.20 [15552]
*Mar  1 00:19:48.351: NAT: expiring 12.0.0.11 (192.168.100.20) icmp 34364 (34364)
R1#
*Mar  1 00:19:48.487: NAT*: s=192.168.100.20->12.0.0.11, d=12.0.0.12 [15553]
*Mar  1 00:19:48.499: NAT*: s=12.0.0.12, d=12.0.0.11->192.168.100.20 [15553]
*Mar  1 00:19:49.375: NAT: expiring 12.0.0.11 (192.168.100.20) icmp 34620 (34620)
R1#
*Mar  1 00:19:49.511: NAT*: s=192.168.100.20->12.0.0.11, d=12.0.0.12 [15554]
*Mar  1 00:19:49.519: NAT*: s=12.0.0.12, d=12.0.0.11->192.168.100.20 [15554]
*Mar  1 00:19:50.399: NAT: expiring 12.0.0.11 (192.168.100.20) icmp 34876 (34876)
R1#
*Mar  1 00:19:50.531: NAT*: s=192.168.100.20->12.0.0.11, d=12.0.0.12 [15555]
*Mar  1 00:19:50.543: NAT*: s=12.0.0.12, d=12.0.0.11->192.168.100.20 [15555]
*Mar  1 00:19:51.423: NAT: expiring 12.0.0.11 (192.168.100.20) icmp 35132 (35132)
R1#

10、PAT转换

实验图

实验目的:让所有的私网地址转换成同一个公网地址

NAT网络地址转换理论+实验

Port Address Translation,端口多路复用(端口地址转化),通过改变外出数据包源IP和源端口,并进行端口转换,内网所有主机均可共享一个公用IP访问外网,节约IP。

10.1、二层交换机关闭路由功能,配置速率和全双工模式

sw#conf t
sw(config)#no ip routing
sw(config)#int f1/0
sw(config-if)#speed 100
sw(config-if)#dup full

10.2、R2给接口配置地址,配置PAT地址转换

R1#conf t
R1(config)#int f0/0
R1(config-if)#ip add 192.168.100.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#int f0/1
R1(config-if)#ip add 12.0.0.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#ex
R1(config)#access-list 1 permit 192.168.100.0 0.0.0.255    //定义内部允许的网段,加反码
R1(config)#ip nat inside source list 1 interface fastEthernet 0/1 overload
//直接引用外部接口 ,overlload所有外部网
R1(config)#int f0/0
R1(config-if)#ip nat in  //定义内部网
R1(config-if)#int f0/1
R1(config-if)#ip nat out  //定义外部网
R1(config-if)#end
R1#debug ip nat
IP NAT debugging is on  //测试启动NAT

10.3、给每台主机配置IP地址

PC1> ip 192.168.100.10 192.168.100.1
Checking for duplicate address...
PC1 : 192.168.100.10 255.255.255.0 gateway 192.168.100.1
PC2> ip 192.168.100.20 192.168.100.1
Checking for duplicate address...
PC1 : 192.168.100.20 255.255.255.0 gateway 192.168.100.1
PC3> ip 12.0.0.12 12.0.0.1
Checking for duplicate address...
PC1 : 12.0.0.12 255.255.255.0 gateway 12.0.0.1

10.4测试PC1和PC2的私网地址访问的是不是同一个公网地址

PC1> ping 12.0.0.12 -t
12.0.0.12 icmp_seq=1 timeout
84 bytes from 12.0.0.12 icmp_seq=2 ttl=63 time=20.943 ms
84 bytes from 12.0.0.12 icmp_seq=3 ttl=63 time=17.919 ms
84 bytes from 12.0.0.12 icmp_seq=4 ttl=63 time=16.956 ms
R1#
*Mar  1 00:19:04.779: NAT: s=192.168.100.10->12.0.0.1, d=12.0.0.12 [18124]
R1#
*Mar  1 00:19:06.783: NAT*: s=192.168.100.10->12.0.0.1, d=12.0.0.12 [18125]
*Mar  1 00:19:06.791: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.10 [18125]
R1#
*Mar  1 00:19:07.807: NAT*: s=192.168.100.10->12.0.0.1, d=12.0.0.12 [18126]
*Mar  1 00:19:07.811: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.10 [18126]
R1#
*Mar  1 00:19:08.823: NAT*: s=192.168.100.10->12.0.0.1, d=12.0.0.12 [18127]
*Mar  1 00:19:08.831: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.10 [18127]
R1#
*Mar  1 00:19:09.843: NAT*: s=192.168.100.10->12.0.0.1, d=12.0.0.12 [18128]
*Mar  1 00:19:09.847: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.10 [18128]
R1#
PC2> ping 12.0.0.12 -t
84 bytes from 12.0.0.12 icmp_seq=1 ttl=63 time=29.921 ms
84 bytes from 12.0.0.12 icmp_seq=2 ttl=63 time=16.981 ms
84 bytes from 12.0.0.12 icmp_seq=3 ttl=63 time=15.958 ms
84 bytes from 12.0.0.12 icmp_seq=4 ttl=63 time=23.936 ms
R1#
*Mar  1 00:20:28.715: NAT*: s=192.168.100.20->12.0.0.1, d=12.0.0.12 [18208]
*Mar  1 00:20:28.719: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.20 [18208]
R1#
*Mar  1 00:20:29.731: NAT*: s=192.168.100.20->12.0.0.1, d=12.0.0.12 [18209]
*Mar  1 00:20:29.739: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.20 [18209]
R1#
*Mar  1 00:20:30.751: NAT*: s=192.168.100.20->12.0.0.1, d=12.0.0.12 [18210]
*Mar  1 00:20:30.759: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.20 [18210]
R1#
*Mar  1 00:20:31.775: NAT*: s=192.168.100.20->12.0.0.1, d=12.0.0.12 [18211]
*Mar  1 00:20:31.779: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.20 [18211]

本文名称:NAT网络地址转换理论+实验
文章起源:http://ybzwz.com/article/ggoshh.html